├── .gitignore ├── .gitmodules ├── LICENSE ├── MK1_CPU ├── 8bit-computer.csv ├── 8bit-computer │ ├── 8bit-computer-cache.lib │ ├── 8bit-computer-rescue.dcm │ ├── 8bit-computer-rescue.lib │ ├── 8bit-computer.kicad_pcb │ ├── 8bit-computer.net │ ├── 8bit-computer.pro │ ├── 8bit-computer.sch │ ├── Housings_LCC.pretty │ │ ├── .gitattributes │ │ ├── .travis.yml │ │ ├── PLCC-20.kicad_mod │ │ ├── PLCC-20_SMD-Socket.kicad_mod │ │ ├── PLCC-20_THT-Socket.kicad_mod │ │ ├── PLCC-28.kicad_mod │ │ ├── PLCC-28_SMD-Socket.kicad_mod │ │ ├── PLCC-28_THT-Socket.kicad_mod │ │ ├── PLCC-32.kicad_mod │ │ ├── PLCC-32_SMD-Socket.kicad_mod │ │ ├── PLCC-32_THT-Socket.kicad_mod │ │ ├── PLCC-44.kicad_mod │ │ ├── PLCC-44_SMD-Socket.kicad_mod │ │ ├── PLCC-44_THT-Socket.kicad_mod │ │ ├── PLCC-52.kicad_mod │ │ ├── PLCC-52_SMD-Socket.kicad_mod │ │ ├── PLCC-52_THT-Socket.kicad_mod │ │ ├── PLCC-68.kicad_mod │ │ ├── PLCC-68_SMD-Socket.kicad_mod │ │ ├── PLCC-68_THT-Socket.kicad_mod │ │ ├── PLCC-84.kicad_mod │ │ ├── PLCC-84_SMD-Socket.kicad_mod │ │ ├── PLCC-84_THT-Socket.kicad_mod │ │ └── README.md │ ├── PC-interface.sch │ ├── a-register.sch │ ├── alu.sch │ ├── b-register.sch │ ├── clock.sch │ ├── control.sch │ ├── ext_interface.sch │ ├── fp-info-cache │ ├── fp-lib-table │ ├── inst-register.sch │ ├── mar.sch │ ├── output.sch │ ├── parrot.kicad_mod │ ├── program-counter.sch │ ├── ram.sch │ ├── stack-register.sch │ └── sym-lib-table ├── code │ ├── microcode.bin │ ├── microcode.py │ ├── microcode.txt │ ├── mk1_computer_uplodader │ │ └── mk1_computer_uplodader.ino │ ├── output_display.py │ └── uploader.py ├── images │ ├── 8bit-computer_v1.jpg │ └── 8bit-computer_v2.jpg ├── programs │ ├── assembled │ │ ├── bubble_sort.bin │ │ ├── counter.bin │ │ ├── display_counter.bin │ │ ├── display_hello_world.bin │ │ ├── division.bin │ │ ├── factorial.bin │ │ ├── fibonacci.bin │ │ ├── fibonacci_recursive.bin │ │ ├── merge_sort.bin │ │ ├── multiplication.bin │ │ ├── multiplication_tables.bin │ │ ├── primes.bin │ │ ├── quick_sort.bin │ │ ├── reminder.bin │ │ └── test_suite.bin │ ├── bubble_sort.asm │ ├── counter.asm │ ├── display_counter.asm │ ├── display_hello_world.asm │ ├── division.asm │ ├── factorial.asm │ ├── fibonacci.asm │ ├── fibonacci_recursive.asm │ ├── lib │ │ ├── helix.asm │ │ ├── mk1.cpu │ │ └── mk1_std.asm │ ├── merge_sort.asm │ ├── multiplication.asm │ ├── multiplication_tables.asm │ ├── primes.asm │ ├── quick_sort.asm │ ├── reminder.asm │ └── test_suite.asm └── schematics.pdf ├── README.md ├── bus_breakout ├── bus_breakout-cache.lib ├── bus_breakout.kicad_pcb ├── bus_breakout.pro ├── bus_breakout.sch └── fp-info-cache ├── eeprom_programmer ├── arduino_eeprom_programmer │ ├── arduino_eeprom_programmer-cache.lib │ ├── arduino_eeprom_programmer.kicad_pcb │ ├── arduino_eeprom_programmer.pro │ ├── arduino_eeprom_programmer.sch │ ├── fp-info-cache │ ├── fp-lib-table │ ├── images │ │ └── arduino_eeprom_programmer_render.png │ └── sym-lib-table └── multiplexed-display │ └── multiplexed-display.ino ├── helix_display_interface ├── README.md ├── code │ └── helix_display_interface │ │ └── helix_display_interface.ino ├── display_interface │ ├── display_interface-cache.lib │ ├── display_interface.kicad_pcb │ ├── display_interface.pro │ ├── display_interface.sch │ ├── fp-info-cache │ ├── helix.kicad_mod │ └── helix_small.kicad_mod └── images │ ├── display_interface_render.png │ └── hello_world.gif └── start9_programming_interface ├── README.md ├── code ├── flash_composer.py ├── start9.bin ├── start9.txt └── start9_programming_interface │ └── start9_programming_interface.ino ├── images └── programming_interface_render.png └── programming_interface ├── arduino-kicad-library ├── .gitignore ├── Arduino.pretty │ ├── Arduino_101_Shield.kicad_mod │ ├── Arduino_Due_Shield.kicad_mod │ ├── Arduino_Leonardo_Shield.kicad_mod │ ├── Arduino_Mega2560_Shield.kicad_mod │ ├── Arduino_Micro_Socket.kicad_mod │ ├── Arduino_Mini_Socket.kicad_mod │ ├── Arduino_Nano_Socket.kicad_mod │ ├── Arduino_Uno_Shield.kicad_mod │ └── Arduino_Zero_Shield.kicad_mod ├── LICENSE.txt ├── README.md ├── arduino.dcm └── arduino.lib ├── fp-info-cache ├── fp-lib-table ├── programming_interface-cache.lib ├── programming_interface.kicad_pcb ├── programming_interface.pro ├── programming_interface.sch ├── sym-lib-table └── trainer.kicad_mod /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *.sch-bak 3 | *.kicad_pcb-bak 4 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "MK1_CPU/assembler"] 2 | path = MK1_CPU/assembler 3 | url = git@github.com:vascofazza/customasm.git 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Federico Scozzafava 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /MK1_CPU/8bit-computer.csv: -------------------------------------------------------------------------------- 1 | Comment,Designator,Footprint,LCSC 2 | "Arduino Nano","A1","Module:Arduino_Nano","" 3 | "0.1µF","C5,C10,C11,C12,C14,C15,C18,C22,C23,C25,C28,C29,C30,C34,C36,C37,C40,C41,C42","Capacitor_THT:C_Disc_D4.3mm_W1.9mm_P5.00mm","" 4 | "*","C13,C16,C21,C26,C31,C32,C33,C35,C38,C43","Capacitor_THT:C_Disc_D4.3mm_W1.9mm_P5.00mm","" 5 | "0.01","C17","Capacitor_THT:C_Disc_D4.3mm_W1.9mm_P5.00mm","" 6 | "10µF","C1,C2","Capacitor_THT:CP_Radial_D5.0mm_P2.00mm","" 7 | "0.01µf","C24,C27,C44","Capacitor_THT:C_Disc_D4.3mm_W1.9mm_P5.00mm","" 8 | "0.01µF","C3,C6,C7,C9,C19,C20,C39,C45","Capacitor_THT:C_Disc_D4.3mm_W1.9mm_P5.00mm","" 9 | "1µF","C4,C8","Capacitor_THT:CP_Radial_D5.0mm_P2.00mm","" 10 | "BLUE","D10,D72,D73,D74,D75,D76,D77,D78,D79,D93,D94,D95,D96,D97,D98,D99,D100,D101,D102,D103,D104,D105,D106,D107,D108,D109,D110,D111,D112,D113,D114,D115,D116,D117,D118,D119,D120,D121,D122,D123,D124,D125,D126","LED_THT:LED_D3.0mm","" 11 | "WHITE","D19,D20,D88,D89","LED_THT:LED_D3.0mm","" 12 | "YELLOW","D38,D39,D40,D41,D42,D43,D44,D45,D48,D55,D56,D57,D58,D59,D60,D61,D62,D63,D90,D91,D92","LED_THT:LED_D3.0mm","" 13 | "RED","D1,D2,D3,D4,D5,D6,D7,D8,D21,D22,D23,D24,D25,D26,D27,D28,D29,D30,D31,D32,D33,D34,D35,D36,D37","LED_THT:LED_D3.0mm","" 14 | "GREEN","D9,D11,D12,D13,D14,D15,D16,D17,D18,D46,D47,D49,D50,D51,D52,D53,D54,D64,D65,D66,D67,D68,D69,D70,D71,D80,D81,D82,D83,D84,D85,D86,D87,D127,D128,D129,D130,D131,D132,D133,D134","LED_THT:LED_D3.0mm","" 15 | "USB_B-8bit-computer-rescue","J1","Connector_USB:USB_B_OST_USB-B1HSxx_Horizontal","" 16 | "Barrel_Jack_Switch","J2","Connector_BarrelJack:BarrelJack_Horizontal","" 17 | "EXT-CONN","J4","Connector_PinHeader_2.54mm:PinHeader_2x09_P2.54mm_Vertical","" 18 | "Arduino_VIN","JP1","Jumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mm","" 19 | "220","R1,R2,R23,R24","Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal","" 20 | "10K","R12,R18,R19,R20,R21,R22,R29,R30,R31,R32","Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal","" 21 | "470","R13","Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal","" 22 | "100K","R16","Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal","" 23 | "1K","R3,R5,R6,R7,R8,R9,R10,R11,R14,R15,R17,R25,R26,R27,R28","Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal","" 24 | "330K","R4","Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal","" 25 | "10K","RN1","Resistor_THT:R_Array_SIP9","" 26 | "470","RN2,RN4,RN5","Resistor_THT:R_Array_SIP9","" 27 | "1K","RN3,RN7,RN9,RN10,RN11,RN12,RN13,RN14,RN15,RN16,RN17,RN18,RN19,RN20","Resistor_THT:R_Array_SIP9","" 28 | "220","RN6,RN8","Resistor_THT:R_Array_SIP9","" 29 | "1M","RV1","Potentiometer_THT:Potentiometer_Bourns_PTV09A-1_Single_Vertical","" 30 | "Multiplier","SW1","Button_Switch_THT:SW_DIP_SPSTx03_Slide_9.78x9.8mm_W7.62mm_P2.54mm","" 31 | "Reset","SW10","Button_Switch_THT:SW_PUSH_6mm_H5mm","" 32 | "Pulse","SW2","Button_Switch_THT:SW_PUSH_6mm_H5mm","" 33 | "Manual","SW3","Button_Switch_THT:SW_NKK_GW12LJP","" 34 | "Prog","SW4","Button_Switch_THT:SW_DIP_SPSTx01_Slide_9.78x4.72mm_W7.62mm_P2.54mm","" 35 | "Address","SW5","Button_Switch_THT:SW_DIP_SPSTx10_Slide_9.78x27.58mm_W7.62mm_P2.54mm","" 36 | "Mode","SW6","Button_Switch_THT:SW_DIP_SPSTx03_Slide_9.78x9.8mm_W7.62mm_P2.54mm","" 37 | "Write","SW7","Button_Switch_THT:SW_PUSH_6mm_H5mm","" 38 | "Show","SW8","Button_Switch_THT:SW_PUSH_6mm_H5mm","" 39 | "Data","SW9","Button_Switch_THT:SW_DIP_SPSTx08_Slide_9.78x22.5mm_W7.62mm_P2.54mm","" 40 | "CLK_IN","TP1","TestPoint:TestPoint_Pad_1.0x1.0mm","" 41 | "AND","TP10","TestPoint:TestPoint_Pad_1.0x1.0mm","" 42 | "EI","TP11","TestPoint:TestPoint_Pad_1.0x1.0mm","" 43 | "~EO","TP12","TestPoint:TestPoint_Pad_1.0x1.0mm","" 44 | "NOT","TP13","TestPoint:TestPoint_Pad_1.0x1.0mm","" 45 | "SUB","TP14","TestPoint:TestPoint_Pad_1.0x1.0mm","" 46 | "MI","TP15","TestPoint:TestPoint_Pad_1.0x1.0mm","" 47 | "OI","TP16","TestPoint:TestPoint_Pad_1.0x1.0mm","" 48 | "~PO","TP17","TestPoint:TestPoint_Pad_1.0x1.0mm","" 49 | "PE","TP18","TestPoint:TestPoint_Pad_1.0x1.0mm","" 50 | "~PI","TP19","TestPoint:TestPoint_Pad_1.0x1.0mm","" 51 | "CLK","TP2","TestPoint:TestPoint_Pad_1.0x1.0mm","" 52 | "~RO","TP20","TestPoint:TestPoint_Pad_1.0x1.0mm","" 53 | "RI","TP21","TestPoint:TestPoint_Pad_1.0x1.0mm","" 54 | "~SO","TP22","TestPoint:TestPoint_Pad_1.0x1.0mm","" 55 | "SU","TP23","TestPoint:TestPoint_Pad_1.0x1.0mm","" 56 | "SD","TP24","TestPoint:TestPoint_Pad_1.0x1.0mm","" 57 | "SI","TP25","TestPoint:TestPoint_Pad_1.0x1.0mm","" 58 | "II","TP28","TestPoint:TestPoint_Pad_1.0x1.0mm","" 59 | "AI","TP29","TestPoint:TestPoint_Pad_1.0x1.0mm","" 60 | "~CLK","TP3","TestPoint:TestPoint_Pad_1.0x1.0mm","" 61 | "~AO","TP30","TestPoint:TestPoint_Pad_1.0x1.0mm","" 62 | "RGT","TP31","TestPoint:TestPoint_Pad_1.0x1.0mm","" 63 | "ROT","TP32","TestPoint:TestPoint_Pad_1.0x1.0mm","" 64 | "SHF","TP33","TestPoint:TestPoint_Pad_1.0x1.0mm","" 65 | "E0","TP34","TestPoint:TestPoint_Pad_1.0x1.0mm","" 66 | "EXT_IN","TP35","TestPoint:TestPoint_Pad_1.0x1.0mm","" 67 | "E1","TP36","TestPoint:TestPoint_Pad_1.0x1.0mm","" 68 | "U0","TP37","TestPoint:TestPoint_Pad_1.0x1.0mm","" 69 | "U1","TP38","TestPoint:TestPoint_Pad_1.0x1.0mm","" 70 | "~CU_EN","TP39","TestPoint:TestPoint_Pad_1.0x1.0mm","" 71 | "~REG-O","TP4,TP26,TP40","TestPoint:TestPoint_Pad_1.0x1.0mm","" 72 | "REG-I","TP5,TP27,TP41","TestPoint:TestPoint_Pad_1.0x1.0mm","" 73 | "~FI","TP6","TestPoint:TestPoint_Pad_1.0x1.0mm","" 74 | "ZF","TP7","TestPoint:TestPoint_Pad_1.0x1.0mm","" 75 | "CF","TP8","TestPoint:TestPoint_Pad_1.0x1.0mm","" 76 | "OR","TP9","TestPoint:TestPoint_Pad_1.0x1.0mm","" 77 | "74HCT32","U1,U2,U12,U25,U28","Package_DIP:DIP-14_W7.62mm","" 78 | "74HCT173","U11","Package_DIP:DIP-16_W7.62mm","" 79 | "74HCT02","U13,U69","Package_DIP:DIP-14_W7.62mm","" 80 | "74HCT283","U15,U16","Package_DIP:DIP-16_W7.62mm","" 81 | "74HCT157","U17,U18,U20,U23,U45,U62,U63,U67,U68","Package_DIP:DIP-16_W7.62mm","" 82 | "74HCT86","U21,U22,U24","Package_DIP:DIP-14_W7.62mm","" 83 | "NE555","U3,U6,U7,U33","Package_DIP:DIP-8_W7.62mm","" 84 | "74LS157","U30,U31,U50,U51","Package_DIP:DIP-16_W7.62mm","" 85 | "74HCT107","U35,U71","Package_DIP:DIP-14_W7.62mm","" 86 | "28C64","U36","Package_DIP:DIP-28_W15.24mm_Socket","" 87 | "74HCT139","U38","Package_DIP:DIP-16_W7.62mm","" 88 | "74HCT04","U4,U60","Package_DIP:DIP-14_W7.62mm","" 89 | "7SEGMENT_CC","U37,U39,U40,U41","Display_7Segment:7SegmentLED_LTS6760_LTS6780","" 90 | "74HCT161","U43,U44,U72","Package_DIP:DIP-16_W7.62mm","" 91 | "74HCT00","U46,U55","Package_DIP:DIP-14_W7.62mm","" 92 | "CY62256","U47","Package_DIP:DIP-28_W15.24mm_Socket","" 93 | "74HCT08","U5,U10,U26,U27,U29,U58,U64","Package_DIP:DIP-14_W7.62mm","" 94 | "74HCT193","U53,U54","Package_DIP:DIP-16_W7.62mm","" 95 | "AM29F040","U73,U74,U75,U76","Housings_LCC:PLCC-32_THT-Socket","" 96 | "74HCT138","U77","Package_DIP:DIP-16_W7.62mm","" 97 | "74HCT238","U78,U79","Package_DIP:DIP-16_W7.62mm","" 98 | "74HCT245","U8,U14,U42,U48,U49,U52,U56,U59,U65,U70,U80","Package_DIP:DIP-20_W7.62mm","" 99 | "74HCT273","U9,U19,U32,U34,U57,U61,U66,U81","Package_DIP:DIP-20_W7.62mm","" -------------------------------------------------------------------------------- /MK1_CPU/8bit-computer/8bit-computer-rescue.dcm: -------------------------------------------------------------------------------- 1 | EESchema-DOCLIB Version 2.0 2 | # 3 | $CMP 74LS168 4 | D Synchronous 4-bit Up/Down counter 5 | K TTL CNT CNT4 6 | F http://www.ti.com/lit/gpn/sn74LS168 7 | $ENDCMP 8 | # 9 | $CMP 74LS175 10 | D 4-bit D Flip-Flop, reset 11 | K TTL REG REG4 DFF 12 | F http://www.ti.com/lit/gpn/sn74LS175 13 | $ENDCMP 14 | # 15 | $CMP 74LS374 16 | D 8-bit Register, 3-state outputs 17 | K TTL DFF DFF8 REG 3State 18 | F http://www.ti.com/lit/gpn/sn74LS374 19 | $ENDCMP 20 | # 21 | $CMP Barrel_Jack_Switch 22 | D DC Barrel Jack with an internal switch 23 | K DC power barrel jack connector 24 | F ~ 25 | $ENDCMP 26 | # 27 | $CMP CY62256 28 | D SRAM 32Kx8 STATIC RAM 29 | K SRAM memory 30 | $ENDCMP 31 | # 32 | $CMP IDT7125 33 | D SRAM 32Kx8 ASYNCHRONOUS 5.0V STATIC RAM 34 | K asynchronous SRAM memory 35 | $ENDCMP 36 | # 37 | $CMP SW_NKK_GW12LHP 38 | D Switch, single pole double throw, illuminated paddle, red and green LEDs 39 | K switch single-pole double-throw spdt ON-ON illuminated red green 40 | F http://www.nkkswitches.com/pdf/gwillum.pdf 41 | $ENDCMP 42 | # 43 | #End Doc Library 44 | -------------------------------------------------------------------------------- /MK1_CPU/8bit-computer/8bit-computer.pro: -------------------------------------------------------------------------------- 1 | update=Monday, 27 April 2020 at 00:54:54 2 | version=1 3 | last_client=kicad 4 | [cvpcb] 5 | version=1 6 | NetIExt=net 7 | [general] 8 | version=1 9 | [eeschema] 10 | version=1 11 | LibDir= 12 | [pcbnew] 13 | version=1 14 | PageLayoutDescrFile= 15 | LastNetListRead=8bit-computer-2.net 16 | CopperLayerCount=2 17 | BoardThickness=1.6 18 | AllowMicroVias=0 19 | AllowBlindVias=0 20 | RequireCourtyardDefinitions=0 21 | ProhibitOverlappingCourtyards=1 22 | MinTrackWidth=0.254 23 | MinViaDiameter=0.4 24 | MinViaDrill=0.3 25 | MinMicroViaDiameter=0.2 26 | MinMicroViaDrill=0.09999999999999999 27 | MinHoleToHole=0.25 28 | TrackWidth1=0.254 29 | ViaDiameter1=0.6 30 | ViaDrill1=0.4 31 | dPairWidth1=0.3 32 | dPairGap1=0.25 33 | dPairViaGap1=0.25 34 | SilkLineWidth=0.15 35 | SilkTextSizeV=1 36 | SilkTextSizeH=1 37 | SilkTextSizeThickness=0.15 38 | SilkTextItalic=0 39 | SilkTextUpright=1 40 | CopperLineWidth=0.2 41 | CopperTextSizeV=1.5 42 | CopperTextSizeH=1.5 43 | CopperTextThickness=0.3 44 | CopperTextItalic=0 45 | CopperTextUpright=1 46 | EdgeCutLineWidth=0.15 47 | CourtyardLineWidth=0.05 48 | OthersLineWidth=0.15 49 | OthersTextSizeV=1 50 | OthersTextSizeH=1 51 | OthersTextSizeThickness=0.15 52 | OthersTextItalic=0 53 | OthersTextUpright=1 54 | SolderMaskClearance=0.2 55 | SolderMaskMinWidth=0 56 | SolderPasteClearance=0 57 | SolderPasteRatio=-0 58 | [pcbnew/Layer.F.Cu] 59 | Name=F.Cu 60 | Type=0 61 | Enabled=1 62 | [pcbnew/Layer.In1.Cu] 63 | Name=In1.Cu 64 | Type=0 65 | Enabled=0 66 | [pcbnew/Layer.In2.Cu] 67 | Name=In2.Cu 68 | Type=0 69 | Enabled=0 70 | [pcbnew/Layer.In3.Cu] 71 | Name=In3.Cu 72 | Type=0 73 | Enabled=0 74 | [pcbnew/Layer.In4.Cu] 75 | Name=In4.Cu 76 | Type=0 77 | Enabled=0 78 | [pcbnew/Layer.In5.Cu] 79 | Name=In5.Cu 80 | Type=0 81 | Enabled=0 82 | [pcbnew/Layer.In6.Cu] 83 | Name=In6.Cu 84 | Type=0 85 | Enabled=0 86 | [pcbnew/Layer.In7.Cu] 87 | Name=In7.Cu 88 | Type=0 89 | Enabled=0 90 | [pcbnew/Layer.In8.Cu] 91 | Name=In8.Cu 92 | Type=0 93 | Enabled=0 94 | [pcbnew/Layer.In9.Cu] 95 | Name=In9.Cu 96 | Type=0 97 | Enabled=0 98 | [pcbnew/Layer.In10.Cu] 99 | Name=In10.Cu 100 | Type=0 101 | Enabled=0 102 | [pcbnew/Layer.In11.Cu] 103 | Name=In11.Cu 104 | Type=0 105 | Enabled=0 106 | [pcbnew/Layer.In12.Cu] 107 | Name=In12.Cu 108 | Type=0 109 | Enabled=0 110 | [pcbnew/Layer.In13.Cu] 111 | Name=In13.Cu 112 | Type=0 113 | Enabled=0 114 | [pcbnew/Layer.In14.Cu] 115 | Name=In14.Cu 116 | Type=0 117 | Enabled=0 118 | [pcbnew/Layer.In15.Cu] 119 | Name=In15.Cu 120 | Type=0 121 | Enabled=0 122 | [pcbnew/Layer.In16.Cu] 123 | Name=In16.Cu 124 | Type=0 125 | Enabled=0 126 | [pcbnew/Layer.In17.Cu] 127 | Name=In17.Cu 128 | Type=0 129 | Enabled=0 130 | [pcbnew/Layer.In18.Cu] 131 | Name=In18.Cu 132 | Type=0 133 | Enabled=0 134 | [pcbnew/Layer.In19.Cu] 135 | Name=In19.Cu 136 | Type=0 137 | Enabled=0 138 | [pcbnew/Layer.In20.Cu] 139 | Name=In20.Cu 140 | Type=0 141 | Enabled=0 142 | [pcbnew/Layer.In21.Cu] 143 | Name=In21.Cu 144 | Type=0 145 | Enabled=0 146 | [pcbnew/Layer.In22.Cu] 147 | Name=In22.Cu 148 | Type=0 149 | Enabled=0 150 | [pcbnew/Layer.In23.Cu] 151 | Name=In23.Cu 152 | Type=0 153 | Enabled=0 154 | [pcbnew/Layer.In24.Cu] 155 | Name=In24.Cu 156 | Type=0 157 | Enabled=0 158 | [pcbnew/Layer.In25.Cu] 159 | Name=In25.Cu 160 | Type=0 161 | Enabled=0 162 | [pcbnew/Layer.In26.Cu] 163 | Name=In26.Cu 164 | Type=0 165 | Enabled=0 166 | [pcbnew/Layer.In27.Cu] 167 | Name=In27.Cu 168 | Type=0 169 | Enabled=0 170 | [pcbnew/Layer.In28.Cu] 171 | Name=In28.Cu 172 | Type=0 173 | Enabled=0 174 | [pcbnew/Layer.In29.Cu] 175 | Name=In29.Cu 176 | Type=0 177 | Enabled=0 178 | [pcbnew/Layer.In30.Cu] 179 | Name=In30.Cu 180 | Type=0 181 | Enabled=0 182 | [pcbnew/Layer.B.Cu] 183 | Name=B.Cu 184 | Type=0 185 | Enabled=1 186 | [pcbnew/Layer.B.Adhes] 187 | Enabled=1 188 | [pcbnew/Layer.F.Adhes] 189 | Enabled=1 190 | [pcbnew/Layer.B.Paste] 191 | Enabled=1 192 | [pcbnew/Layer.F.Paste] 193 | Enabled=1 194 | [pcbnew/Layer.B.SilkS] 195 | Enabled=1 196 | [pcbnew/Layer.F.SilkS] 197 | Enabled=1 198 | [pcbnew/Layer.B.Mask] 199 | Enabled=1 200 | [pcbnew/Layer.F.Mask] 201 | Enabled=1 202 | [pcbnew/Layer.Dwgs.User] 203 | Enabled=1 204 | [pcbnew/Layer.Cmts.User] 205 | Enabled=1 206 | [pcbnew/Layer.Eco1.User] 207 | Enabled=1 208 | [pcbnew/Layer.Eco2.User] 209 | Enabled=1 210 | [pcbnew/Layer.Edge.Cuts] 211 | Enabled=1 212 | [pcbnew/Layer.Margin] 213 | Enabled=1 214 | [pcbnew/Layer.B.CrtYd] 215 | Enabled=1 216 | [pcbnew/Layer.F.CrtYd] 217 | Enabled=1 218 | [pcbnew/Layer.B.Fab] 219 | Enabled=1 220 | [pcbnew/Layer.F.Fab] 221 | Enabled=1 222 | [pcbnew/Layer.Rescue] 223 | Enabled=0 224 | [pcbnew/Netclasses] 225 | [pcbnew/Netclasses/Default] 226 | Name=Default 227 | Clearance=0.253997 228 | TrackWidth=0.254 229 | ViaDiameter=0.6 230 | ViaDrill=0.4 231 | uViaDiameter=0.3 232 | uViaDrill=0.1 233 | dPairWidth=0.3 234 | dPairGap=0.25 235 | dPairViaGap=0.25 236 | [pcbnew/Netclasses/1] 237 | Name=POWER 238 | Clearance=0.253997 239 | TrackWidth=0.3 240 | ViaDiameter=0.6 241 | ViaDrill=0.4 242 | uViaDiameter=0.3 243 | uViaDrill=0.1 244 | dPairWidth=0.3 245 | dPairGap=0.25 246 | dPairViaGap=0.25 247 | [schematic_editor] 248 | version=1 249 | PageLayoutDescrFile= 250 | PlotDirectoryName= 251 | SubpartIdSeparator=0 252 | SubpartFirstId=65 253 | NetFmtName=Pcbnew 254 | SpiceAjustPassiveValues=0 255 | LabSize=60 256 | ERC_TestSimilarLabels=1 257 | -------------------------------------------------------------------------------- /MK1_CPU/8bit-computer/Housings_LCC.pretty/.gitattributes: -------------------------------------------------------------------------------- 1 | *.kicad_mod text=auto -------------------------------------------------------------------------------- /MK1_CPU/8bit-computer/Housings_LCC.pretty/.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: required 2 | before_install: 3 | - git clone https://github.com/KiCad/kicad-library-utils /home/travis/build/kicad-library-utils 4 | 5 | script: 6 | - sudo bash /home/travis/build/kicad-library-utils/pcb/travis/check_all.sh $TRAVIS_BUILD_DIR -------------------------------------------------------------------------------- /MK1_CPU/8bit-computer/Housings_LCC.pretty/PLCC-20.kicad_mod: -------------------------------------------------------------------------------- 1 | (module PLCC-20 (layer F.Cu) (tedit 58FB5F99) 2 | (descr "PLCC, 20 pins, surface mount") 3 | (tags "plcc smt") 4 | (attr smd) 5 | (fp_text reference REF** (at 0 -6.015) (layer F.SilkS) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_text value PLCC-20 (at 0 6.015) (layer F.Fab) 9 | (effects (font (size 1 1) (thickness 0.15))) 10 | ) 11 | (fp_line (start -4.015 -5.015) (end -5.015 -4.015) (layer F.Fab) (width 0.1)) 12 | (fp_line (start -5.015 -4.015) (end -5.015 5.015) (layer F.Fab) (width 0.1)) 13 | (fp_line (start -5.015 5.015) (end 5.015 5.015) (layer F.Fab) (width 0.1)) 14 | (fp_line (start 5.015 5.015) (end 5.015 -5.015) (layer F.Fab) (width 0.1)) 15 | (fp_line (start 5.015 -5.015) (end -4.015 -5.015) (layer F.Fab) (width 0.1)) 16 | (fp_line (start -5.5 -5.5) (end -5.5 5.5) (layer F.CrtYd) (width 0.05)) 17 | (fp_line (start -5.5 5.5) (end 5.5 5.5) (layer F.CrtYd) (width 0.05)) 18 | (fp_line (start 5.5 5.5) (end 5.5 -5.5) (layer F.CrtYd) (width 0.05)) 19 | (fp_line (start 5.5 -5.5) (end -5.5 -5.5) (layer F.CrtYd) (width 0.05)) 20 | (fp_line (start -0.5 -5.015) (end 0 -4.015) (layer F.Fab) (width 0.1)) 21 | (fp_line (start 0 -4.015) (end 0.5 -5.015) (layer F.Fab) (width 0.1)) 22 | (fp_line (start -3.515 -5.165) (end -4.015 -5.165) (layer F.SilkS) (width 0.1)) 23 | (fp_line (start -4.015 -5.165) (end -5.165 -4.015) (layer F.SilkS) (width 0.1)) 24 | (fp_line (start -5.165 -4.015) (end -5.165 -3.515) (layer F.SilkS) (width 0.1)) 25 | (fp_line (start 3.515 -5.165) (end 5.165 -5.165) (layer F.SilkS) (width 0.1)) 26 | (fp_line (start 5.165 -5.165) (end 5.165 -3.515) (layer F.SilkS) (width 0.1)) 27 | (fp_line (start -3.515 5.165) (end -5.165 5.165) (layer F.SilkS) (width 0.1)) 28 | (fp_line (start -5.165 5.165) (end -5.165 3.515) (layer F.SilkS) (width 0.1)) 29 | (fp_line (start 3.515 5.165) (end 5.165 5.165) (layer F.SilkS) (width 0.1)) 30 | (fp_line (start 5.165 5.165) (end 5.165 3.515) (layer F.SilkS) (width 0.1)) 31 | (pad 1 smd rect (at 0 -4.0525) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 32 | (pad 2 smd rect (at -1.27 -4.0525) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 33 | (pad 3 smd rect (at -2.54 -4.0525) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 34 | (pad 20 smd rect (at 1.27 -4.0525) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 35 | (pad 19 smd rect (at 2.54 -4.0525) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 36 | (pad 4 smd rect (at -4.0525 -2.54) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 37 | (pad 5 smd rect (at -4.0525 -1.27) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 38 | (pad 6 smd rect (at -4.0525 0) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 39 | (pad 7 smd rect (at -4.0525 1.27) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 40 | (pad 8 smd rect (at -4.0525 2.54) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 41 | (pad 9 smd rect (at -2.54 4.0525) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 42 | (pad 10 smd rect (at -1.27 4.0525) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 43 | (pad 11 smd rect (at 0 4.0525) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 44 | (pad 12 smd rect (at 1.27 4.0525) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 45 | (pad 13 smd rect (at 2.54 4.0525) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 46 | (pad 14 smd rect (at 4.0525 2.54) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 47 | (pad 15 smd rect (at 4.0525 1.27) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 48 | (pad 16 smd rect (at 4.0525 0) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 49 | (pad 17 smd rect (at 4.0525 -1.27) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 50 | (pad 18 smd rect (at 4.0525 -2.54) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 51 | (fp_text user %R (at 0 0) (layer F.Fab) 52 | (effects (font (size 1 1) (thickness 0.15))) 53 | ) 54 | (model ${KISYS3DMOD}/Housings_LCC.3dshapes/PLCC-20.wrl 55 | (at (xyz 0 0 0)) 56 | (scale (xyz 1 1 1)) 57 | (rotate (xyz 0 0 0)) 58 | ) 59 | ) -------------------------------------------------------------------------------- /MK1_CPU/8bit-computer/Housings_LCC.pretty/PLCC-20_SMD-Socket.kicad_mod: -------------------------------------------------------------------------------- 1 | (module PLCC-20_SMD-Socket (layer F.Cu) (tedit 58FB5F99) 2 | (descr "PLCC, 20 pins, surface mount") 3 | (tags "plcc smt") 4 | (attr smd) 5 | (fp_text reference REF** (at 0 -8.825) (layer F.SilkS) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_text value PLCC-20_SMD-Socket (at 0 8.825) (layer F.Fab) 9 | (effects (font (size 1 1) (thickness 0.15))) 10 | ) 11 | (fp_line (start -6.825 -7.825) (end -7.825 -6.825) (layer F.Fab) (width 0.1)) 12 | (fp_line (start -7.825 -6.825) (end -7.825 7.825) (layer F.Fab) (width 0.1)) 13 | (fp_line (start -7.825 7.825) (end 7.825 7.825) (layer F.Fab) (width 0.1)) 14 | (fp_line (start 7.825 7.825) (end 7.825 -7.825) (layer F.Fab) (width 0.1)) 15 | (fp_line (start 7.825 -7.825) (end -6.825 -7.825) (layer F.Fab) (width 0.1)) 16 | (fp_line (start -8.3 -8.3) (end -8.3 8.3) (layer F.CrtYd) (width 0.05)) 17 | (fp_line (start -8.3 8.3) (end 8.3 8.3) (layer F.CrtYd) (width 0.05)) 18 | (fp_line (start 8.3 8.3) (end 8.3 -8.3) (layer F.CrtYd) (width 0.05)) 19 | (fp_line (start 8.3 -8.3) (end -8.3 -8.3) (layer F.CrtYd) (width 0.05)) 20 | (fp_line (start -4.015 -5.015) (end -5.015 -4.015) (layer F.Fab) (width 0.1)) 21 | (fp_line (start -5.015 -4.015) (end -5.015 5.015) (layer F.Fab) (width 0.1)) 22 | (fp_line (start -5.015 5.015) (end 5.015 5.015) (layer F.Fab) (width 0.1)) 23 | (fp_line (start 5.015 5.015) (end 5.015 -5.015) (layer F.Fab) (width 0.1)) 24 | (fp_line (start 5.015 -5.015) (end -4.015 -5.015) (layer F.Fab) (width 0.1)) 25 | (fp_line (start -6.555 -6.555) (end -6.555 6.555) (layer F.Fab) (width 0.1)) 26 | (fp_line (start -6.555 6.555) (end 6.555 6.555) (layer F.Fab) (width 0.1)) 27 | (fp_line (start 6.555 6.555) (end 6.555 -6.555) (layer F.Fab) (width 0.1)) 28 | (fp_line (start 6.555 -6.555) (end -6.555 -6.555) (layer F.Fab) (width 0.1)) 29 | (fp_line (start -0.5 -7.825) (end 0 -6.825) (layer F.Fab) (width 0.1)) 30 | (fp_line (start 0 -6.825) (end 0.5 -7.825) (layer F.Fab) (width 0.1)) 31 | (fp_line (start -1 -7.975) (end -6.975 -7.975) (layer F.SilkS) (width 0.12)) 32 | (fp_line (start -6.975 -7.975) (end -7.975 -6.975) (layer F.SilkS) (width 0.12)) 33 | (fp_line (start -7.975 -6.975) (end -7.975 7.975) (layer F.SilkS) (width 0.12)) 34 | (fp_line (start -7.975 7.975) (end 7.975 7.975) (layer F.SilkS) (width 0.12)) 35 | (fp_line (start 7.975 7.975) (end 7.975 -7.975) (layer F.SilkS) (width 0.12)) 36 | (fp_line (start 7.975 -7.975) (end 1 -7.975) (layer F.SilkS) (width 0.12)) 37 | (fp_line (start -3.515 -5.165) (end -4.015 -5.165) (layer F.SilkS) (width 0.1)) 38 | (fp_line (start -4.015 -5.165) (end -5.165 -4.015) (layer F.SilkS) (width 0.1)) 39 | (fp_line (start -5.165 -4.015) (end -5.165 -3.515) (layer F.SilkS) (width 0.1)) 40 | (fp_line (start 3.515 -5.165) (end 5.165 -5.165) (layer F.SilkS) (width 0.1)) 41 | (fp_line (start 5.165 -5.165) (end 5.165 -3.515) (layer F.SilkS) (width 0.1)) 42 | (fp_line (start -3.515 5.165) (end -5.165 5.165) (layer F.SilkS) (width 0.1)) 43 | (fp_line (start -5.165 5.165) (end -5.165 3.515) (layer F.SilkS) (width 0.1)) 44 | (fp_line (start 3.515 5.165) (end 5.165 5.165) (layer F.SilkS) (width 0.1)) 45 | (fp_line (start 5.165 5.165) (end 5.165 3.515) (layer F.SilkS) (width 0.1)) 46 | (pad 1 smd rect (at 0 -4.0525) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 47 | (pad 2 smd rect (at -1.27 -4.0525) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 48 | (pad 3 smd rect (at -2.54 -4.0525) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 49 | (pad 20 smd rect (at 1.27 -4.0525) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 50 | (pad 19 smd rect (at 2.54 -4.0525) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 51 | (pad 4 smd rect (at -4.0525 -2.54) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 52 | (pad 5 smd rect (at -4.0525 -1.27) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 53 | (pad 6 smd rect (at -4.0525 0) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 54 | (pad 7 smd rect (at -4.0525 1.27) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 55 | (pad 8 smd rect (at -4.0525 2.54) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 56 | (pad 9 smd rect (at -2.54 4.0525) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 57 | (pad 10 smd rect (at -1.27 4.0525) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 58 | (pad 11 smd rect (at 0 4.0525) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 59 | (pad 12 smd rect (at 1.27 4.0525) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 60 | (pad 13 smd rect (at 2.54 4.0525) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 61 | (pad 14 smd rect (at 4.0525 2.54) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 62 | (pad 15 smd rect (at 4.0525 1.27) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 63 | (pad 16 smd rect (at 4.0525 0) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 64 | (pad 17 smd rect (at 4.0525 -1.27) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 65 | (pad 18 smd rect (at 4.0525 -2.54) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 66 | (fp_text user %R (at 0 0) (layer F.Fab) 67 | (effects (font (size 1 1) (thickness 0.15))) 68 | ) 69 | (model ${KISYS3DMOD}/Housings_LCC.3dshapes/PLCC-20_SMD-Socket.wrl 70 | (at (xyz 0 0 0)) 71 | (scale (xyz 1 1 1)) 72 | (rotate (xyz 0 0 0)) 73 | ) 74 | ) -------------------------------------------------------------------------------- /MK1_CPU/8bit-computer/Housings_LCC.pretty/PLCC-20_THT-Socket.kicad_mod: -------------------------------------------------------------------------------- 1 | (module PLCC-20_THT-Socket (layer F.Cu) (tedit 58FB5F08) 2 | (descr "PLCC, 20 pins, through hole") 3 | (tags "plcc leaded") 4 | (fp_text reference REF** (at 0 -3.67) (layer F.SilkS) 5 | (effects (font (size 1 1) (thickness 0.15))) 6 | ) 7 | (fp_text value PLCC-20_THT-Socket (at 0 13.83) (layer F.Fab) 8 | (effects (font (size 1 1) (thickness 0.15))) 9 | ) 10 | (fp_line (start -6.75 -2.67) (end -7.75 -1.67) (layer F.Fab) (width 0.1)) 11 | (fp_line (start -7.75 -1.67) (end -7.75 12.83) (layer F.Fab) (width 0.1)) 12 | (fp_line (start -7.75 12.83) (end 7.75 12.83) (layer F.Fab) (width 0.1)) 13 | (fp_line (start 7.75 12.83) (end 7.75 -2.67) (layer F.Fab) (width 0.1)) 14 | (fp_line (start 7.75 -2.67) (end -6.75 -2.67) (layer F.Fab) (width 0.1)) 15 | (fp_line (start -8.25 -3.17) (end -8.25 13.33) (layer F.CrtYd) (width 0.05)) 16 | (fp_line (start -8.25 13.33) (end 8.25 13.33) (layer F.CrtYd) (width 0.05)) 17 | (fp_line (start 8.25 13.33) (end 8.25 -3.17) (layer F.CrtYd) (width 0.05)) 18 | (fp_line (start 8.25 -3.17) (end -8.25 -3.17) (layer F.CrtYd) (width 0.05)) 19 | (fp_line (start -5.21 -0.13) (end -5.21 10.29) (layer F.Fab) (width 0.1)) 20 | (fp_line (start -5.21 10.29) (end 5.21 10.29) (layer F.Fab) (width 0.1)) 21 | (fp_line (start 5.21 10.29) (end 5.21 -0.13) (layer F.Fab) (width 0.1)) 22 | (fp_line (start 5.21 -0.13) (end -5.21 -0.13) (layer F.Fab) (width 0.1)) 23 | (fp_line (start -0.5 -2.67) (end 0 -1.67) (layer F.Fab) (width 0.1)) 24 | (fp_line (start 0 -1.67) (end 0.5 -2.67) (layer F.Fab) (width 0.1)) 25 | (fp_line (start -1 -2.77) (end -6.85 -2.77) (layer F.SilkS) (width 0.12)) 26 | (fp_line (start -6.85 -2.77) (end -7.85 -1.77) (layer F.SilkS) (width 0.12)) 27 | (fp_line (start -7.85 -1.77) (end -7.85 12.93) (layer F.SilkS) (width 0.12)) 28 | (fp_line (start -7.85 12.93) (end 7.85 12.93) (layer F.SilkS) (width 0.12)) 29 | (fp_line (start 7.85 12.93) (end 7.85 -2.77) (layer F.SilkS) (width 0.12)) 30 | (fp_line (start 7.85 -2.77) (end 1 -2.77) (layer F.SilkS) (width 0.12)) 31 | (pad 2 thru_hole circle (at 0 2.54) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 32 | (pad 20 thru_hole circle (at 2.54 2.54) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 33 | (pad 18 thru_hole circle (at 5.08 2.54) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 34 | (pad 1 thru_hole rect (at 0 0) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 35 | (pad 3 thru_hole circle (at -2.54 0) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 36 | (pad 19 thru_hole circle (at 2.54 0) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 37 | (pad 5 thru_hole circle (at -2.54 2.54) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 38 | (pad 7 thru_hole circle (at -2.54 5.08) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 39 | (pad 4 thru_hole circle (at -5.08 2.54) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 40 | (pad 6 thru_hole circle (at -5.08 5.08) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 41 | (pad 8 thru_hole circle (at -5.08 7.62) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 42 | (pad 10 thru_hole circle (at -2.54 7.62) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 43 | (pad 12 thru_hole circle (at 0 7.62) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 44 | (pad 14 thru_hole circle (at 2.54 7.62) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 45 | (pad 9 thru_hole circle (at -2.54 10.16) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 46 | (pad 11 thru_hole circle (at 0 10.16) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 47 | (pad 13 thru_hole circle (at 2.54 10.16) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 48 | (pad 15 thru_hole circle (at 2.54 5.08) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 49 | (pad 17 thru_hole circle (at 2.54 2.54) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 50 | (pad 19 thru_hole circle (at 2.54 0) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 51 | (pad 14 thru_hole circle (at 5.08 7.62) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 52 | (pad 16 thru_hole circle (at 5.08 5.08) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 53 | (pad 18 thru_hole circle (at 5.08 2.54) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 54 | (fp_text user %R (at 0 5.08) (layer F.Fab) 55 | (effects (font (size 1 1) (thickness 0.15))) 56 | ) 57 | (model ${KISYS3DMOD}/Housings_LCC.3dshapes/PLCC-20_THT-Socket.wrl 58 | (at (xyz 0 0 0)) 59 | (scale (xyz 1 1 1)) 60 | (rotate (xyz 0 0 0)) 61 | ) 62 | ) -------------------------------------------------------------------------------- /MK1_CPU/8bit-computer/Housings_LCC.pretty/PLCC-28.kicad_mod: -------------------------------------------------------------------------------- 1 | (module PLCC-28 (layer F.Cu) (tedit 58FB5F99) 2 | (descr "PLCC, 28 pins, surface mount") 3 | (tags "plcc smt") 4 | (attr smd) 5 | (fp_text reference REF** (at 0 -7.285) (layer F.SilkS) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_text value PLCC-28 (at 0 7.285) (layer F.Fab) 9 | (effects (font (size 1 1) (thickness 0.15))) 10 | ) 11 | (fp_line (start -5.285 -6.285) (end -6.285 -5.285) (layer F.Fab) (width 0.1)) 12 | (fp_line (start -6.285 -5.285) (end -6.285 6.285) (layer F.Fab) (width 0.1)) 13 | (fp_line (start -6.285 6.285) (end 6.285 6.285) (layer F.Fab) (width 0.1)) 14 | (fp_line (start 6.285 6.285) (end 6.285 -6.285) (layer F.Fab) (width 0.1)) 15 | (fp_line (start 6.285 -6.285) (end -5.285 -6.285) (layer F.Fab) (width 0.1)) 16 | (fp_line (start -6.75 -6.75) (end -6.75 6.75) (layer F.CrtYd) (width 0.05)) 17 | (fp_line (start -6.75 6.75) (end 6.75 6.75) (layer F.CrtYd) (width 0.05)) 18 | (fp_line (start 6.75 6.75) (end 6.75 -6.75) (layer F.CrtYd) (width 0.05)) 19 | (fp_line (start 6.75 -6.75) (end -6.75 -6.75) (layer F.CrtYd) (width 0.05)) 20 | (fp_line (start -0.5 -6.285) (end 0 -5.285) (layer F.Fab) (width 0.1)) 21 | (fp_line (start 0 -5.285) (end 0.5 -6.285) (layer F.Fab) (width 0.1)) 22 | (fp_line (start -4.785 -6.435) (end -5.285 -6.435) (layer F.SilkS) (width 0.1)) 23 | (fp_line (start -5.285 -6.435) (end -6.435 -5.285) (layer F.SilkS) (width 0.1)) 24 | (fp_line (start -6.435 -5.285) (end -6.435 -4.785) (layer F.SilkS) (width 0.1)) 25 | (fp_line (start 4.785 -6.435) (end 6.435 -6.435) (layer F.SilkS) (width 0.1)) 26 | (fp_line (start 6.435 -6.435) (end 6.435 -4.785) (layer F.SilkS) (width 0.1)) 27 | (fp_line (start -4.785 6.435) (end -6.435 6.435) (layer F.SilkS) (width 0.1)) 28 | (fp_line (start -6.435 6.435) (end -6.435 4.785) (layer F.SilkS) (width 0.1)) 29 | (fp_line (start 4.785 6.435) (end 6.435 6.435) (layer F.SilkS) (width 0.1)) 30 | (fp_line (start 6.435 6.435) (end 6.435 4.785) (layer F.SilkS) (width 0.1)) 31 | (pad 1 smd rect (at 0 -5.3225) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 32 | (pad 2 smd rect (at -1.27 -5.3225) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 33 | (pad 3 smd rect (at -2.54 -5.3225) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 34 | (pad 4 smd rect (at -3.81 -5.3225) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 35 | (pad 28 smd rect (at 1.27 -5.3225) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 36 | (pad 27 smd rect (at 2.54 -5.3225) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 37 | (pad 26 smd rect (at 3.81 -5.3225) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 38 | (pad 5 smd rect (at -5.3225 -3.81) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 39 | (pad 6 smd rect (at -5.3225 -2.54) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 40 | (pad 7 smd rect (at -5.3225 -1.27) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 41 | (pad 8 smd rect (at -5.3225 0) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 42 | (pad 9 smd rect (at -5.3225 1.27) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 43 | (pad 10 smd rect (at -5.3225 2.54) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 44 | (pad 11 smd rect (at -5.3225 3.81) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 45 | (pad 12 smd rect (at -3.81 5.3225) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 46 | (pad 13 smd rect (at -2.54 5.3225) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 47 | (pad 14 smd rect (at -1.27 5.3225) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 48 | (pad 15 smd rect (at 0 5.3225) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 49 | (pad 16 smd rect (at 1.27 5.3225) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 50 | (pad 17 smd rect (at 2.54 5.3225) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 51 | (pad 18 smd rect (at 3.81 5.3225) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 52 | (pad 19 smd rect (at 5.3225 3.81) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 53 | (pad 20 smd rect (at 5.3225 2.54) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 54 | (pad 21 smd rect (at 5.3225 1.27) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 55 | (pad 22 smd rect (at 5.3225 0) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 56 | (pad 23 smd rect (at 5.3225 -1.27) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 57 | (pad 24 smd rect (at 5.3225 -2.54) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 58 | (pad 25 smd rect (at 5.3225 -3.81) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 59 | (fp_text user %R (at 0 0) (layer F.Fab) 60 | (effects (font (size 1 1) (thickness 0.15))) 61 | ) 62 | (model ${KISYS3DMOD}/Housings_LCC.3dshapes/PLCC-28.wrl 63 | (at (xyz 0 0 0)) 64 | (scale (xyz 1 1 1)) 65 | (rotate (xyz 0 0 0)) 66 | ) 67 | ) -------------------------------------------------------------------------------- /MK1_CPU/8bit-computer/Housings_LCC.pretty/PLCC-28_SMD-Socket.kicad_mod: -------------------------------------------------------------------------------- 1 | (module PLCC-28_SMD-Socket (layer F.Cu) (tedit 58FB5F99) 2 | (descr "PLCC, 28 pins, surface mount") 3 | (tags "plcc smt") 4 | (attr smd) 5 | (fp_text reference REF** (at 0 -10.09) (layer F.SilkS) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_text value PLCC-28_SMD-Socket (at 0 10.09) (layer F.Fab) 9 | (effects (font (size 1 1) (thickness 0.15))) 10 | ) 11 | (fp_line (start -8.09 -9.09) (end -9.09 -8.09) (layer F.Fab) (width 0.1)) 12 | (fp_line (start -9.09 -8.09) (end -9.09 9.09) (layer F.Fab) (width 0.1)) 13 | (fp_line (start -9.09 9.09) (end 9.09 9.09) (layer F.Fab) (width 0.1)) 14 | (fp_line (start 9.09 9.09) (end 9.09 -9.09) (layer F.Fab) (width 0.1)) 15 | (fp_line (start 9.09 -9.09) (end -8.09 -9.09) (layer F.Fab) (width 0.1)) 16 | (fp_line (start -9.55 -9.55) (end -9.55 9.55) (layer F.CrtYd) (width 0.05)) 17 | (fp_line (start -9.55 9.55) (end 9.55 9.55) (layer F.CrtYd) (width 0.05)) 18 | (fp_line (start 9.55 9.55) (end 9.55 -9.55) (layer F.CrtYd) (width 0.05)) 19 | (fp_line (start 9.55 -9.55) (end -9.55 -9.55) (layer F.CrtYd) (width 0.05)) 20 | (fp_line (start -5.285 -6.285) (end -6.285 -5.285) (layer F.Fab) (width 0.1)) 21 | (fp_line (start -6.285 -5.285) (end -6.285 6.285) (layer F.Fab) (width 0.1)) 22 | (fp_line (start -6.285 6.285) (end 6.285 6.285) (layer F.Fab) (width 0.1)) 23 | (fp_line (start 6.285 6.285) (end 6.285 -6.285) (layer F.Fab) (width 0.1)) 24 | (fp_line (start 6.285 -6.285) (end -5.285 -6.285) (layer F.Fab) (width 0.1)) 25 | (fp_line (start -7.82 -7.82) (end -7.82 7.82) (layer F.Fab) (width 0.1)) 26 | (fp_line (start -7.82 7.82) (end 7.82 7.82) (layer F.Fab) (width 0.1)) 27 | (fp_line (start 7.82 7.82) (end 7.82 -7.82) (layer F.Fab) (width 0.1)) 28 | (fp_line (start 7.82 -7.82) (end -7.82 -7.82) (layer F.Fab) (width 0.1)) 29 | (fp_line (start -0.5 -9.09) (end 0 -8.09) (layer F.Fab) (width 0.1)) 30 | (fp_line (start 0 -8.09) (end 0.5 -9.09) (layer F.Fab) (width 0.1)) 31 | (fp_line (start -1 -9.24) (end -8.24 -9.24) (layer F.SilkS) (width 0.12)) 32 | (fp_line (start -8.24 -9.24) (end -9.24 -8.24) (layer F.SilkS) (width 0.12)) 33 | (fp_line (start -9.24 -8.24) (end -9.24 9.24) (layer F.SilkS) (width 0.12)) 34 | (fp_line (start -9.24 9.24) (end 9.24 9.24) (layer F.SilkS) (width 0.12)) 35 | (fp_line (start 9.24 9.24) (end 9.24 -9.24) (layer F.SilkS) (width 0.12)) 36 | (fp_line (start 9.24 -9.24) (end 1 -9.24) (layer F.SilkS) (width 0.12)) 37 | (fp_line (start -4.785 -6.435) (end -5.285 -6.435) (layer F.SilkS) (width 0.1)) 38 | (fp_line (start -5.285 -6.435) (end -6.435 -5.285) (layer F.SilkS) (width 0.1)) 39 | (fp_line (start -6.435 -5.285) (end -6.435 -4.785) (layer F.SilkS) (width 0.1)) 40 | (fp_line (start 4.785 -6.435) (end 6.435 -6.435) (layer F.SilkS) (width 0.1)) 41 | (fp_line (start 6.435 -6.435) (end 6.435 -4.785) (layer F.SilkS) (width 0.1)) 42 | (fp_line (start -4.785 6.435) (end -6.435 6.435) (layer F.SilkS) (width 0.1)) 43 | (fp_line (start -6.435 6.435) (end -6.435 4.785) (layer F.SilkS) (width 0.1)) 44 | (fp_line (start 4.785 6.435) (end 6.435 6.435) (layer F.SilkS) (width 0.1)) 45 | (fp_line (start 6.435 6.435) (end 6.435 4.785) (layer F.SilkS) (width 0.1)) 46 | (pad 1 smd rect (at 0 -5.3225) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 47 | (pad 2 smd rect (at -1.27 -5.3225) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 48 | (pad 3 smd rect (at -2.54 -5.3225) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 49 | (pad 4 smd rect (at -3.81 -5.3225) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 50 | (pad 28 smd rect (at 1.27 -5.3225) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 51 | (pad 27 smd rect (at 2.54 -5.3225) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 52 | (pad 26 smd rect (at 3.81 -5.3225) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 53 | (pad 5 smd rect (at -5.3225 -3.81) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 54 | (pad 6 smd rect (at -5.3225 -2.54) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 55 | (pad 7 smd rect (at -5.3225 -1.27) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 56 | (pad 8 smd rect (at -5.3225 0) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 57 | (pad 9 smd rect (at -5.3225 1.27) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 58 | (pad 10 smd rect (at -5.3225 2.54) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 59 | (pad 11 smd rect (at -5.3225 3.81) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 60 | (pad 12 smd rect (at -3.81 5.3225) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 61 | (pad 13 smd rect (at -2.54 5.3225) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 62 | (pad 14 smd rect (at -1.27 5.3225) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 63 | (pad 15 smd rect (at 0 5.3225) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 64 | (pad 16 smd rect (at 1.27 5.3225) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 65 | (pad 17 smd rect (at 2.54 5.3225) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 66 | (pad 18 smd rect (at 3.81 5.3225) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 67 | (pad 19 smd rect (at 5.3225 3.81) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 68 | (pad 20 smd rect (at 5.3225 2.54) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 69 | (pad 21 smd rect (at 5.3225 1.27) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 70 | (pad 22 smd rect (at 5.3225 0) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 71 | (pad 23 smd rect (at 5.3225 -1.27) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 72 | (pad 24 smd rect (at 5.3225 -2.54) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 73 | (pad 25 smd rect (at 5.3225 -3.81) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 74 | (fp_text user %R (at 0 0) (layer F.Fab) 75 | (effects (font (size 1 1) (thickness 0.15))) 76 | ) 77 | (model ${KISYS3DMOD}/Housings_LCC.3dshapes/PLCC-28_SMD-Socket.wrl 78 | (at (xyz 0 0 0)) 79 | (scale (xyz 1 1 1)) 80 | (rotate (xyz 0 0 0)) 81 | ) 82 | ) -------------------------------------------------------------------------------- /MK1_CPU/8bit-computer/Housings_LCC.pretty/PLCC-28_THT-Socket.kicad_mod: -------------------------------------------------------------------------------- 1 | (module PLCC-28_THT-Socket (layer F.Cu) (tedit 58FB5F08) 2 | (descr "PLCC, 28 pins, through hole") 3 | (tags "plcc leaded") 4 | (fp_text reference REF** (at -1.27 -6.215) (layer F.SilkS) 5 | (effects (font (size 1 1) (thickness 0.15))) 6 | ) 7 | (fp_text value PLCC-28_THT-Socket (at -1.27 13.835) (layer F.Fab) 8 | (effects (font (size 1 1) (thickness 0.15))) 9 | ) 10 | (fp_line (start -9.295 -5.215) (end -10.295 -4.215) (layer F.Fab) (width 0.1)) 11 | (fp_line (start -10.295 -4.215) (end -10.295 12.835) (layer F.Fab) (width 0.1)) 12 | (fp_line (start -10.295 12.835) (end 7.755 12.835) (layer F.Fab) (width 0.1)) 13 | (fp_line (start 7.755 12.835) (end 7.755 -5.215) (layer F.Fab) (width 0.1)) 14 | (fp_line (start 7.755 -5.215) (end -9.295 -5.215) (layer F.Fab) (width 0.1)) 15 | (fp_line (start -10.77 -5.69) (end -10.77 13.31) (layer F.CrtYd) (width 0.05)) 16 | (fp_line (start -10.77 13.31) (end 8.23 13.31) (layer F.CrtYd) (width 0.05)) 17 | (fp_line (start 8.23 13.31) (end 8.23 -5.69) (layer F.CrtYd) (width 0.05)) 18 | (fp_line (start 8.23 -5.69) (end -10.77 -5.69) (layer F.CrtYd) (width 0.05)) 19 | (fp_line (start -7.755 -2.675) (end -7.755 10.295) (layer F.Fab) (width 0.1)) 20 | (fp_line (start -7.755 10.295) (end 5.215 10.295) (layer F.Fab) (width 0.1)) 21 | (fp_line (start 5.215 10.295) (end 5.215 -2.675) (layer F.Fab) (width 0.1)) 22 | (fp_line (start 5.215 -2.675) (end -7.755 -2.675) (layer F.Fab) (width 0.1)) 23 | (fp_line (start -1.77 -5.215) (end -1.27 -4.215) (layer F.Fab) (width 0.1)) 24 | (fp_line (start -1.27 -4.215) (end -0.77 -5.215) (layer F.Fab) (width 0.1)) 25 | (fp_line (start -2.27 -5.315) (end -9.395 -5.315) (layer F.SilkS) (width 0.12)) 26 | (fp_line (start -9.395 -5.315) (end -10.395 -4.315) (layer F.SilkS) (width 0.12)) 27 | (fp_line (start -10.395 -4.315) (end -10.395 12.935) (layer F.SilkS) (width 0.12)) 28 | (fp_line (start -10.395 12.935) (end 7.855 12.935) (layer F.SilkS) (width 0.12)) 29 | (fp_line (start 7.855 12.935) (end 7.855 -5.315) (layer F.SilkS) (width 0.12)) 30 | (fp_line (start 7.855 -5.315) (end -0.27 -5.315) (layer F.SilkS) (width 0.12)) 31 | (pad 1 thru_hole rect (at 0 0) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 32 | (pad 3 thru_hole circle (at -2.54 0) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 33 | (pad 27 thru_hole circle (at 2.54 0) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 34 | (pad 25 thru_hole circle (at 5.08 0) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 35 | (pad 2 thru_hole circle (at -2.54 -2.54) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 36 | (pad 4 thru_hole circle (at -5.08 -2.54) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 37 | (pad 28 thru_hole circle (at 0 -2.54) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 38 | (pad 26 thru_hole circle (at 2.54 -2.54) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 39 | (pad 6 thru_hole circle (at -5.08 0) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 40 | (pad 8 thru_hole circle (at -5.08 2.54) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 41 | (pad 10 thru_hole circle (at -5.08 5.08) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 42 | (pad 5 thru_hole circle (at -7.62 0) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 43 | (pad 7 thru_hole circle (at -7.62 2.54) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 44 | (pad 9 thru_hole circle (at -7.62 5.08) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 45 | (pad 11 thru_hole circle (at -7.62 7.62) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 46 | (pad 13 thru_hole circle (at -5.08 7.62) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 47 | (pad 15 thru_hole circle (at -2.54 7.62) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 48 | (pad 17 thru_hole circle (at 0 7.62) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 49 | (pad 19 thru_hole circle (at 2.54 7.62) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 50 | (pad 12 thru_hole circle (at -5.08 10.16) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 51 | (pad 14 thru_hole circle (at -2.54 10.16) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 52 | (pad 16 thru_hole circle (at 0 10.16) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 53 | (pad 18 thru_hole circle (at 2.54 10.16) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 54 | (pad 20 thru_hole circle (at 2.54 5.08) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 55 | (pad 22 thru_hole circle (at 2.54 2.54) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 56 | (pad 24 thru_hole circle (at 2.54 0) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 57 | (pad 26 thru_hole circle (at 2.54 -2.54) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 58 | (pad 19 thru_hole circle (at 5.08 7.62) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 59 | (pad 21 thru_hole circle (at 5.08 5.08) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 60 | (pad 23 thru_hole circle (at 5.08 2.54) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 61 | (pad 25 thru_hole circle (at 5.08 0) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 62 | (fp_text user %R (at -1.27 3.81) (layer F.Fab) 63 | (effects (font (size 1 1) (thickness 0.15))) 64 | ) 65 | (model ${KISYS3DMOD}/Housings_LCC.3dshapes/PLCC-28_THT-Socket.wrl 66 | (at (xyz 0 0 0)) 67 | (scale (xyz 1 1 1)) 68 | (rotate (xyz 0 0 0)) 69 | ) 70 | ) -------------------------------------------------------------------------------- /MK1_CPU/8bit-computer/Housings_LCC.pretty/PLCC-32.kicad_mod: -------------------------------------------------------------------------------- 1 | (module PLCC-32 (layer F.Cu) (tedit 58FB5F99) 2 | (descr "PLCC, 32 pins, surface mount") 3 | (tags "plcc smt") 4 | (attr smd) 5 | (fp_text reference REF** (at 0 -8.555) (layer F.SilkS) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_text value PLCC-32 (at 0 8.555) (layer F.Fab) 9 | (effects (font (size 1 1) (thickness 0.15))) 10 | ) 11 | (fp_line (start -5.285 -7.555) (end -6.285 -6.555) (layer F.Fab) (width 0.1)) 12 | (fp_line (start -6.285 -6.555) (end -6.285 7.555) (layer F.Fab) (width 0.1)) 13 | (fp_line (start -6.285 7.555) (end 6.285 7.555) (layer F.Fab) (width 0.1)) 14 | (fp_line (start 6.285 7.555) (end 6.285 -7.555) (layer F.Fab) (width 0.1)) 15 | (fp_line (start 6.285 -7.555) (end -5.285 -7.555) (layer F.Fab) (width 0.1)) 16 | (fp_line (start -6.75 -8.05) (end -6.75 8.05) (layer F.CrtYd) (width 0.05)) 17 | (fp_line (start -6.75 8.05) (end 6.75 8.05) (layer F.CrtYd) (width 0.05)) 18 | (fp_line (start 6.75 8.05) (end 6.75 -8.05) (layer F.CrtYd) (width 0.05)) 19 | (fp_line (start 6.75 -8.05) (end -6.75 -8.05) (layer F.CrtYd) (width 0.05)) 20 | (fp_line (start -0.5 -7.555) (end 0 -6.555) (layer F.Fab) (width 0.1)) 21 | (fp_line (start 0 -6.555) (end 0.5 -7.555) (layer F.Fab) (width 0.1)) 22 | (fp_line (start -4.785 -7.705) (end -5.285 -7.705) (layer F.SilkS) (width 0.1)) 23 | (fp_line (start -5.285 -7.705) (end -6.435 -6.555) (layer F.SilkS) (width 0.1)) 24 | (fp_line (start -6.435 -6.555) (end -6.435 -6.055) (layer F.SilkS) (width 0.1)) 25 | (fp_line (start 4.785 -7.705) (end 6.435 -7.705) (layer F.SilkS) (width 0.1)) 26 | (fp_line (start 6.435 -7.705) (end 6.435 -6.055) (layer F.SilkS) (width 0.1)) 27 | (fp_line (start -4.785 7.705) (end -6.435 7.705) (layer F.SilkS) (width 0.1)) 28 | (fp_line (start -6.435 7.705) (end -6.435 6.055) (layer F.SilkS) (width 0.1)) 29 | (fp_line (start 4.785 7.705) (end 6.435 7.705) (layer F.SilkS) (width 0.1)) 30 | (fp_line (start 6.435 7.705) (end 6.435 6.055) (layer F.SilkS) (width 0.1)) 31 | (pad 1 smd rect (at -0.635 -6.5925) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 32 | (pad 2 smd rect (at -1.905 -6.5925) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 33 | (pad 3 smd rect (at -3.175 -6.5925) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 34 | (pad 4 smd rect (at -4.445 -6.5925) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 35 | (pad 32 smd rect (at 0.635 -6.5925) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 36 | (pad 31 smd rect (at 1.905 -6.5925) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 37 | (pad 30 smd rect (at 3.175 -6.5925) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 38 | (pad 29 smd rect (at 4.445 -6.5925) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 39 | (pad 5 smd rect (at -5.3225 -4.445) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 40 | (pad 6 smd rect (at -5.3225 -3.175) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 41 | (pad 7 smd rect (at -5.3225 -1.905) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 42 | (pad 8 smd rect (at -5.3225 -0.635) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 43 | (pad 9 smd rect (at -5.3225 0.635) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 44 | (pad 10 smd rect (at -5.3225 1.905) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 45 | (pad 11 smd rect (at -5.3225 3.175) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 46 | (pad 12 smd rect (at -5.3225 4.445) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 47 | (pad 13 smd rect (at -4.445 6.5925) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 48 | (pad 14 smd rect (at -3.175 6.5925) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 49 | (pad 15 smd rect (at -1.905 6.5925) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 50 | (pad 16 smd rect (at -0.635 6.5925) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 51 | (pad 17 smd rect (at 0.635 6.5925) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 52 | (pad 18 smd rect (at 1.905 6.5925) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 53 | (pad 19 smd rect (at 3.175 6.5925) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 54 | (pad 20 smd rect (at 4.445 6.5925) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 55 | (pad 21 smd rect (at 5.3225 4.445) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 56 | (pad 22 smd rect (at 5.3225 3.175) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 57 | (pad 23 smd rect (at 5.3225 1.905) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 58 | (pad 24 smd rect (at 5.3225 0.635) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 59 | (pad 25 smd rect (at 5.3225 -0.635) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 60 | (pad 26 smd rect (at 5.3225 -1.905) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 61 | (pad 27 smd rect (at 5.3225 -3.175) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 62 | (pad 28 smd rect (at 5.3225 -4.445) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 63 | (fp_text user %R (at 0 0) (layer F.Fab) 64 | (effects (font (size 1 1) (thickness 0.15))) 65 | ) 66 | (model ${KISYS3DMOD}/Housings_LCC.3dshapes/PLCC-32.wrl 67 | (at (xyz 0 0 0)) 68 | (scale (xyz 1 1 1)) 69 | (rotate (xyz 0 0 0)) 70 | ) 71 | ) -------------------------------------------------------------------------------- /MK1_CPU/8bit-computer/Housings_LCC.pretty/PLCC-32_SMD-Socket.kicad_mod: -------------------------------------------------------------------------------- 1 | (module PLCC-32_SMD-Socket (layer F.Cu) (tedit 58FB5F99) 2 | (descr "PLCC, 32 pins, surface mount") 3 | (tags "plcc smt") 4 | (attr smd) 5 | (fp_text reference REF** (at 0 -11.375) (layer F.SilkS) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_text value PLCC-32_SMD-Socket (at 0 11.375) (layer F.Fab) 9 | (effects (font (size 1 1) (thickness 0.15))) 10 | ) 11 | (fp_line (start -8.09 -10.375) (end -9.09 -9.375) (layer F.Fab) (width 0.1)) 12 | (fp_line (start -9.09 -9.375) (end -9.09 10.375) (layer F.Fab) (width 0.1)) 13 | (fp_line (start -9.09 10.375) (end 9.09 10.375) (layer F.Fab) (width 0.1)) 14 | (fp_line (start 9.09 10.375) (end 9.09 -10.375) (layer F.Fab) (width 0.1)) 15 | (fp_line (start 9.09 -10.375) (end -8.09 -10.375) (layer F.Fab) (width 0.1)) 16 | (fp_line (start -9.55 -10.85) (end -9.55 10.85) (layer F.CrtYd) (width 0.05)) 17 | (fp_line (start -9.55 10.85) (end 9.55 10.85) (layer F.CrtYd) (width 0.05)) 18 | (fp_line (start 9.55 10.85) (end 9.55 -10.85) (layer F.CrtYd) (width 0.05)) 19 | (fp_line (start 9.55 -10.85) (end -9.55 -10.85) (layer F.CrtYd) (width 0.05)) 20 | (fp_line (start -5.285 -7.555) (end -6.285 -6.555) (layer F.Fab) (width 0.1)) 21 | (fp_line (start -6.285 -6.555) (end -6.285 7.555) (layer F.Fab) (width 0.1)) 22 | (fp_line (start -6.285 7.555) (end 6.285 7.555) (layer F.Fab) (width 0.1)) 23 | (fp_line (start 6.285 7.555) (end 6.285 -7.555) (layer F.Fab) (width 0.1)) 24 | (fp_line (start 6.285 -7.555) (end -5.285 -7.555) (layer F.Fab) (width 0.1)) 25 | (fp_line (start -7.82 -9.105) (end -7.82 9.105) (layer F.Fab) (width 0.1)) 26 | (fp_line (start -7.82 9.105) (end 7.82 9.105) (layer F.Fab) (width 0.1)) 27 | (fp_line (start 7.82 9.105) (end 7.82 -9.105) (layer F.Fab) (width 0.1)) 28 | (fp_line (start 7.82 -9.105) (end -7.82 -9.105) (layer F.Fab) (width 0.1)) 29 | (fp_line (start -0.5 -10.375) (end 0 -9.375) (layer F.Fab) (width 0.1)) 30 | (fp_line (start 0 -9.375) (end 0.5 -10.375) (layer F.Fab) (width 0.1)) 31 | (fp_line (start -1 -10.525) (end -8.24 -10.525) (layer F.SilkS) (width 0.12)) 32 | (fp_line (start -8.24 -10.525) (end -9.24 -9.525) (layer F.SilkS) (width 0.12)) 33 | (fp_line (start -9.24 -9.525) (end -9.24 10.525) (layer F.SilkS) (width 0.12)) 34 | (fp_line (start -9.24 10.525) (end 9.24 10.525) (layer F.SilkS) (width 0.12)) 35 | (fp_line (start 9.24 10.525) (end 9.24 -10.525) (layer F.SilkS) (width 0.12)) 36 | (fp_line (start 9.24 -10.525) (end 1 -10.525) (layer F.SilkS) (width 0.12)) 37 | (fp_line (start -4.785 -7.705) (end -5.285 -7.705) (layer F.SilkS) (width 0.1)) 38 | (fp_line (start -5.285 -7.705) (end -6.435 -6.555) (layer F.SilkS) (width 0.1)) 39 | (fp_line (start -6.435 -6.555) (end -6.435 -6.055) (layer F.SilkS) (width 0.1)) 40 | (fp_line (start 4.785 -7.705) (end 6.435 -7.705) (layer F.SilkS) (width 0.1)) 41 | (fp_line (start 6.435 -7.705) (end 6.435 -6.055) (layer F.SilkS) (width 0.1)) 42 | (fp_line (start -4.785 7.705) (end -6.435 7.705) (layer F.SilkS) (width 0.1)) 43 | (fp_line (start -6.435 7.705) (end -6.435 6.055) (layer F.SilkS) (width 0.1)) 44 | (fp_line (start 4.785 7.705) (end 6.435 7.705) (layer F.SilkS) (width 0.1)) 45 | (fp_line (start 6.435 7.705) (end 6.435 6.055) (layer F.SilkS) (width 0.1)) 46 | (pad 1 smd rect (at -0.635 -6.5925) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 47 | (pad 2 smd rect (at -1.905 -6.5925) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 48 | (pad 3 smd rect (at -3.175 -6.5925) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 49 | (pad 4 smd rect (at -4.445 -6.5925) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 50 | (pad 32 smd rect (at 0.635 -6.5925) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 51 | (pad 31 smd rect (at 1.905 -6.5925) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 52 | (pad 30 smd rect (at 3.175 -6.5925) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 53 | (pad 29 smd rect (at 4.445 -6.5925) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 54 | (pad 5 smd rect (at -5.3225 -4.445) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 55 | (pad 6 smd rect (at -5.3225 -3.175) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 56 | (pad 7 smd rect (at -5.3225 -1.905) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 57 | (pad 8 smd rect (at -5.3225 -0.635) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 58 | (pad 9 smd rect (at -5.3225 0.635) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 59 | (pad 10 smd rect (at -5.3225 1.905) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 60 | (pad 11 smd rect (at -5.3225 3.175) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 61 | (pad 12 smd rect (at -5.3225 4.445) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 62 | (pad 13 smd rect (at -4.445 6.5925) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 63 | (pad 14 smd rect (at -3.175 6.5925) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 64 | (pad 15 smd rect (at -1.905 6.5925) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 65 | (pad 16 smd rect (at -0.635 6.5925) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 66 | (pad 17 smd rect (at 0.635 6.5925) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 67 | (pad 18 smd rect (at 1.905 6.5925) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 68 | (pad 19 smd rect (at 3.175 6.5925) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 69 | (pad 20 smd rect (at 4.445 6.5925) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 70 | (pad 21 smd rect (at 5.3225 4.445) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 71 | (pad 22 smd rect (at 5.3225 3.175) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 72 | (pad 23 smd rect (at 5.3225 1.905) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 73 | (pad 24 smd rect (at 5.3225 0.635) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 74 | (pad 25 smd rect (at 5.3225 -0.635) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 75 | (pad 26 smd rect (at 5.3225 -1.905) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 76 | (pad 27 smd rect (at 5.3225 -3.175) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 77 | (pad 28 smd rect (at 5.3225 -4.445) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 78 | (fp_text user %R (at 0 0) (layer F.Fab) 79 | (effects (font (size 1 1) (thickness 0.15))) 80 | ) 81 | (model ${KISYS3DMOD}/Housings_LCC.3dshapes/PLCC-32_SMD-Socket.wrl 82 | (at (xyz 0 0 0)) 83 | (scale (xyz 1 1 1)) 84 | (rotate (xyz 0 0 0)) 85 | ) 86 | ) -------------------------------------------------------------------------------- /MK1_CPU/8bit-computer/Housings_LCC.pretty/PLCC-32_THT-Socket.kicad_mod: -------------------------------------------------------------------------------- 1 | (module PLCC-32_THT-Socket (layer F.Cu) (tedit 5E77F70F) 2 | (descr "PLCC, 32 pins, through hole") 3 | (tags "plcc leaded") 4 | (fp_text reference REF** (at -1.27 -6.22) (layer F.SilkS) 5 | (effects (font (size 1 1) (thickness 0.15))) 6 | ) 7 | (fp_text value PLCC-32_THT-Socket (at -1.27 16.38) (layer F.Fab) 8 | (effects (font (size 1 1) (thickness 0.15))) 9 | ) 10 | (fp_line (start -9.295 -5.22) (end -10.295 -4.22) (layer F.Fab) (width 0.1)) 11 | (fp_line (start -10.295 -4.22) (end -10.295 15.38) (layer F.Fab) (width 0.1)) 12 | (fp_line (start -10.295 15.38) (end 7.755 15.38) (layer F.Fab) (width 0.1)) 13 | (fp_line (start 7.755 15.38) (end 7.755 -5.22) (layer F.Fab) (width 0.1)) 14 | (fp_line (start 7.755 -5.22) (end -9.295 -5.22) (layer F.Fab) (width 0.1)) 15 | (fp_line (start -10.77 -5.72) (end -10.77 15.88) (layer F.CrtYd) (width 0.05)) 16 | (fp_line (start -10.77 15.88) (end 8.23 15.88) (layer F.CrtYd) (width 0.05)) 17 | (fp_line (start 8.23 15.88) (end 8.23 -5.72) (layer F.CrtYd) (width 0.05)) 18 | (fp_line (start 8.23 -5.72) (end -10.77 -5.72) (layer F.CrtYd) (width 0.05)) 19 | (fp_line (start -7.755 -2.68) (end -7.755 12.84) (layer F.Fab) (width 0.1)) 20 | (fp_line (start -7.755 12.84) (end 5.215 12.84) (layer F.Fab) (width 0.1)) 21 | (fp_line (start 5.215 12.84) (end 5.215 -2.68) (layer F.Fab) (width 0.1)) 22 | (fp_line (start 5.215 -2.68) (end -7.755 -2.68) (layer F.Fab) (width 0.1)) 23 | (fp_line (start -1.77 -5.22) (end -1.27 -4.22) (layer F.Fab) (width 0.1)) 24 | (fp_line (start -1.27 -4.22) (end -0.77 -5.22) (layer F.Fab) (width 0.1)) 25 | (fp_line (start -2.27 -5.32) (end -9.395 -5.32) (layer F.SilkS) (width 0.12)) 26 | (fp_line (start -9.395 -5.32) (end -10.395 -4.32) (layer F.SilkS) (width 0.12)) 27 | (fp_line (start -10.395 -4.32) (end -10.395 15.48) (layer F.SilkS) (width 0.12)) 28 | (fp_line (start -10.395 15.48) (end 7.855 15.48) (layer F.SilkS) (width 0.12)) 29 | (fp_line (start 7.855 15.48) (end 7.855 -5.32) (layer F.SilkS) (width 0.12)) 30 | (fp_line (start 7.855 -5.32) (end -0.27 -5.32) (layer F.SilkS) (width 0.12)) 31 | (fp_text user %V (at -1.27 5.08 90) (layer F.SilkS) 32 | (effects (font (size 1 1) (thickness 0.15))) 33 | ) 34 | (pad 1 thru_hole rect (at 0 0) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 35 | (pad 3 thru_hole circle (at -2.54 0) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 36 | (pad 31 thru_hole circle (at 2.54 0) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 37 | (pad 29 thru_hole circle (at 5.08 0) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 38 | (pad 2 thru_hole circle (at -2.54 -2.54) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 39 | (pad 4 thru_hole circle (at -5.08 -2.54) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 40 | (pad 32 thru_hole circle (at 0 -2.54) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 41 | (pad 30 thru_hole circle (at 2.54 -2.54) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 42 | (pad 6 thru_hole circle (at -5.08 0) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 43 | (pad 8 thru_hole circle (at -5.08 2.54) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 44 | (pad 10 thru_hole circle (at -5.08 5.08) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 45 | (pad 12 thru_hole circle (at -5.08 7.62) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 46 | (pad 5 thru_hole circle (at -7.62 0) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 47 | (pad 7 thru_hole circle (at -7.62 2.54) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 48 | (pad 9 thru_hole circle (at -7.62 5.08) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 49 | (pad 11 thru_hole circle (at -7.62 7.62) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 50 | (pad 13 thru_hole circle (at -7.62 10.16) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 51 | (pad 15 thru_hole circle (at -5.08 10.16) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 52 | (pad 17 thru_hole circle (at -2.54 10.16) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 53 | (pad 19 thru_hole circle (at 0 10.16) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 54 | (pad 14 thru_hole circle (at -5.08 12.7) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 55 | (pad 16 thru_hole circle (at -2.54 12.7) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 56 | (pad 18 thru_hole circle (at 0 12.7) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 57 | (pad 20 thru_hole circle (at 2.54 12.7) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 58 | (pad 22 thru_hole circle (at 2.54 10.16) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 59 | (pad 24 thru_hole circle (at 2.54 7.62) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 60 | (pad 26 thru_hole circle (at 2.54 5.08) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 61 | (pad 28 thru_hole circle (at 2.54 2.54) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 62 | (pad 21 thru_hole circle (at 5.08 10.16) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 63 | (pad 23 thru_hole circle (at 5.08 7.62) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 64 | (pad 25 thru_hole circle (at 5.08 5.08) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 65 | (pad 27 thru_hole circle (at 5.08 2.54) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 66 | (model ${KISYS3DMOD}/Housings_LCC.3dshapes/PLCC-32_THT-Socket.wrl 67 | (at (xyz 0 0 0)) 68 | (scale (xyz 1 1 1)) 69 | (rotate (xyz 0 0 0)) 70 | ) 71 | ) 72 | -------------------------------------------------------------------------------- /MK1_CPU/8bit-computer/Housings_LCC.pretty/PLCC-44.kicad_mod: -------------------------------------------------------------------------------- 1 | (module PLCC-44 (layer F.Cu) (tedit 58FB5F99) 2 | (descr "PLCC, 44 pins, surface mount") 3 | (tags "plcc smt") 4 | (attr smd) 5 | (fp_text reference REF** (at 0 -9.825) (layer F.SilkS) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_text value PLCC-44 (at 0 9.825) (layer F.Fab) 9 | (effects (font (size 1 1) (thickness 0.15))) 10 | ) 11 | (fp_line (start -7.825 -8.825) (end -8.825 -7.825) (layer F.Fab) (width 0.1)) 12 | (fp_line (start -8.825 -7.825) (end -8.825 8.825) (layer F.Fab) (width 0.1)) 13 | (fp_line (start -8.825 8.825) (end 8.825 8.825) (layer F.Fab) (width 0.1)) 14 | (fp_line (start 8.825 8.825) (end 8.825 -8.825) (layer F.Fab) (width 0.1)) 15 | (fp_line (start 8.825 -8.825) (end -7.825 -8.825) (layer F.Fab) (width 0.1)) 16 | (fp_line (start -9.3 -9.3) (end -9.3 9.3) (layer F.CrtYd) (width 0.05)) 17 | (fp_line (start -9.3 9.3) (end 9.3 9.3) (layer F.CrtYd) (width 0.05)) 18 | (fp_line (start 9.3 9.3) (end 9.3 -9.3) (layer F.CrtYd) (width 0.05)) 19 | (fp_line (start 9.3 -9.3) (end -9.3 -9.3) (layer F.CrtYd) (width 0.05)) 20 | (fp_line (start -0.5 -8.825) (end 0 -7.825) (layer F.Fab) (width 0.1)) 21 | (fp_line (start 0 -7.825) (end 0.5 -8.825) (layer F.Fab) (width 0.1)) 22 | (fp_line (start -7.325 -8.975) (end -7.825 -8.975) (layer F.SilkS) (width 0.1)) 23 | (fp_line (start -7.825 -8.975) (end -8.975 -7.825) (layer F.SilkS) (width 0.1)) 24 | (fp_line (start -8.975 -7.825) (end -8.975 -7.325) (layer F.SilkS) (width 0.1)) 25 | (fp_line (start 7.325 -8.975) (end 8.975 -8.975) (layer F.SilkS) (width 0.1)) 26 | (fp_line (start 8.975 -8.975) (end 8.975 -7.325) (layer F.SilkS) (width 0.1)) 27 | (fp_line (start -7.325 8.975) (end -8.975 8.975) (layer F.SilkS) (width 0.1)) 28 | (fp_line (start -8.975 8.975) (end -8.975 7.325) (layer F.SilkS) (width 0.1)) 29 | (fp_line (start 7.325 8.975) (end 8.975 8.975) (layer F.SilkS) (width 0.1)) 30 | (fp_line (start 8.975 8.975) (end 8.975 7.325) (layer F.SilkS) (width 0.1)) 31 | (pad 1 smd rect (at 0 -7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 32 | (pad 2 smd rect (at -1.27 -7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 33 | (pad 3 smd rect (at -2.54 -7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 34 | (pad 4 smd rect (at -3.81 -7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 35 | (pad 5 smd rect (at -5.08 -7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 36 | (pad 6 smd rect (at -6.35 -7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 37 | (pad 44 smd rect (at 1.27 -7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 38 | (pad 43 smd rect (at 2.54 -7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 39 | (pad 42 smd rect (at 3.81 -7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 40 | (pad 41 smd rect (at 5.08 -7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 41 | (pad 40 smd rect (at 6.35 -7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 42 | (pad 7 smd rect (at -7.8625 -6.35) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 43 | (pad 8 smd rect (at -7.8625 -5.08) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 44 | (pad 9 smd rect (at -7.8625 -3.81) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 45 | (pad 10 smd rect (at -7.8625 -2.54) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 46 | (pad 11 smd rect (at -7.8625 -1.27) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 47 | (pad 12 smd rect (at -7.8625 0) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 48 | (pad 13 smd rect (at -7.8625 1.27) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 49 | (pad 14 smd rect (at -7.8625 2.54) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 50 | (pad 15 smd rect (at -7.8625 3.81) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 51 | (pad 16 smd rect (at -7.8625 5.08) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 52 | (pad 17 smd rect (at -7.8625 6.35) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 53 | (pad 18 smd rect (at -6.35 7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 54 | (pad 19 smd rect (at -5.08 7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 55 | (pad 20 smd rect (at -3.81 7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 56 | (pad 21 smd rect (at -2.54 7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 57 | (pad 22 smd rect (at -1.27 7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 58 | (pad 23 smd rect (at 0 7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 59 | (pad 24 smd rect (at 1.27 7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 60 | (pad 25 smd rect (at 2.54 7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 61 | (pad 26 smd rect (at 3.81 7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 62 | (pad 27 smd rect (at 5.08 7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 63 | (pad 28 smd rect (at 6.35 7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 64 | (pad 29 smd rect (at 7.8625 6.35) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 65 | (pad 30 smd rect (at 7.8625 5.08) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 66 | (pad 31 smd rect (at 7.8625 3.81) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 67 | (pad 32 smd rect (at 7.8625 2.54) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 68 | (pad 33 smd rect (at 7.8625 1.27) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 69 | (pad 34 smd rect (at 7.8625 0) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 70 | (pad 35 smd rect (at 7.8625 -1.27) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 71 | (pad 36 smd rect (at 7.8625 -2.54) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 72 | (pad 37 smd rect (at 7.8625 -3.81) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 73 | (pad 38 smd rect (at 7.8625 -5.08) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 74 | (pad 39 smd rect (at 7.8625 -6.35) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 75 | (fp_text user %R (at 0 0) (layer F.Fab) 76 | (effects (font (size 1 1) (thickness 0.15))) 77 | ) 78 | (model ${KISYS3DMOD}/Housings_LCC.3dshapes/PLCC-44.wrl 79 | (at (xyz 0 0 0)) 80 | (scale (xyz 1 1 1)) 81 | (rotate (xyz 0 0 0)) 82 | ) 83 | ) -------------------------------------------------------------------------------- /MK1_CPU/8bit-computer/Housings_LCC.pretty/PLCC-44_SMD-Socket.kicad_mod: -------------------------------------------------------------------------------- 1 | (module PLCC-44_SMD-Socket (layer F.Cu) (tedit 58FB5F99) 2 | (descr "PLCC, 44 pins, surface mount") 3 | (tags "plcc smt") 4 | (attr smd) 5 | (fp_text reference REF** (at 0 -12.64) (layer F.SilkS) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_text value PLCC-44_SMD-Socket (at 0 12.64) (layer F.Fab) 9 | (effects (font (size 1 1) (thickness 0.15))) 10 | ) 11 | (fp_line (start -10.64 -11.64) (end -11.64 -10.64) (layer F.Fab) (width 0.1)) 12 | (fp_line (start -11.64 -10.64) (end -11.64 11.64) (layer F.Fab) (width 0.1)) 13 | (fp_line (start -11.64 11.64) (end 11.64 11.64) (layer F.Fab) (width 0.1)) 14 | (fp_line (start 11.64 11.64) (end 11.64 -11.64) (layer F.Fab) (width 0.1)) 15 | (fp_line (start 11.64 -11.64) (end -10.64 -11.64) (layer F.Fab) (width 0.1)) 16 | (fp_line (start -12.1 -12.1) (end -12.1 12.1) (layer F.CrtYd) (width 0.05)) 17 | (fp_line (start -12.1 12.1) (end 12.1 12.1) (layer F.CrtYd) (width 0.05)) 18 | (fp_line (start 12.1 12.1) (end 12.1 -12.1) (layer F.CrtYd) (width 0.05)) 19 | (fp_line (start 12.1 -12.1) (end -12.1 -12.1) (layer F.CrtYd) (width 0.05)) 20 | (fp_line (start -7.825 -8.825) (end -8.825 -7.825) (layer F.Fab) (width 0.1)) 21 | (fp_line (start -8.825 -7.825) (end -8.825 8.825) (layer F.Fab) (width 0.1)) 22 | (fp_line (start -8.825 8.825) (end 8.825 8.825) (layer F.Fab) (width 0.1)) 23 | (fp_line (start 8.825 8.825) (end 8.825 -8.825) (layer F.Fab) (width 0.1)) 24 | (fp_line (start 8.825 -8.825) (end -7.825 -8.825) (layer F.Fab) (width 0.1)) 25 | (fp_line (start -10.37 -10.37) (end -10.37 10.37) (layer F.Fab) (width 0.1)) 26 | (fp_line (start -10.37 10.37) (end 10.37 10.37) (layer F.Fab) (width 0.1)) 27 | (fp_line (start 10.37 10.37) (end 10.37 -10.37) (layer F.Fab) (width 0.1)) 28 | (fp_line (start 10.37 -10.37) (end -10.37 -10.37) (layer F.Fab) (width 0.1)) 29 | (fp_line (start -0.5 -11.64) (end 0 -10.64) (layer F.Fab) (width 0.1)) 30 | (fp_line (start 0 -10.64) (end 0.5 -11.64) (layer F.Fab) (width 0.1)) 31 | (fp_line (start -1 -11.79) (end -10.79 -11.79) (layer F.SilkS) (width 0.12)) 32 | (fp_line (start -10.79 -11.79) (end -11.79 -10.79) (layer F.SilkS) (width 0.12)) 33 | (fp_line (start -11.79 -10.79) (end -11.79 11.79) (layer F.SilkS) (width 0.12)) 34 | (fp_line (start -11.79 11.79) (end 11.79 11.79) (layer F.SilkS) (width 0.12)) 35 | (fp_line (start 11.79 11.79) (end 11.79 -11.79) (layer F.SilkS) (width 0.12)) 36 | (fp_line (start 11.79 -11.79) (end 1 -11.79) (layer F.SilkS) (width 0.12)) 37 | (fp_line (start -7.325 -8.975) (end -7.825 -8.975) (layer F.SilkS) (width 0.1)) 38 | (fp_line (start -7.825 -8.975) (end -8.975 -7.825) (layer F.SilkS) (width 0.1)) 39 | (fp_line (start -8.975 -7.825) (end -8.975 -7.325) (layer F.SilkS) (width 0.1)) 40 | (fp_line (start 7.325 -8.975) (end 8.975 -8.975) (layer F.SilkS) (width 0.1)) 41 | (fp_line (start 8.975 -8.975) (end 8.975 -7.325) (layer F.SilkS) (width 0.1)) 42 | (fp_line (start -7.325 8.975) (end -8.975 8.975) (layer F.SilkS) (width 0.1)) 43 | (fp_line (start -8.975 8.975) (end -8.975 7.325) (layer F.SilkS) (width 0.1)) 44 | (fp_line (start 7.325 8.975) (end 8.975 8.975) (layer F.SilkS) (width 0.1)) 45 | (fp_line (start 8.975 8.975) (end 8.975 7.325) (layer F.SilkS) (width 0.1)) 46 | (pad 1 smd rect (at 0 -7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 47 | (pad 2 smd rect (at -1.27 -7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 48 | (pad 3 smd rect (at -2.54 -7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 49 | (pad 4 smd rect (at -3.81 -7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 50 | (pad 5 smd rect (at -5.08 -7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 51 | (pad 6 smd rect (at -6.35 -7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 52 | (pad 44 smd rect (at 1.27 -7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 53 | (pad 43 smd rect (at 2.54 -7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 54 | (pad 42 smd rect (at 3.81 -7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 55 | (pad 41 smd rect (at 5.08 -7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 56 | (pad 40 smd rect (at 6.35 -7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 57 | (pad 7 smd rect (at -7.8625 -6.35) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 58 | (pad 8 smd rect (at -7.8625 -5.08) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 59 | (pad 9 smd rect (at -7.8625 -3.81) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 60 | (pad 10 smd rect (at -7.8625 -2.54) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 61 | (pad 11 smd rect (at -7.8625 -1.27) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 62 | (pad 12 smd rect (at -7.8625 0) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 63 | (pad 13 smd rect (at -7.8625 1.27) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 64 | (pad 14 smd rect (at -7.8625 2.54) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 65 | (pad 15 smd rect (at -7.8625 3.81) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 66 | (pad 16 smd rect (at -7.8625 5.08) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 67 | (pad 17 smd rect (at -7.8625 6.35) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 68 | (pad 18 smd rect (at -6.35 7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 69 | (pad 19 smd rect (at -5.08 7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 70 | (pad 20 smd rect (at -3.81 7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 71 | (pad 21 smd rect (at -2.54 7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 72 | (pad 22 smd rect (at -1.27 7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 73 | (pad 23 smd rect (at 0 7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 74 | (pad 24 smd rect (at 1.27 7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 75 | (pad 25 smd rect (at 2.54 7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 76 | (pad 26 smd rect (at 3.81 7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 77 | (pad 27 smd rect (at 5.08 7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 78 | (pad 28 smd rect (at 6.35 7.8625) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 79 | (pad 29 smd rect (at 7.8625 6.35) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 80 | (pad 30 smd rect (at 7.8625 5.08) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 81 | (pad 31 smd rect (at 7.8625 3.81) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 82 | (pad 32 smd rect (at 7.8625 2.54) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 83 | (pad 33 smd rect (at 7.8625 1.27) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 84 | (pad 34 smd rect (at 7.8625 0) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 85 | (pad 35 smd rect (at 7.8625 -1.27) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 86 | (pad 36 smd rect (at 7.8625 -2.54) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 87 | (pad 37 smd rect (at 7.8625 -3.81) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 88 | (pad 38 smd rect (at 7.8625 -5.08) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 89 | (pad 39 smd rect (at 7.8625 -6.35) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 90 | (fp_text user %R (at 0 0) (layer F.Fab) 91 | (effects (font (size 1 1) (thickness 0.15))) 92 | ) 93 | (model ${KISYS3DMOD}/Housings_LCC.3dshapes/PLCC-44_SMD-Socket.wrl 94 | (at (xyz 0 0 0)) 95 | (scale (xyz 1 1 1)) 96 | (rotate (xyz 0 0 0)) 97 | ) 98 | ) -------------------------------------------------------------------------------- /MK1_CPU/8bit-computer/Housings_LCC.pretty/PLCC-44_THT-Socket.kicad_mod: -------------------------------------------------------------------------------- 1 | (module PLCC-44_THT-Socket (layer F.Cu) (tedit 58FB5F08) 2 | (descr "PLCC, 44 pins, through hole") 3 | (tags "plcc leaded") 4 | (fp_text reference REF** (at -1.27 -6.4) (layer F.SilkS) 5 | (effects (font (size 1 1) (thickness 0.15))) 6 | ) 7 | (fp_text value PLCC-44_THT-Socket (at -1.27 19.1) (layer F.Fab) 8 | (effects (font (size 1 1) (thickness 0.15))) 9 | ) 10 | (fp_line (start -12.02 -5.4) (end -13.02 -4.4) (layer F.Fab) (width 0.1)) 11 | (fp_line (start -13.02 -4.4) (end -13.02 18.1) (layer F.Fab) (width 0.1)) 12 | (fp_line (start -13.02 18.1) (end 10.48 18.1) (layer F.Fab) (width 0.1)) 13 | (fp_line (start 10.48 18.1) (end 10.48 -5.4) (layer F.Fab) (width 0.1)) 14 | (fp_line (start 10.48 -5.4) (end -12.02 -5.4) (layer F.Fab) (width 0.1)) 15 | (fp_line (start -13.52 -5.9) (end -13.52 18.6) (layer F.CrtYd) (width 0.05)) 16 | (fp_line (start -13.52 18.6) (end 10.98 18.6) (layer F.CrtYd) (width 0.05)) 17 | (fp_line (start 10.98 18.6) (end 10.98 -5.9) (layer F.CrtYd) (width 0.05)) 18 | (fp_line (start 10.98 -5.9) (end -13.52 -5.9) (layer F.CrtYd) (width 0.05)) 19 | (fp_line (start -10.48 -2.86) (end -10.48 15.56) (layer F.Fab) (width 0.1)) 20 | (fp_line (start -10.48 15.56) (end 7.94 15.56) (layer F.Fab) (width 0.1)) 21 | (fp_line (start 7.94 15.56) (end 7.94 -2.86) (layer F.Fab) (width 0.1)) 22 | (fp_line (start 7.94 -2.86) (end -10.48 -2.86) (layer F.Fab) (width 0.1)) 23 | (fp_line (start -1.77 -5.4) (end -1.27 -4.4) (layer F.Fab) (width 0.1)) 24 | (fp_line (start -1.27 -4.4) (end -0.77 -5.4) (layer F.Fab) (width 0.1)) 25 | (fp_line (start -2.27 -5.5) (end -12.12 -5.5) (layer F.SilkS) (width 0.12)) 26 | (fp_line (start -12.12 -5.5) (end -13.12 -4.5) (layer F.SilkS) (width 0.12)) 27 | (fp_line (start -13.12 -4.5) (end -13.12 18.2) (layer F.SilkS) (width 0.12)) 28 | (fp_line (start -13.12 18.2) (end 10.58 18.2) (layer F.SilkS) (width 0.12)) 29 | (fp_line (start 10.58 18.2) (end 10.58 -5.5) (layer F.SilkS) (width 0.12)) 30 | (fp_line (start 10.58 -5.5) (end -0.27 -5.5) (layer F.SilkS) (width 0.12)) 31 | (pad 1 thru_hole rect (at 0 0) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 32 | (pad 3 thru_hole circle (at -2.54 0) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 33 | (pad 5 thru_hole circle (at -5.08 0) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 34 | (pad 43 thru_hole circle (at 2.54 0) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 35 | (pad 41 thru_hole circle (at 5.08 0) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 36 | (pad 39 thru_hole circle (at 7.62 0) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 37 | (pad 2 thru_hole circle (at -2.54 -2.54) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 38 | (pad 4 thru_hole circle (at -5.08 -2.54) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 39 | (pad 6 thru_hole circle (at -7.62 -2.54) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 40 | (pad 44 thru_hole circle (at 0 -2.54) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 41 | (pad 42 thru_hole circle (at 2.54 -2.54) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 42 | (pad 40 thru_hole circle (at 5.08 -2.54) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 43 | (pad 8 thru_hole circle (at -7.62 0) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 44 | (pad 10 thru_hole circle (at -7.62 2.54) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 45 | (pad 12 thru_hole circle (at -7.62 5.08) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 46 | (pad 14 thru_hole circle (at -7.62 7.62) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 47 | (pad 16 thru_hole circle (at -7.62 10.16) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 48 | (pad 7 thru_hole circle (at -10.16 0) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 49 | (pad 9 thru_hole circle (at -10.16 2.54) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 50 | (pad 11 thru_hole circle (at -10.16 5.08) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 51 | (pad 13 thru_hole circle (at -10.16 7.62) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 52 | (pad 15 thru_hole circle (at -10.16 10.16) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 53 | (pad 17 thru_hole circle (at -10.16 12.7) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 54 | (pad 19 thru_hole circle (at -7.62 12.7) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 55 | (pad 21 thru_hole circle (at -5.08 12.7) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 56 | (pad 23 thru_hole circle (at -2.54 12.7) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 57 | (pad 25 thru_hole circle (at 0 12.7) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 58 | (pad 27 thru_hole circle (at 2.54 12.7) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 59 | (pad 29 thru_hole circle (at 5.08 12.7) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 60 | (pad 18 thru_hole circle (at -7.62 15.24) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 61 | (pad 20 thru_hole circle (at -5.08 15.24) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 62 | (pad 22 thru_hole circle (at -2.54 15.24) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 63 | (pad 24 thru_hole circle (at 0 15.24) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 64 | (pad 26 thru_hole circle (at 2.54 15.24) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 65 | (pad 28 thru_hole circle (at 5.08 15.24) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 66 | (pad 30 thru_hole circle (at 5.08 10.16) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 67 | (pad 32 thru_hole circle (at 5.08 7.62) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 68 | (pad 34 thru_hole circle (at 5.08 5.08) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 69 | (pad 36 thru_hole circle (at 5.08 2.54) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 70 | (pad 38 thru_hole circle (at 5.08 0) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 71 | (pad 40 thru_hole circle (at 5.08 -2.54) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 72 | (pad 29 thru_hole circle (at 7.62 12.7) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 73 | (pad 31 thru_hole circle (at 7.62 10.16) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 74 | (pad 33 thru_hole circle (at 7.62 7.62) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 75 | (pad 35 thru_hole circle (at 7.62 5.08) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 76 | (pad 37 thru_hole circle (at 7.62 2.54) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 77 | (pad 39 thru_hole circle (at 7.62 0) (size 1.75 1.75) (drill 0.95) (layers *.Cu *.Mask)) 78 | (fp_text user %R (at -1.27 6.35) (layer F.Fab) 79 | (effects (font (size 1 1) (thickness 0.15))) 80 | ) 81 | (model ${KISYS3DMOD}/Housings_LCC.3dshapes/PLCC-44_THT-Socket.wrl 82 | (at (xyz 0 0 0)) 83 | (scale (xyz 1 1 1)) 84 | (rotate (xyz 0 0 0)) 85 | ) 86 | ) -------------------------------------------------------------------------------- /MK1_CPU/8bit-computer/Housings_LCC.pretty/PLCC-52.kicad_mod: -------------------------------------------------------------------------------- 1 | (module PLCC-52 (layer F.Cu) (tedit 58FB5F99) 2 | (descr "PLCC, 52 pins, surface mount") 3 | (tags "plcc smt") 4 | (attr smd) 5 | (fp_text reference REF** (at 0 -11.095) (layer F.SilkS) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_text value PLCC-52 (at 0 11.095) (layer F.Fab) 9 | (effects (font (size 1 1) (thickness 0.15))) 10 | ) 11 | (fp_line (start -9.095 -10.095) (end -10.095 -9.095) (layer F.Fab) (width 0.1)) 12 | (fp_line (start -10.095 -9.095) (end -10.095 10.095) (layer F.Fab) (width 0.1)) 13 | (fp_line (start -10.095 10.095) (end 10.095 10.095) (layer F.Fab) (width 0.1)) 14 | (fp_line (start 10.095 10.095) (end 10.095 -10.095) (layer F.Fab) (width 0.1)) 15 | (fp_line (start 10.095 -10.095) (end -9.095 -10.095) (layer F.Fab) (width 0.1)) 16 | (fp_line (start -10.55 -10.55) (end -10.55 10.55) (layer F.CrtYd) (width 0.05)) 17 | (fp_line (start -10.55 10.55) (end 10.55 10.55) (layer F.CrtYd) (width 0.05)) 18 | (fp_line (start 10.55 10.55) (end 10.55 -10.55) (layer F.CrtYd) (width 0.05)) 19 | (fp_line (start 10.55 -10.55) (end -10.55 -10.55) (layer F.CrtYd) (width 0.05)) 20 | (fp_line (start -0.5 -10.095) (end 0 -9.095) (layer F.Fab) (width 0.1)) 21 | (fp_line (start 0 -9.095) (end 0.5 -10.095) (layer F.Fab) (width 0.1)) 22 | (fp_line (start -8.595 -10.245) (end -9.095 -10.245) (layer F.SilkS) (width 0.1)) 23 | (fp_line (start -9.095 -10.245) (end -10.245 -9.095) (layer F.SilkS) (width 0.1)) 24 | (fp_line (start -10.245 -9.095) (end -10.245 -8.595) (layer F.SilkS) (width 0.1)) 25 | (fp_line (start 8.595 -10.245) (end 10.245 -10.245) (layer F.SilkS) (width 0.1)) 26 | (fp_line (start 10.245 -10.245) (end 10.245 -8.595) (layer F.SilkS) (width 0.1)) 27 | (fp_line (start -8.595 10.245) (end -10.245 10.245) (layer F.SilkS) (width 0.1)) 28 | (fp_line (start -10.245 10.245) (end -10.245 8.595) (layer F.SilkS) (width 0.1)) 29 | (fp_line (start 8.595 10.245) (end 10.245 10.245) (layer F.SilkS) (width 0.1)) 30 | (fp_line (start 10.245 10.245) (end 10.245 8.595) (layer F.SilkS) (width 0.1)) 31 | (pad 1 smd rect (at 0 -9.1325) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 32 | (pad 2 smd rect (at -1.27 -9.1325) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 33 | (pad 3 smd rect (at -2.54 -9.1325) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 34 | (pad 4 smd rect (at -3.81 -9.1325) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 35 | (pad 5 smd rect (at -5.08 -9.1325) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 36 | (pad 6 smd rect (at -6.35 -9.1325) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 37 | (pad 7 smd rect (at -7.62 -9.1325) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 38 | (pad 52 smd rect (at 1.27 -9.1325) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 39 | (pad 51 smd rect (at 2.54 -9.1325) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 40 | (pad 50 smd rect (at 3.81 -9.1325) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 41 | (pad 49 smd rect (at 5.08 -9.1325) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 42 | (pad 48 smd rect (at 6.35 -9.1325) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 43 | (pad 47 smd rect (at 7.62 -9.1325) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 44 | (pad 8 smd rect (at -9.1325 -7.62) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 45 | (pad 9 smd rect (at -9.1325 -6.35) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 46 | (pad 10 smd rect (at -9.1325 -5.08) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 47 | (pad 11 smd rect (at -9.1325 -3.81) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 48 | (pad 12 smd rect (at -9.1325 -2.54) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 49 | (pad 13 smd rect (at -9.1325 -1.27) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 50 | (pad 14 smd rect (at -9.1325 0) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 51 | (pad 15 smd rect (at -9.1325 1.27) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 52 | (pad 16 smd rect (at -9.1325 2.54) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 53 | (pad 17 smd rect (at -9.1325 3.81) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 54 | (pad 18 smd rect (at -9.1325 5.08) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 55 | (pad 19 smd rect (at -9.1325 6.35) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 56 | (pad 20 smd rect (at -9.1325 7.62) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 57 | (pad 21 smd rect (at -7.62 9.1325) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 58 | (pad 22 smd rect (at -6.35 9.1325) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 59 | (pad 23 smd rect (at -5.08 9.1325) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 60 | (pad 24 smd rect (at -3.81 9.1325) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 61 | (pad 25 smd rect (at -2.54 9.1325) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 62 | (pad 26 smd rect (at -1.27 9.1325) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 63 | (pad 27 smd rect (at 0 9.1325) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 64 | (pad 28 smd rect (at 1.27 9.1325) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 65 | (pad 29 smd rect (at 2.54 9.1325) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 66 | (pad 30 smd rect (at 3.81 9.1325) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 67 | (pad 31 smd rect (at 5.08 9.1325) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 68 | (pad 32 smd rect (at 6.35 9.1325) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 69 | (pad 33 smd rect (at 7.62 9.1325) (size 0.7 1.925) (layers F.Cu F.Mask F.Paste)) 70 | (pad 34 smd rect (at 9.1325 7.62) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 71 | (pad 35 smd rect (at 9.1325 6.35) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 72 | (pad 36 smd rect (at 9.1325 5.08) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 73 | (pad 37 smd rect (at 9.1325 3.81) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 74 | (pad 38 smd rect (at 9.1325 2.54) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 75 | (pad 39 smd rect (at 9.1325 1.27) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 76 | (pad 40 smd rect (at 9.1325 0) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 77 | (pad 41 smd rect (at 9.1325 -1.27) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 78 | (pad 42 smd rect (at 9.1325 -2.54) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 79 | (pad 43 smd rect (at 9.1325 -3.81) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 80 | (pad 44 smd rect (at 9.1325 -5.08) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 81 | (pad 45 smd rect (at 9.1325 -6.35) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 82 | (pad 46 smd rect (at 9.1325 -7.62) (size 1.925 0.7) (layers F.Cu F.Mask F.Paste)) 83 | (fp_text user %R (at 0 0) (layer F.Fab) 84 | (effects (font (size 1 1) (thickness 0.15))) 85 | ) 86 | (model ${KISYS3DMOD}/Housings_LCC.3dshapes/PLCC-52.wrl 87 | (at (xyz 0 0 0)) 88 | (scale (xyz 1 1 1)) 89 | (rotate (xyz 0 0 0)) 90 | ) 91 | ) -------------------------------------------------------------------------------- /MK1_CPU/8bit-computer/Housings_LCC.pretty/README.md: -------------------------------------------------------------------------------- 1 | # Housings_LLC.pretty 2 | Leaded Chip Carrier (LCC) footprints, such as PLCC (Plastic Leaded Chip Carrier), see https://en.wikipedia.org/wiki/Chip_carrier#Plastic_leaded_chip_carrier 3 | 4 | 5 | ## Note 6 | 7 | This repository is now considered legacy in preparation for the v5 KiCad software release. It will not accept any further pull requests. To contribute, please refer to the new `kicad-footprints` repository at https://github.com/kicad/kicad-footprints 8 | -------------------------------------------------------------------------------- /MK1_CPU/8bit-computer/fp-lib-table: -------------------------------------------------------------------------------- 1 | (fp_lib_table 2 | (lib (name Housings_LCC)(type KiCad)(uri ${KIPRJMOD}/Housings_LCC.pretty)(options "")(descr "")) 3 | ) 4 | -------------------------------------------------------------------------------- /MK1_CPU/8bit-computer/sym-lib-table: -------------------------------------------------------------------------------- 1 | (sym_lib_table 2 | (lib (name 8bit-computer-rescue)(type Legacy)(uri ${KIPRJMOD}/8bit-computer-rescue.lib)(options "")(descr "")) 3 | ) 4 | -------------------------------------------------------------------------------- /MK1_CPU/code/microcode.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vascofazza/8bit-cpu/027a60365ede50967a28066cb3f8de64050dac08/MK1_CPU/code/microcode.bin -------------------------------------------------------------------------------- /MK1_CPU/code/mk1_computer_uplodader/mk1_computer_uplodader.ino: -------------------------------------------------------------------------------- 1 | #define MI 10 2 | #define HL 11 3 | #define RI 12 4 | #define EN 13 5 | #define CLK A0 6 | #define RST A1 7 | #define CU_EN A2 8 | 9 | void setup() { 10 | // put your setup code here, to run once: 11 | Serial.begin(9600); 12 | //Serial.setTimeout(5000); 13 | pinMode(MI, OUTPUT); 14 | pinMode(HL, OUTPUT); 15 | pinMode(RI, OUTPUT); 16 | pinMode(EN, OUTPUT); 17 | pinMode(CLK, INPUT); 18 | pinMode(RST, INPUT); 19 | pinMode(CU_EN, OUTPUT); 20 | 21 | DDRD |= B11111100; 22 | DDRB |= B00000011; 23 | } 24 | 25 | void reset() 26 | { 27 | pinMode(RST, OUTPUT); 28 | digitalWrite(RST, HIGH); 29 | delayMicroseconds(10); 30 | digitalWrite(RST, LOW); 31 | pinMode(RST, INPUT); 32 | } 33 | 34 | void clock() 35 | { 36 | pinMode(CLK, OUTPUT); 37 | digitalWrite(CLK, HIGH); 38 | delayMicroseconds(1); 39 | digitalWrite(CLK, LOW); 40 | pinMode(CLK, INPUT); 41 | } 42 | 43 | void enableClock() 44 | { 45 | pinMode(CLK, OUTPUT); 46 | digitalWrite(CLK, HIGH); 47 | } 48 | 49 | void disableClock() 50 | { 51 | pinMode(CLK, OUTPUT); 52 | digitalWrite(CLK, LOW); 53 | pinMode(CLK, INPUT); 54 | } 55 | 56 | void disable_cu() 57 | { 58 | digitalWrite(CU_EN, HIGH); 59 | } 60 | 61 | void enable_cu() 62 | { 63 | digitalWrite(CU_EN, LOW); 64 | } 65 | 66 | void enableOutput() 67 | { 68 | digitalWrite(EN, HIGH); 69 | } 70 | 71 | void disableOutput() 72 | { 73 | digitalWrite(EN, LOW); 74 | } 75 | 76 | void setAddress(unsigned int address) 77 | { 78 | digitalWrite(HL, address > 0xFF); 79 | putOut(address); 80 | delayMicroseconds(1); 81 | enableOutput(); 82 | digitalWrite(MI, HIGH); 83 | delayMicroseconds(1); 84 | digitalWrite(MI, LOW); 85 | delayMicroseconds(1); 86 | disableOutput(); 87 | } 88 | 89 | void putOut(byte data) 90 | { 91 | PORTD = (PORTD & 0x3) | (data << 2); 92 | PORTB = (PORTB & 0xFC) | (data >> 6 & 0x3); 93 | delayMicroseconds(1); 94 | } 95 | 96 | void writeInstruction(byte instr) 97 | { 98 | putOut(instr); 99 | enableOutput(); 100 | delayMicroseconds(1); 101 | digitalWrite(RI, HIGH); 102 | delayMicroseconds(1); 103 | digitalWrite(RI, LOW); 104 | delayMicroseconds(1); 105 | disableOutput(); 106 | 107 | } 108 | 109 | byte buffer[512]; 110 | 111 | void loop() { 112 | if (Serial.available()) { 113 | 114 | int p_size = Serial.readBytes(buffer, sizeof(buffer)); 115 | Serial.write(0); 116 | 117 | reset(); 118 | disable_cu(); 119 | 120 | delayMicroseconds(1); 121 | enableClock(); 122 | delayMicroseconds(1); 123 | for (int i = 0; i < p_size; i ++) 124 | { 125 | setAddress(i); 126 | delayMicroseconds(1); 127 | writeInstruction(buffer[i]); 128 | delayMicroseconds(1); 129 | } 130 | 131 | disableClock(); 132 | digitalWrite(HL, LOW); 133 | reset(); 134 | enable_cu(); 135 | } 136 | disableOutput(); 137 | 138 | } 139 | -------------------------------------------------------------------------------- /MK1_CPU/code/output_display.py: -------------------------------------------------------------------------------- 1 | digits = [0x7e, 0x30, 0x6d, 0x79, 0x33, 0x5b, 0x5f, 0x70, 0x7f, 0x7b] 2 | 3 | def byte(value): 4 | return int.from_bytes((value).to_bytes(1, 'big', signed=True), 'big') 5 | 6 | def write(address, data, out): 7 | out.seek(address) 8 | out.write(data.to_bytes(1, 'big')) 9 | 10 | def main(): 11 | with open('output_display.bin', 'wb') as out: 12 | print("Programming ones place") 13 | 14 | for value in range(256): 15 | write(value, digits[value % 10], out); 16 | 17 | print("Programming tens place") 18 | for value in range(256): 19 | write(value + 256, digits[(value // 10) % 10], out) 20 | 21 | print("Programming hundreds place") 22 | for value in range(256): 23 | write(value + 512, digits[(value // 100) % 10], out) 24 | 25 | print("Programming sign") 26 | for value in range(256): 27 | write(value + 768, 0, out) 28 | 29 | print("Programming ones place (twos complement)") 30 | for value in range(-128, 127): 31 | write(byte(value) + 1024, digits[abs(value) % 10], out) 32 | 33 | print("Programming tens place (twos complement)") 34 | for value in range(-128, 127): 35 | write(byte(value) + 1280, digits[abs(value // 10) % 10], out) 36 | 37 | print("Programming hundreds place (twos complement)") 38 | for value in range(-128, 127): 39 | write(byte(value) + 1536, digits[abs(value // 100) % 10], out) 40 | 41 | print("Programming sign (twos complement)") 42 | for value in range(-128, 127): 43 | if value < 0: 44 | write(byte(value) + 1792, 0x01, out) 45 | else: 46 | write(byte(value) + 1792, 0, out) 47 | 48 | if __name__ == "__main__": 49 | main() 50 | -------------------------------------------------------------------------------- /MK1_CPU/code/uploader.py: -------------------------------------------------------------------------------- 1 | import warnings 2 | import serial 3 | import serial.tools.list_ports 4 | import argparse 5 | from tqdm import tqdm 6 | from time import sleep 7 | 8 | baud = 9600 9 | 10 | if __name__ == '__main__': 11 | 12 | parser = argparse.ArgumentParser(description='Binary uploader for MK1 computer.') 13 | parser.add_argument('-i', '--input', metavar='input', type=str, required = True, 14 | help='input file name') 15 | parser.add_argument('-p', '--port', metavar='port', type=str, 16 | help='Arduino serial property') 17 | 18 | args = parser.parse_args() 19 | 20 | arduino_ports = [ 21 | p.device 22 | for p in serial.tools.list_ports.comports() 23 | if 'Arduino' in p.description or 'Serial' in p.description # may need tweaking to match new arduinos 24 | ] 25 | 26 | if not arduino_ports: 27 | raise IOError("No Arduino found") 28 | if not args.port and len(arduino_ports) > 1: 29 | warnings.warn('Multiple Arduinos found - using the first') 30 | 31 | if not args.input.endswith('.bin'): 32 | warnings.warn('Input file may not be binary - continuing') 33 | 34 | ser = serial.Serial(args.port or arduino_ports[0], baud, serial.EIGHTBITS, serial.PARITY_NONE, serial.STOPBITS_ONE) 35 | sleep(3) 36 | 37 | with open(args.input, 'rb') as f: 38 | byte = f.read(1) 39 | while byte: 40 | written = ser.write(byte) 41 | ser.flush() 42 | byte = f.read(1) 43 | ser.read() 44 | ser.close() 45 | -------------------------------------------------------------------------------- /MK1_CPU/images/8bit-computer_v1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vascofazza/8bit-cpu/027a60365ede50967a28066cb3f8de64050dac08/MK1_CPU/images/8bit-computer_v1.jpg -------------------------------------------------------------------------------- /MK1_CPU/images/8bit-computer_v2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vascofazza/8bit-cpu/027a60365ede50967a28066cb3f8de64050dac08/MK1_CPU/images/8bit-computer_v2.jpg -------------------------------------------------------------------------------- /MK1_CPU/programs/assembled/bubble_sort.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vascofazza/8bit-cpu/027a60365ede50967a28066cb3f8de64050dac08/MK1_CPU/programs/assembled/bubble_sort.bin -------------------------------------------------------------------------------- /MK1_CPU/programs/assembled/counter.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vascofazza/8bit-cpu/027a60365ede50967a28066cb3f8de64050dac08/MK1_CPU/programs/assembled/counter.bin -------------------------------------------------------------------------------- /MK1_CPU/programs/assembled/display_counter.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vascofazza/8bit-cpu/027a60365ede50967a28066cb3f8de64050dac08/MK1_CPU/programs/assembled/display_counter.bin -------------------------------------------------------------------------------- /MK1_CPU/programs/assembled/display_hello_world.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vascofazza/8bit-cpu/027a60365ede50967a28066cb3f8de64050dac08/MK1_CPU/programs/assembled/display_hello_world.bin -------------------------------------------------------------------------------- /MK1_CPU/programs/assembled/division.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vascofazza/8bit-cpu/027a60365ede50967a28066cb3f8de64050dac08/MK1_CPU/programs/assembled/division.bin -------------------------------------------------------------------------------- /MK1_CPU/programs/assembled/factorial.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vascofazza/8bit-cpu/027a60365ede50967a28066cb3f8de64050dac08/MK1_CPU/programs/assembled/factorial.bin -------------------------------------------------------------------------------- /MK1_CPU/programs/assembled/fibonacci.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vascofazza/8bit-cpu/027a60365ede50967a28066cb3f8de64050dac08/MK1_CPU/programs/assembled/fibonacci.bin -------------------------------------------------------------------------------- /MK1_CPU/programs/assembled/fibonacci_recursive.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vascofazza/8bit-cpu/027a60365ede50967a28066cb3f8de64050dac08/MK1_CPU/programs/assembled/fibonacci_recursive.bin -------------------------------------------------------------------------------- /MK1_CPU/programs/assembled/merge_sort.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vascofazza/8bit-cpu/027a60365ede50967a28066cb3f8de64050dac08/MK1_CPU/programs/assembled/merge_sort.bin -------------------------------------------------------------------------------- /MK1_CPU/programs/assembled/multiplication.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vascofazza/8bit-cpu/027a60365ede50967a28066cb3f8de64050dac08/MK1_CPU/programs/assembled/multiplication.bin -------------------------------------------------------------------------------- /MK1_CPU/programs/assembled/multiplication_tables.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vascofazza/8bit-cpu/027a60365ede50967a28066cb3f8de64050dac08/MK1_CPU/programs/assembled/multiplication_tables.bin -------------------------------------------------------------------------------- /MK1_CPU/programs/assembled/primes.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vascofazza/8bit-cpu/027a60365ede50967a28066cb3f8de64050dac08/MK1_CPU/programs/assembled/primes.bin -------------------------------------------------------------------------------- /MK1_CPU/programs/assembled/quick_sort.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vascofazza/8bit-cpu/027a60365ede50967a28066cb3f8de64050dac08/MK1_CPU/programs/assembled/quick_sort.bin -------------------------------------------------------------------------------- /MK1_CPU/programs/assembled/reminder.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vascofazza/8bit-cpu/027a60365ede50967a28066cb3f8de64050dac08/MK1_CPU/programs/assembled/reminder.bin -------------------------------------------------------------------------------- /MK1_CPU/programs/assembled/test_suite.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vascofazza/8bit-cpu/027a60365ede50967a28066cb3f8de64050dac08/MK1_CPU/programs/assembled/test_suite.bin -------------------------------------------------------------------------------- /MK1_CPU/programs/bubble_sort.asm: -------------------------------------------------------------------------------- 1 | ;--- bubble sort --- 2 | #include "lib/mk1.cpu" 3 | 4 | #bank ".data" 5 | data: #d8 123, 210, 20, 13, 222, 94, 205, 199, 213, 176, 58, 160, 216, 12, 73, 172, 184, 225, 125, 63, 186, 111, 252, 136, 242, 92, 101, 134, 175, 126, 195, 2, 42, 57, 149, 23, 223, 48, 214, 217 6 | vector_len = pc - data 7 | vector: #res vector_len 8 | #bank ".instr" 9 | 10 | init: 11 | ;copy vector to tmp array 12 | ldi $a 0 13 | .loop: 14 | cmp vector_len 15 | jz main 16 | addi data $b 17 | addi vector $c 18 | ld $b [$b] 19 | st $b [$c] 20 | addi 1 $a 21 | j .loop 22 | 23 | main: 24 | jal print 25 | ldi $a vector_len 26 | subi 1 $b ;prepare end - 1 27 | ldi $a 0 28 | jal bubble_sort 29 | jal print 30 | hlt 31 | 32 | bubble_sort: 33 | ldi $a 0 34 | .loop: 35 | cmp vector_len - 1 36 | jz .end 37 | push $a 38 | ldi $a 0 39 | .for: 40 | cmp vector_len - 1 41 | jz .next 42 | addi 1 $b 43 | push $a 44 | push $b 45 | addi vector $a 46 | ld $a [$a] 47 | push $a 48 | mov $b $a 49 | addi vector $a 50 | ld $a [$a] 51 | mov $a $b 52 | pop $a 53 | jal compare 54 | cmp 1 55 | pop $a 56 | pop $b 57 | jz .for 58 | push $a 59 | push $b 60 | ;addi vector $a 61 | ;subi 1 $b 62 | jal swap 63 | pop $b 64 | pop $a 65 | j .for 66 | 67 | .next: 68 | pop $a 69 | addi 1 $a 70 | j .loop 71 | 72 | .end: 73 | ret 74 | 75 | 76 | ; print subroutine 77 | print: 78 | jal clear_display 79 | ldi $b vector 80 | ldi $a 0 81 | .loop: 82 | cmp vector_len 83 | jz .end 84 | add $b $c 85 | ld $c [$c] 86 | out $c 87 | push $a 88 | mov $c $a 89 | jal print_int 90 | ldi $a SPACE 91 | jal print_char 92 | pop $a 93 | addi 1 $a 94 | j .loop 95 | .end: 96 | ret 97 | 98 | ;--- compare --- 99 | compare: ;$a < $b 100 | sub $b $a 101 | add $b $a 102 | jc .ret_false 103 | ; a greater 104 | ldi $a 0 105 | ret 106 | ; b greater 107 | .ret_false: 108 | ldi $a 1 109 | ret 110 | 111 | swap: 112 | addi vector $c ; c = [a] 113 | ld $a [$c] ; a = vec[a] 114 | mov $a $d ; d = vec[a] 115 | mov $b $a 116 | addi vector $a ; a = [b] 117 | ld $b [$a] ; b = vec[b] 118 | st $d [$a] 119 | st $b [$c] 120 | ret 121 | 122 | #include "lib/helix.asm" 123 | -------------------------------------------------------------------------------- /MK1_CPU/programs/counter.asm: -------------------------------------------------------------------------------- 1 | #include "lib/mk1.cpu" 2 | 3 | main: 4 | addi 1 $a 5 | out 6 | j main 7 | -------------------------------------------------------------------------------- /MK1_CPU/programs/display_counter.asm: -------------------------------------------------------------------------------- 1 | #include "lib/mk1.cpu" 2 | 3 | jal init_display 4 | ldi $a 0 5 | 6 | loop: 7 | push $a 8 | out 9 | jal print_int 10 | ldi $a SPACE 11 | jal print_char 12 | pop $a 13 | addi 1 $a 14 | jc end 15 | j loop 16 | 17 | end: 18 | hlt 19 | 20 | #include "lib/helix.asm" 21 | -------------------------------------------------------------------------------- /MK1_CPU/programs/display_hello_world.asm: -------------------------------------------------------------------------------- 1 | #include "lib/mk1.cpu" 2 | 3 | #bank ".data" 4 | helloworld: #str "Hello, world!\0" 5 | 6 | #bank ".instr" 7 | main: 8 | jal init_display 9 | ldi $b helloworld 10 | .loop: 11 | ld $a [$b] 12 | cmp 0 13 | jz end 14 | push $a 15 | push $b 16 | jal print_char 17 | pop $b 18 | pop $a 19 | ldi $a 1 20 | add $b $b 21 | j .loop 22 | 23 | end: 24 | hlt 25 | 26 | #include "lib/helix.asm" 27 | -------------------------------------------------------------------------------- /MK1_CPU/programs/division.asm: -------------------------------------------------------------------------------- 1 | ; division test 2 | #include "lib/mk1.cpu" 3 | 4 | ldi $a 144 5 | ldi $b 3; = 48 6 | jal divide 7 | out $a 8 | hlt 9 | 10 | #include "lib/mk1_std.asm" 11 | -------------------------------------------------------------------------------- /MK1_CPU/programs/factorial.asm: -------------------------------------------------------------------------------- 1 | ;factorial - recursive algorithm 2 | #include "lib/mk1.cpu" 3 | 4 | max_value = 5 + 1 5 | init: 6 | ldi $a 0 7 | 8 | main: 9 | cmp max_value 10 | jz end 11 | push $a 12 | jal factorial 13 | out 14 | pop $a 15 | addi 1 $a 16 | j main 17 | 18 | end: 19 | hlt 20 | 21 | ;--- factorial routine --- 22 | factorial: 23 | ;base case 24 | cmp 0 25 | jz .ret_base 26 | ;computing factorial($a - 1) 27 | push $a 28 | subi 1 $a 29 | jal factorial 30 | pop $b 31 | jal multiply 32 | ret 33 | 34 | .ret_base: 35 | ldi $a 1 36 | ret 37 | 38 | #include "lib/mk1_std.asm" 39 | -------------------------------------------------------------------------------- /MK1_CPU/programs/fibonacci.asm: -------------------------------------------------------------------------------- 1 | ;fibonacci sequence 2 | #include "lib/mk1.cpu" 3 | 4 | init: 5 | ldi $a 1 6 | ldi $b 1 7 | 8 | loop: 9 | out $a 10 | mov $a $c 11 | add $b $a 12 | jc end 13 | mov $c $b 14 | j loop 15 | 16 | end: 17 | hlt 18 | -------------------------------------------------------------------------------- /MK1_CPU/programs/fibonacci_recursive.asm: -------------------------------------------------------------------------------- 1 | ;fibonacci sequence - recursive algorithm 2 | #include "lib/mk1.cpu" 3 | 4 | main: 5 | ldi $a 1 ; counter 6 | 7 | .loop: 8 | cmp 14 ; maximum printable fibonacci value is fib(13) 9 | jz .end 10 | push $a 11 | jal fibonacci ; computing fib(counter) 12 | out $a 13 | pop $a 14 | addi 1 $a 15 | j .loop 16 | 17 | .end: 18 | hlt 19 | 20 | fibonacci: 21 | mov $a $d ; input argument to $d 22 | cmp 0 23 | jz .ret_base_0 ; if argument is 0 ret 0 24 | subi 1 $a 25 | jz .ret_base_1 ; if argument is 1 ret 1 26 | push $d 27 | jal fibonacci ; computing fib(argument - 1) 28 | pop $d 29 | mov $a $b ; $b contains fib(-1) 30 | mov $d $a 31 | subi 2 $a ; preparing argument - 2 32 | push $b 33 | jal fibonacci ; computing fib(argument - 2) 34 | pop $b 35 | add $b $a ; returning fib(-1) + fib(-2) 36 | ret 37 | 38 | .ret_base_0: 39 | ldi $a 0 40 | ret 41 | 42 | .ret_base_1: 43 | ldi $a 1 44 | ret 45 | -------------------------------------------------------------------------------- /MK1_CPU/programs/lib/helix.asm: -------------------------------------------------------------------------------- 1 | ;--- helix display interface library --- 2 | 3 | SPACE = 32 4 | 5 | #bank ".data" 6 | _ready: #d8 1 7 | #bank ".instr" 8 | 9 | init_display: 10 | ldi $a 1 11 | je0 .ret 12 | ldi $a 0 13 | .ret: 14 | st $a _ready 15 | ret 16 | 17 | print_char: 18 | jal _display_ready 19 | exw 0 2 20 | ret 21 | 22 | print_int: 23 | jal _display_ready 24 | exw 0 1 25 | ret 26 | 27 | clear_display: 28 | jal _display_ready 29 | exw 0 3 30 | ret 31 | 32 | _display_ready: 33 | push $a 34 | ld $a _ready 35 | add $a $a 36 | jz .ret 37 | jal _active_wait 38 | .ret: 39 | pop $a 40 | ret 41 | 42 | _active_wait: 43 | nop 44 | je0 .ret 45 | nop 46 | j _active_wait 47 | .ret: 48 | exr 0 49 | ret 50 | -------------------------------------------------------------------------------- /MK1_CPU/programs/lib/mk1.cpu: -------------------------------------------------------------------------------- 1 | #bankdef ".instr" 2 | { 3 | #addr 0x00 4 | #size 0x100 5 | #outp 0x00 6 | } 7 | 8 | #bankdef ".data" 9 | { 10 | #addr 0x00 11 | #size 0x100 12 | #outp 0x100 13 | } 14 | 15 | #cpudef 16 | { 17 | #bits 8 18 | 19 | #tokendef reg 20 | { 21 | $a = 0 22 | $b = 1 23 | $c = 2 24 | $d = 3 25 | $sp = 4 26 | $pc = 5 27 | $out = 6 28 | } 29 | 30 | #tokendef alu_op 31 | { 32 | add = 0 33 | sub = 1 34 | or = 2 35 | and = 3 36 | } 37 | 38 | nop -> 0x00 39 | hlt -> 0b01111111 40 | 41 | ldi {dst: reg} 0 -> 0b11 @ 0b01 @ 0b00 @ dst[1:0] 42 | 43 | mov {src: reg} {dst: reg} -> 0b00 @ src[2:0] @ dst[2:0] 44 | ldi {dst: reg} {value: i8} -> { assert(value <= 0xff), 0b00 @ 0b111 @ dst[2:0] @ value } 45 | out -> 0b00000110 46 | out {value: reg} -> 0b00 @ value[2:0] @ 0b110 47 | out {value: i8} -> { assert(value <= 0xff), 0b00 @ 0b111 @ 0b110 @ value } 48 | 49 | j {address: u8} -> { assert(address <= 0xff), 0b00 @ 0b111 @ 3'5 @ address } 50 | 51 | ld {dst: reg} [{addr: reg}] -> 0b01 @ dst[2:0] @ addr[2:0] 52 | ld {dst: reg} {address: u8} -> { assert(address <= 0xff), 0b01 @ dst[2:0] @ 0b111 @ address } 53 | 54 | st {src: reg} [{addr: reg}] -> 0b10 @ src[2:0] @ addr[2:0] 55 | st {src: reg} {address: u8} -> { assert(address <= 0xff), 0b10 @ src[2:0] @ 0b111 @ address } 56 | 57 | {op: alu_op} {operand_1: reg} {operand_2: reg} -> 0b11 @ op[1:0] @ operand_1[1:0] @ operand_2[1:0] 58 | {op: alu_op}i {value: i8} {dst: reg} -> { assert(value <= 0xff), 0b1011 @ op[1:0] @ dst[1:0] @ value } 59 | 60 | not -> 0b01111010 61 | rll -> 0b01111101 62 | rlr -> 0b01111110 63 | sll -> 0b01111011 64 | slr -> 0b01111100 65 | 66 | cmp $b -> 0b10101110 67 | cmp $c -> 0b01000110 68 | cmp $d -> 0b01001110 69 | cmp {value: i8} -> { assert(value <= 0xff), 0b10000110 @ value } 70 | 71 | push {data: reg} -> 0b10 @ data[2:0] @ 0b100 72 | pop {data: reg} -> 0b01 @ data[2:0] @ 0b100 73 | ret -> 0b01 @ 3'5 @ 0b100 74 | 75 | jal {address: u8} -> { assert(address <= 0xff), 0b10 @ 3'5 @ 0b100 @ address } 76 | jc {address: u8} -> { assert(address <= 0xff), 0b00110111 @ address } 77 | jz {address: u8} -> { assert(address <= 0xff), 0b00111111 @ address } 78 | 79 | exr 0 -> 0b01111000 80 | exr 1 -> 0b01111001 81 | 82 | exw 0 0 -> 0b00000111 83 | exw 0 1 -> 0b00001111 84 | exw 0 2 -> 0b10001110 85 | exw 0 3 -> 0b10010110 86 | 87 | exw 1 0 -> 0b00010111 88 | exw 1 1 -> 0b00011111 89 | exw 1 2 -> 0b10011110 90 | exw 2 3 -> 0b10100110 91 | 92 | je0 {address: u8} -> { assert(address <= 0xff), 0b00100111 @ address } 93 | je1 {address: u8} -> { assert(address <= 0xff), 0b00101111 @ address } 94 | } 95 | 96 | #bank ".instr" 97 | -------------------------------------------------------------------------------- /MK1_CPU/programs/lib/mk1_std.asm: -------------------------------------------------------------------------------- 1 | ;-- utility functions -- 2 | 3 | ;--- multiplication --- 4 | multiply: ; $a * $b 5 | mov $b $c ;counter 6 | mov $a $b ;multiplication base 7 | ldi $d 0 ;tmp 8 | cmp 0 9 | jz .end 10 | 11 | .loop: 12 | mov $c $a ; counter equals 0 -> we're done 13 | cmp 0 14 | jz .end 15 | mov $d $a 16 | add $b $d 17 | mov $c $a 18 | subi 1 $c 19 | j .loop 20 | 21 | .end: 22 | mov $d $a 23 | ret 24 | 25 | ;--- divide --- 26 | #bank ".data" 27 | _sign: #res 1 28 | #bank ".instr" 29 | divide: ;$a / $b 30 | mov $a $c; c contains tmp value 31 | ldi $d 2; sign on 32 | st $d _sign 33 | ldi $d 0; counter 34 | cmp 0 35 | jz .ret 36 | 37 | .loop: 38 | mov $c $a 39 | sub $b $a ;subtract the divisor 40 | mov $a $c 41 | jz .ret_zero 42 | ;check if the sign is positive. 43 | ;if sign is positive we'll check when goes negative and return. 44 | andi 128 $a 45 | jz .set_sign 46 | ;sign is not positive, check against old sign 47 | push $d 48 | ld $d _sign 49 | sub $d $a 50 | pop $d 51 | jz .ret ;sign went negative, returning 52 | .continue: 53 | mov $d $a 54 | addi 1 $d 55 | j .loop 56 | 57 | .ret_zero: 58 | mov $d $a 59 | addi 1 $d 60 | .ret: ;we're done! reminder is negative, get positive part and return 61 | mov $d $a 62 | ret 63 | 64 | .set_sign: 65 | ldi $a 128 ;set sign to 1, when we compare and it changes we're done. 66 | st $a _sign 67 | j .continue 68 | 69 | 70 | ;--- get division reminder --- 71 | reminder: ;$a % $b 72 | mov $a $c; c contains tmp value 73 | ldi $d 2; sign 74 | cmp 0 75 | jz .ret_zero 76 | 77 | .loop: 78 | mov $c $a 79 | sub $b $a ;subtract the divisor and check if zero 80 | jz .ret_zero 81 | mov $a $c 82 | ;check if the sign is positive. 83 | ;if sign is positive we'll check when goes negative and return. 84 | andi 128 $a 85 | jz .set_sign 86 | ;sign is not positive, check against old sign 87 | sub $d $a 88 | jz .ret ;sign went negative, returning. 89 | j .loop 90 | 91 | .ret: ;we're done! reminder is negative, get positive part and return 92 | mov $c $a 93 | add $b $a 94 | .ret_zero: 95 | ret 96 | 97 | .set_sign: 98 | ldi $d 128 ;set sign to 1, when we compare and it changes we're done. 99 | j .loop 100 | 101 | ;--- compare --- 102 | compare: ;$a < $b 103 | sub $b $a 104 | add $b $a 105 | jc .ret_false 106 | ; a greater 107 | ldi $a 0 108 | ret 109 | ; b greater 110 | .ret_false: 111 | ldi $a 1 112 | ret 113 | -------------------------------------------------------------------------------- /MK1_CPU/programs/merge_sort.asm: -------------------------------------------------------------------------------- 1 | ;--- merge sort --- 2 | #include "lib/mk1.cpu" 3 | 4 | #bank ".data" 5 | data: #d8 123, 210, 20, 13, 222, 94, 205, 199, 213, 176, 58, 160, 216, 12, 73, 172, 184, 225, 125, 63, 186, 111, 252, 136, 242, 92, 101, 134, 175, 126, 195, 2, 42, 57, 149, 23, 223, 48, 214, 217 6 | vector_len = pc - data 7 | vector: #res vector_len 8 | #bank ".instr" 9 | 10 | init: 11 | jal init_display 12 | ;copy vector to tmp array 13 | ldi $a 0 14 | .loop: 15 | cmp vector_len 16 | jz main 17 | addi data $b 18 | addi vector $c 19 | ld $b [$b] 20 | st $b [$c] 21 | addi 1 $a 22 | j .loop 23 | 24 | main: 25 | jal print 26 | ldi $b vector_len - 1 27 | ldi $a 0 28 | jal merge_sort 29 | jal print 30 | hlt 31 | 32 | merge_sort: ; start, end 33 | cmp $b ; if start == end -> return 34 | jz return 35 | 36 | ;compute mid index 37 | mov $a $d ; d = start 38 | mov $b $a ; a = b = end 39 | sub $d $a ; a = end - start 40 | slr ;(end - start) / 2 41 | add $d $a ; a = start + (end - start) / 2 42 | mov $b $c ; c = end 43 | mov $a $b ; b = mid = start + (end - start) / 2 44 | mov $d $a ; a = start 45 | 46 | ;first call (start, middle) 47 | push $a 48 | push $b 49 | push $c 50 | jal merge_sort 51 | pop $b ; end 52 | pop $a ; mid 53 | pop $c ; start 54 | 55 | ;second call (middle, end) 56 | push $a 57 | push $b 58 | push $c 59 | addi 1 $a 60 | jal merge_sort 61 | pop $a ; start 62 | pop $c ; end 63 | pop $b ; mid 64 | 65 | ;merge phase 66 | jal merge 67 | 68 | return: 69 | ret 70 | 71 | ; ---- merge function ---- 72 | merge: ;start, mid, end 73 | 74 | ; merge variables 75 | #bank ".data" 76 | start: #res 1 77 | start2: #res 1 78 | mid: #res 1 79 | end: #res 1 80 | index: #res 1 81 | #bank ".instr" 82 | 83 | ;init variable 84 | st $a start 85 | st $b mid 86 | st $c end 87 | mov $b $a 88 | addi 1 $a 89 | st $a start2 ; a = mid +1 = start2 90 | 91 | ;if vec[mid] <= vec[start2] -> return 92 | addi vector $a ; a = [start2] 93 | ld $c [$a] ; c = vec[start2] 94 | ldi $a vector 95 | add $b $b ; b = [mid] 96 | mov $c $a ; a = vec[start2] 97 | ld $b [$b] ; b = vec[mid] 98 | jal compare ; $a < $b? vec[start2] < vec[mid] ? 99 | add $a $a ;cmp 1 , invert condition 100 | jz return 101 | 102 | .while: 103 | ;while start <= mid and start2 <= end 104 | ld $a mid 105 | ld $b start 106 | jal compare ; mid < start? 107 | cmp 1 108 | jz return 109 | ld $a end 110 | ld $b start2 111 | push $b 112 | jal compare ; end < start2? 113 | cmp 1 114 | pop $a 115 | jz return 116 | 117 | .if: ;a -> start2 118 | ;if vec[start] <= vec[start2] -> start++ 119 | addi vector $c ; c = [start2] 120 | ld $a start 121 | mov $a $d ; d = start 122 | addi vector $b ; b = [start] 123 | ld $a [$c] ; a = vec[start2] 124 | push $a ; n <---- vec[start2] in stack (value) 125 | ld $b [$b] ; b = vec[start] 126 | push $d 127 | jal compare ; start2 < start ? 128 | cmp 1 129 | pop $d ; <------- d = start 130 | jz .else 131 | mov $d $a 132 | addi 1 $a 133 | st $a start ; start++ 134 | pop $a ; de-allocating stack 135 | j .while 136 | .else: 137 | ;idx = start2 138 | ;while idx != start 139 | ld $b start2 ; b = start 2 = idx 140 | .while_2: 141 | mov $d $a ; d = a = start 142 | cmp $b 143 | jz .break 144 | ;vec[idx] = vec[idx - 1] 145 | mov $b $a ; b = idx 146 | subi 1 $a ; idx -1 147 | addi vector $a ; [idx - 1] 148 | ld $c [$a] ; c = vec[idx - 1] 149 | mov $b $a ; b = idx 150 | addi vector $a ; [idx] 151 | st $c [$a]; ;vec[idx] = vec[idx - 1] 152 | ;idx -- 153 | mov $b $a 154 | subi 1 $b ; b = idx - 1 155 | j .while_2 156 | 157 | .break: 158 | ;d = start 159 | ;arr[start] = value (in stack) 160 | mov $d $a 161 | addi vector $a; a = [start] 162 | pop $b ;<- value 163 | st $b [$a] ; arr[start] = value 164 | 165 | ;update counters 166 | ldi $a 1 167 | add $d $d ; start++ 168 | st $d start 169 | ld $b start2 170 | add $b $b 171 | st $b start2 ; start2++ 172 | ld $b mid 173 | add $b $b 174 | st $b mid ; mid++ 175 | j .while 176 | 177 | #include "lib/helix.asm" 178 | 179 | ;--- compare --- 180 | compare: ;$a < $b 181 | sub $b $a 182 | add $b $a 183 | ldi $a 1 184 | jc .ret_false 185 | ; a greater 186 | ldi $a 0 187 | ; b greater 188 | .ret_false: 189 | ret 190 | 191 | ; print subroutine 192 | print: 193 | jal clear_display 194 | ldi $b vector 195 | ldi $a 0 196 | .loop: 197 | cmp vector_len 198 | jz .end 199 | add $b $c 200 | ld $c [$c] 201 | out $c 202 | push $a 203 | mov $c $a 204 | jal print_int 205 | ldi $a SPACE 206 | jal print_char 207 | pop $a 208 | addi 1 $a 209 | j .loop 210 | .end: 211 | ret 212 | -------------------------------------------------------------------------------- /MK1_CPU/programs/multiplication.asm: -------------------------------------------------------------------------------- 1 | ; multiplication test 2 | #include "lib/mk1.cpu" 3 | 4 | ldi $a 5 5 | ldi $b 17 ; 85 6 | jal multiply 7 | out $a 8 | hlt 9 | 10 | #include "lib/mk1_std.asm" 11 | -------------------------------------------------------------------------------- /MK1_CPU/programs/multiplication_tables.asm: -------------------------------------------------------------------------------- 1 | ; multiplication tables 2 | #include "lib/mk1.cpu" 3 | 4 | init: 5 | jal init_display 6 | ldi $a 1 7 | ldi $b 1 8 | 9 | main: 10 | cmp 26 11 | jz .end 12 | .loop: 13 | push $a 14 | push $b 15 | jal multiply 16 | jal print 17 | pop $a 18 | cmp 10 19 | jz .break 20 | addi 1 $b 21 | pop $a 22 | j .loop 23 | 24 | .break: 25 | jal clear_display 26 | pop $a 27 | addi 1 $a 28 | ldi $b 1 29 | j main 30 | 31 | .end: 32 | hlt 33 | 34 | print: 35 | out 36 | jal print_int 37 | ldi $a SPACE 38 | jal print_char 39 | ret 40 | 41 | 42 | #include "lib/mk1_std.asm" 43 | #include "lib/helix.asm" 44 | -------------------------------------------------------------------------------- /MK1_CPU/programs/primes.asm: -------------------------------------------------------------------------------- 1 | ;--- computes prime numbers --- 2 | ;--- includes helix display support --- 3 | #include "lib/mk1.cpu" 4 | 5 | init: 6 | jal init_display 7 | ldi $a 3 8 | 9 | .loop: 10 | push $a 11 | jal is_prime ;call subroutine 12 | cmp 0 13 | pop $a 14 | jz .continue ;if the result is 0 do not print value 15 | push $a 16 | jal print 17 | pop $a 18 | .continue: 19 | addi 2 $a 20 | jc .end 21 | j .loop 22 | .end: 23 | hlt 24 | 25 | print: 26 | out $a 27 | jal print_int 28 | ldi $a SPACE 29 | jal print_char 30 | ret 31 | 32 | ; --- is_prime --- 33 | is_prime: 34 | ;optimization -> divisions start from half 35 | push $a 36 | slr 37 | subi 1 $b ; preparing second operand for reminder 38 | pop $a 39 | jz .ret_true 40 | 41 | ;main loop 42 | .prime_loop: 43 | push $a 44 | push $b 45 | jal reminder 46 | cmp 0 47 | jz .ret_false 48 | pop $a ; counter 49 | pop $b ; argument 50 | subi 2 $a ;counter decrement + ;if counter == 1 -> prime 51 | jz .ret_true 52 | addi 1 $a ;restore good counter 53 | mov $b $c 54 | mov $a $b 55 | mov $c $a 56 | j .prime_loop 57 | 58 | .ret_true: 59 | ldi $a 1 60 | ret 61 | .ret_false: 62 | pop $b 63 | pop $b 64 | ldi $a 0 65 | ret 66 | 67 | #include "lib/mk1_std.asm" 68 | #include "lib/helix.asm" 69 | -------------------------------------------------------------------------------- /MK1_CPU/programs/quick_sort.asm: -------------------------------------------------------------------------------- 1 | ;--- quick sort --- 2 | #include "lib/mk1.cpu" 3 | 4 | #bank ".data" 5 | data: #d8 123, 110, 20, 13, 222, 94, 205, 199, 213, 176, 58, 160, 216, 12, 73, 172, 184, 225, 125, 63, 186, 111, 252, 136, 242, 92, 101, 134, 175, 126, 195, 2, 42, 57, 149, 23, 223, 48, 214, 217 6 | vector_len = pc - data 7 | vector: #res vector_len 8 | #bank ".instr" 9 | 10 | init: 11 | jal init_display 12 | ;copy vector to tmp array 13 | ldi $a 0 14 | .loop: 15 | cmp vector_len 16 | jz main 17 | addi data $b 18 | addi vector $c 19 | ld $b [$b] 20 | st $b [$c] 21 | addi 1 $a 22 | j .loop 23 | 24 | main: 25 | jal print 26 | ldi $a vector_len 27 | subi 1 $b ;prepare end - 1 28 | ldi $a 0 29 | jal quick_sort 30 | jal print 31 | hlt 32 | 33 | 34 | quick_sort: 35 | ;cmp $b ; if low == high -> return 36 | push $a 37 | push $b 38 | jal compare_signed 39 | cmp 1 40 | pop $b 41 | pop $a 42 | jz .continue 43 | j .return 44 | .continue: 45 | push $b ; high 46 | push $a ; low 47 | jal partition; pivot 48 | subi 1 $a ; pivot -1 49 | mov $a $b 50 | pop $a 51 | push $b ;pivot -1 52 | jal quick_sort 53 | 54 | pop $a ; pivot -1 55 | addi 2 $a ; pivot +1 56 | pop $b ; high 57 | jal quick_sort 58 | ret 59 | 60 | .return: 61 | ret 62 | 63 | #bank ".data" 64 | pivot: #res 1 65 | i: #res 1 66 | j: #res 1 67 | #bank ".instr" 68 | partition: ;low, high 69 | mov $a $c ; c = low 70 | mov $b $a 71 | addi vector $a 72 | ld $a [$a] 73 | st $a pivot 74 | mov $c $a 75 | subi 1 $a 76 | st $a i 77 | st $c j 78 | .for: 79 | ld $a j 80 | push $b 81 | cmp $b 82 | jz .break 83 | 84 | addi vector $a 85 | ld $a [$a] 86 | ld $b pivot 87 | jal compare 88 | cmp 0 89 | jz .next 90 | ld $a i 91 | addi 1 $a 92 | st $a i 93 | ld $b j 94 | jal swap 95 | .next: 96 | ld $a j 97 | addi 1 $a 98 | st $a j 99 | pop $b ; high 100 | j .for 101 | 102 | .break: 103 | ld $a i 104 | addi 1 $a 105 | pop $b ; high 106 | push $a 107 | jal swap 108 | pop $a 109 | ret 110 | 111 | swap: 112 | addi vector $c ; c = [a] 113 | ld $a [$c] ; a = vec[a] 114 | mov $a $d ; d = vec[a] 115 | mov $b $a 116 | addi vector $a ; a = [b] 117 | ld $b [$a] ; b = vec[b] 118 | st $d [$a] 119 | st $b [$c] 120 | ret 121 | 122 | #include "lib/helix.asm" 123 | 124 | ;--- compare --- 125 | compare_signed: 126 | mov $a $c 127 | mov $b $d 128 | andi 128 $a 129 | mov $a $b 130 | mov $d $a 131 | andi 128 $a 132 | cmp $b 133 | jz _compare 134 | cmp 128 135 | jz .ret_true 136 | ldi $a 1 137 | ret 138 | .ret_true: 139 | ldi $a 0 140 | ret 141 | 142 | _compare: 143 | mov $c $a 144 | mov $d $b 145 | compare: ;$a < $b 146 | sub $b $a 147 | add $b $a 148 | jc .ret_false 149 | ; a greater 150 | ldi $a 0 151 | ret 152 | ; b greater 153 | .ret_false: 154 | ldi $a 1 155 | ret 156 | 157 | ; print subroutine 158 | print: 159 | jal clear_display 160 | ldi $b vector 161 | ldi $a 0 162 | .loop: 163 | cmp vector_len 164 | jz .end 165 | add $b $c 166 | ld $c [$c] 167 | out $c 168 | push $a 169 | mov $c $a 170 | jal print_int 171 | ldi $a SPACE 172 | jal print_char 173 | pop $a 174 | addi 1 $a 175 | j .loop 176 | .end: 177 | ret 178 | -------------------------------------------------------------------------------- /MK1_CPU/programs/reminder.asm: -------------------------------------------------------------------------------- 1 | ; reminder test 2 | #include "lib/mk1.cpu" 3 | 4 | ldi $a 99 5 | ldi $b 50 6 | jal reminder 7 | out $a 8 | hlt 9 | 10 | #include "lib/mk1_std.asm" 11 | -------------------------------------------------------------------------------- /MK1_CPU/programs/test_suite.asm: -------------------------------------------------------------------------------- 1 | ;--- test suite --- 2 | #include "lib/mk1.cpu" 3 | 4 | init: 5 | ;--- MOVE --- 6 | 7 | test_00: ;cmp 8 | ldi $a 243 9 | cmp 200 10 | jz end 11 | mov $a $b 12 | cmp $b 13 | jz test_01 14 | hlt 15 | 16 | test_01: 17 | ldi $a 0x77 18 | cmp 0x77 19 | jz .continue1 20 | hlt 21 | .continue1: 22 | ldi $b 0x66 23 | ldi $a 0x66 24 | cmp $b 25 | jz .test_ok 26 | hlt 27 | .test_ok: 28 | out 1 29 | 30 | test_02: 31 | ldi $a 0xFF 32 | mov $a $b 33 | mov $b $c 34 | mov $c $d 35 | cmp $b 36 | jz .continue1 37 | hlt 38 | .continue1: 39 | mov $c $a 40 | cmp $c 41 | jz .continue2 42 | hlt 43 | .continue2: 44 | mov $d $a 45 | cmp $d 46 | jz .test_ok 47 | hlt 48 | .test_ok: 49 | out 2 50 | 51 | ;--- LOAD --- 52 | #bank ".data" 53 | variable: #d8 0x55 54 | variable_location: #d8 variable 55 | #bank ".instr" 56 | test_03: 57 | ld $a variable 58 | cmp 0x55 59 | jz .test_ok 60 | hlt 61 | .test_ok: 62 | out 3 63 | 64 | test_04: 65 | ld $b variable_location 66 | ld $a [$b] 67 | cmp 0x55 68 | jz .test_ok 69 | hlt 70 | .test_ok: 71 | out 4 72 | 73 | ;--- STORE --- 74 | 75 | #bank ".data" 76 | value = 0x42 77 | store_variable: #res 1 78 | #bank ".instr" 79 | test_05: 80 | ldi $a value 81 | st $a store_variable 82 | ld $b store_variable 83 | cmp $b 84 | jz .test_ok 85 | hlt 86 | .test_ok: 87 | out 5 88 | 89 | test_06: 90 | value1 = 0x54 91 | ldi $a value1 92 | ldi $b store_variable 93 | st $a [$b] 94 | ld $b [$b] 95 | cmp $b 96 | jz .test_ok 97 | hlt 98 | .test_ok: 99 | out 6 100 | 101 | ;ALU 102 | 103 | test_07: 104 | ldi $a 77 105 | addi 10 $a 106 | subi 87 $a 107 | jz .test_ok 108 | hlt 109 | .test_ok: 110 | out 7 111 | 112 | test_08: 113 | ldi $a 77 114 | ldi $b 10 115 | sub $b $a 116 | cmp 67 117 | jz .test_ok 118 | hlt 119 | .test_ok: 120 | out 8 121 | 122 | test_09: 123 | ldi $a 77 124 | ori 112 $a 125 | cmp 125 126 | jz .test_ok 127 | hlt 128 | .test_ok: 129 | out 9 130 | 131 | test_10: 132 | ldi $a 77 133 | andi 112 $a 134 | cmp 64 135 | jz .test_ok 136 | hlt 137 | .test_ok: 138 | out 10 139 | 140 | test_11: 141 | ldi $a 0x55 142 | not 143 | cmp 0xAA 144 | jz .test_ok 145 | hlt 146 | .test_ok: 147 | out 11 148 | 149 | test_12: 150 | ldi $a 0xAA 151 | sll 152 | cmp 0x54 153 | jz .test_ok 154 | hlt 155 | .test_ok: 156 | out 12 157 | 158 | test_13: 159 | ldi $a 0x55 160 | slr 161 | cmp 0x2A 162 | jz .test_ok 163 | hlt 164 | .test_ok: 165 | out 13 166 | 167 | test_14: 168 | ldi $a 0xB2 169 | rll 170 | cmp 0x65 171 | jz .test_ok 172 | hlt 173 | .test_ok: 174 | out 14 175 | 176 | test_15: 177 | ldi $a 0x65 178 | rlr 179 | cmp 0xB2 180 | jz .test_ok 181 | hlt 182 | .test_ok: 183 | out 15 184 | 185 | ;EXTRA (pop push jal ret jz jc) 186 | 187 | test_16: 188 | mov $sp $a 189 | cmp 0 190 | jz .continue1 191 | hlt 192 | .continue1: 193 | ldi $a 123 194 | push $a 195 | mov $sp $a 196 | cmp 0xFF 197 | jz .continue2 198 | hlt 199 | .continue2: 200 | pop $b 201 | mov $sp $a 202 | cmp 0 203 | jz .continue3 204 | hlt 205 | .continue3: 206 | mov $b $a 207 | cmp 123 208 | jz .test_ok 209 | hlt 210 | .test_ok: 211 | out 16 212 | 213 | test_17: 214 | ldi $a 0xFF 215 | addi 0 $a 216 | jc end 217 | addi 1 $a 218 | jc .test_ok 219 | hlt 220 | .test_ok: 221 | out 17 222 | 223 | test_18: 224 | jal func 225 | cmp 0x55 226 | jz .test_ok 227 | hlt 228 | .test_ok: 229 | out 18 230 | 231 | end: 232 | hlt 233 | 234 | func: 235 | ldi $a 0x55 236 | ret 237 | -------------------------------------------------------------------------------- /MK1_CPU/schematics.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vascofazza/8bit-cpu/027a60365ede50967a28066cb3f8de64050dac08/MK1_CPU/schematics.pdf -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # MK1 8bit Computer 2 | 3 | Schematics and code for my home-made 8-bit CPU and its companion boards. 4 | 5 | Articles about this project: 6 | 7 | [Hackaday.com](https://hackaday.com/2020/12/31/diy-8-bit-computer-knows-all-the-tricks/) 8 | 9 | [Hackster.io](https://www.hackster.io/news/see-inside-of-a-cpu-with-the-mk1-8bit-computer-14fa9e313c73) 10 | 11 | [InformaticaLab.com](https://blog.informaticalab.com/viaggio-allinterno-di-una-cpu-con-il-mk1-8bit-computer/) 12 | 13 | ## Overview 14 | 15 | During the past month, I designed and built a programmable 8-bit CPU from scratch, out of basic series 74LS logic ICs. 16 | 17 | This repository contains pictures, schematics, and code for this project and its companion boards. 18 | 19 | * V 1.0 assembled: 20 | 21 | 22 | 23 | * V 2.0b assembled: 24 | 25 | 26 | 27 | - Helix Display Interface in action: 28 | 29 | 30 | 31 | * V 1.0 in action: 32 | 33 | **DEMO VIDEO (YouTube)** 34 | 35 | [![MK1 Computer - home-made Programmable 8bit CPU](https://img.youtube.com/vi/qSviFkpLFKI/0.jpg)](https://www.youtube.com/watch?v=qSviFkpLFKI) 36 | 37 | ## Architecture 38 | 39 | The MK1 CPU is composed of several modules, all connected trough a common 8-bit BUS, the status of each module is shown by dedicated LEDs. 40 | 41 | - The clock module is designed to allow step-by-step execution; in automatic mode the clock speed can be adjusted from 1Hz up to 32KHz. 42 | - The computer programs are stored in RAM and the CPU can be programmed both manually, by inserting binary machine code through dip-switches, and automatically via a USB PC interface. 43 | - The Programming interface is designed to be used in conjunction with an **Arduino Nano** or the **Start9** programming board. 44 | - The **Start9** programming board allows the loading of multiple programs stored on an on-board flash memory without the aid of an external computer device. 45 | - The Addressable memory space is 1024 byte, data, stack and code spaces are separated, the code address space is not writable. 46 | - The instructions are variable-length (see **instruction-set [here](https://github.com/vascofazza/8bit-cpu/tree/master/MK1_CPU/programs/lib/mk1.cpu)**) 1 or 2 bytes long (first byte for the opcode, the second one for the argument), there are 4 general purpose registers (`A`, `B`, `C`, `D`) and a `stack pointer` register for subroutine calls. 47 | - The **A**rithmetic **L**ogic **U**nit has a dedicated register for the second operand and supports the following operations: 48 | - Addition 49 | - Subtraction 50 | - OR 51 | - AND 52 | - NOT 53 | - Left/Right Shift 54 | - Left/Right Rotation 55 | - The Control Unit combinatory logic is implemented using EEPROMs (see **microcode [here](https://github.com/vascofazza/8bit-cpu/blob/master/MK1_CPU/code/microcode.txt)**) whilst each instruction is realized through a variable number of micro-instruction for a maximum of 6 micro-steps per instruction, including the fetch cycle. The instruction-set supports both direct and indirect memory access as well as absolute and conditional jumps on carry (`CF`) and zero (`ZF`) ALU flags. 56 | - The computation output can be visualized on a 4-digit display, with a dedicated register, able to represent positive and 2-complement negative numbers both in decimal and hexadecimal format. 57 | - The CPU can be extended thanks to the external BUS interface capable of handling up to 2 peripheral. The communication is bidirectional, the devices can send interrupts to the CPU to notify when new data is available. Interrupts are cleared once the data has been processed. 58 | - The only available peripheral at the moment is the **Helix** display interface, an ATmega328-driven 2x16 LCD output display. 59 | 60 | ## Structure 61 | 62 | - **MK1 CPU/**: 63 | - **8bit-computer/**: KiCad project, schematics and PCB design of the **MK1 CPU**. 64 | - **code/**: 65 | - microcode.py: generates the binary EEPROM microcode. 66 | - out_display.py: generates the binary output display EEPROM code. 67 | - uploader.py: uploads a binary MK1 program to the CPU. 68 | - mk1_computer_uploader/: Arduino programmer interface sketch. 69 | - **assembler/**: fork of the hlorenzi's assembler, improved and customized for the MK1 70 | - **programs/**: a collection of programs for the MK1 CPU plus the assembler definition 71 | - **start9_programming_interface/**: 72 | - **programming_interface/**: KiCad project, schematics and PCB design of the **Start9** programming board. 73 | - **code/start9_programming_interface/**: Arduino code for the programming interface. 74 | - **helix_display_interface/**: 75 | - **display_interface/**: KiCad project, schematics and PCB design of the **Helix** display interface board. 76 | - **code/helix_display_interface/**: Arduino code for the display interface. 77 | - **eeprom_programmer/**: KiCad project, schematics and PCB design of a simple Arduino-based eeprom programmer 78 | - **bus_breakout/**: KiCad project, schematics and PCB design of the external bus connector breakout board. 79 | 80 | ## Changelog 81 | 82 | ##### V2.0d: 83 | 84 | - minor hardware revision 85 | - revisited PCB design 86 | - new memory architecture, code memory section is read-only, stack and data live on separated spaces 87 | 88 | ##### V2.0b: 89 | 90 | - minor hardware revision 91 | - Variable-length instructions (1 or 2 bytes) 92 | - new custom assembler, thanks to https://github.com/hlorenzi/customasm 93 | - few new instructions 94 | - revisited microcode and instruction-set 95 | 96 | ##### V2.0: 97 | 98 | - 4 general purposes registers (A, B, C, D) 99 | - Stack Pointer implemented as an up-down counter 100 | - External interface and interrupt handling 101 | - Output display decodes HEX and ASCII values 102 | - Clock speed multipliers 103 | - Control Unit extended with 4 EEPROMs 104 | - Variable step microcode counter length (each instruction uses the minimum amount of micro-steps) 105 | - revisited microcode and instruction-set 106 | 107 | ##### V1.0: 108 | 109 | - Bugfixes. 110 | - `HL` and `STK` address signals available in the `MAR` dip-switch. 111 | 112 | ##### V0.1: 113 | 114 | - Initial release 115 | 116 | -------------------------------------------------------------------------------- /bus_breakout/bus_breakout-cache.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.4 2 | #encoding utf-8 3 | # 4 | # Connector_Generic_Conn_01x02 5 | # 6 | DEF Connector_Generic_Conn_01x02 J 0 40 Y N 1 F N 7 | F0 "J" 0 100 50 H V C CNN 8 | F1 "Connector_Generic_Conn_01x02" 0 -200 50 H V C CNN 9 | F2 "" 0 0 50 H I C CNN 10 | F3 "" 0 0 50 H I C CNN 11 | $FPLIST 12 | Connector*:*_1x??_* 13 | $ENDFPLIST 14 | DRAW 15 | S -50 -95 0 -105 1 1 6 N 16 | S -50 5 0 -5 1 1 6 N 17 | S -50 50 50 -150 1 1 10 f 18 | X Pin_1 1 -200 0 150 R 50 50 1 1 P 19 | X Pin_2 2 -200 -100 150 R 50 50 1 1 P 20 | ENDDRAW 21 | ENDDEF 22 | # 23 | # Connector_Generic_Conn_01x08 24 | # 25 | DEF Connector_Generic_Conn_01x08 J 0 40 Y N 1 F N 26 | F0 "J" 0 400 50 H V C CNN 27 | F1 "Connector_Generic_Conn_01x08" 0 -500 50 H V C CNN 28 | F2 "" 0 0 50 H I C CNN 29 | F3 "" 0 0 50 H I C CNN 30 | $FPLIST 31 | Connector*:*_1x??_* 32 | $ENDFPLIST 33 | DRAW 34 | S -50 -395 0 -405 1 1 6 N 35 | S -50 -295 0 -305 1 1 6 N 36 | S -50 -195 0 -205 1 1 6 N 37 | S -50 -95 0 -105 1 1 6 N 38 | S -50 5 0 -5 1 1 6 N 39 | S -50 105 0 95 1 1 6 N 40 | S -50 205 0 195 1 1 6 N 41 | S -50 305 0 295 1 1 6 N 42 | S -50 350 50 -450 1 1 10 f 43 | X Pin_1 1 -200 300 150 R 50 50 1 1 P 44 | X Pin_2 2 -200 200 150 R 50 50 1 1 P 45 | X Pin_3 3 -200 100 150 R 50 50 1 1 P 46 | X Pin_4 4 -200 0 150 R 50 50 1 1 P 47 | X Pin_5 5 -200 -100 150 R 50 50 1 1 P 48 | X Pin_6 6 -200 -200 150 R 50 50 1 1 P 49 | X Pin_7 7 -200 -300 150 R 50 50 1 1 P 50 | X Pin_8 8 -200 -400 150 R 50 50 1 1 P 51 | ENDDRAW 52 | ENDDEF 53 | # 54 | # Connector_Generic_Conn_02x09_Odd_Even 55 | # 56 | DEF Connector_Generic_Conn_02x09_Odd_Even J 0 40 Y N 1 F N 57 | F0 "J" 50 500 50 H V C CNN 58 | F1 "Connector_Generic_Conn_02x09_Odd_Even" 50 -500 50 H V C CNN 59 | F2 "" 0 0 50 H I C CNN 60 | F3 "" 0 0 50 H I C CNN 61 | $FPLIST 62 | Connector*:*_2x??_* 63 | $ENDFPLIST 64 | DRAW 65 | S -50 -395 0 -405 1 1 6 N 66 | S -50 -295 0 -305 1 1 6 N 67 | S -50 -195 0 -205 1 1 6 N 68 | S -50 -95 0 -105 1 1 6 N 69 | S -50 5 0 -5 1 1 6 N 70 | S -50 105 0 95 1 1 6 N 71 | S -50 205 0 195 1 1 6 N 72 | S -50 305 0 295 1 1 6 N 73 | S -50 405 0 395 1 1 6 N 74 | S -50 450 150 -450 1 1 10 f 75 | S 150 -395 100 -405 1 1 6 N 76 | S 150 -295 100 -305 1 1 6 N 77 | S 150 -195 100 -205 1 1 6 N 78 | S 150 -95 100 -105 1 1 6 N 79 | S 150 5 100 -5 1 1 6 N 80 | S 150 105 100 95 1 1 6 N 81 | S 150 205 100 195 1 1 6 N 82 | S 150 305 100 295 1 1 6 N 83 | S 150 405 100 395 1 1 6 N 84 | X Pin_1 1 -200 400 150 R 50 50 1 1 P 85 | X Pin_10 10 300 0 150 L 50 50 1 1 P 86 | X Pin_11 11 -200 -100 150 R 50 50 1 1 P 87 | X Pin_12 12 300 -100 150 L 50 50 1 1 P 88 | X Pin_13 13 -200 -200 150 R 50 50 1 1 P 89 | X Pin_14 14 300 -200 150 L 50 50 1 1 P 90 | X Pin_15 15 -200 -300 150 R 50 50 1 1 P 91 | X Pin_16 16 300 -300 150 L 50 50 1 1 P 92 | X Pin_17 17 -200 -400 150 R 50 50 1 1 P 93 | X Pin_18 18 300 -400 150 L 50 50 1 1 P 94 | X Pin_2 2 300 400 150 L 50 50 1 1 P 95 | X Pin_3 3 -200 300 150 R 50 50 1 1 P 96 | X Pin_4 4 300 300 150 L 50 50 1 1 P 97 | X Pin_5 5 -200 200 150 R 50 50 1 1 P 98 | X Pin_6 6 300 200 150 L 50 50 1 1 P 99 | X Pin_7 7 -200 100 150 R 50 50 1 1 P 100 | X Pin_8 8 300 100 150 L 50 50 1 1 P 101 | X Pin_9 9 -200 0 150 R 50 50 1 1 P 102 | ENDDRAW 103 | ENDDEF 104 | # 105 | #End Library 106 | -------------------------------------------------------------------------------- /bus_breakout/bus_breakout.pro: -------------------------------------------------------------------------------- 1 | update=Saturday, 28 March 2020 at 15:07:36 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 | [pcbnew] 16 | version=1 17 | PageLayoutDescrFile= 18 | LastNetListRead= 19 | CopperLayerCount=2 20 | BoardThickness=1.6 21 | AllowMicroVias=0 22 | AllowBlindVias=0 23 | RequireCourtyardDefinitions=0 24 | ProhibitOverlappingCourtyards=1 25 | MinTrackWidth=0.2 26 | MinViaDiameter=0.4 27 | MinViaDrill=0.3 28 | MinMicroViaDiameter=0.2 29 | MinMicroViaDrill=0.09999999999999999 30 | MinHoleToHole=0.25 31 | TrackWidth1=0.3 32 | ViaDiameter1=0.8 33 | ViaDrill1=0.4 34 | dPairWidth1=0.2 35 | dPairGap1=0.25 36 | dPairViaGap1=0.25 37 | SilkLineWidth=0.12 38 | SilkTextSizeV=1 39 | SilkTextSizeH=1 40 | SilkTextSizeThickness=0.15 41 | SilkTextItalic=0 42 | SilkTextUpright=1 43 | CopperLineWidth=0.2 44 | CopperTextSizeV=1.5 45 | CopperTextSizeH=1.5 46 | CopperTextThickness=0.3 47 | CopperTextItalic=0 48 | CopperTextUpright=1 49 | EdgeCutLineWidth=0.05 50 | CourtyardLineWidth=0.05 51 | OthersLineWidth=0.15 52 | OthersTextSizeV=1 53 | OthersTextSizeH=1 54 | OthersTextSizeThickness=0.15 55 | OthersTextItalic=0 56 | OthersTextUpright=1 57 | SolderMaskClearance=0.051 58 | SolderMaskMinWidth=0.25 59 | SolderPasteClearance=0 60 | SolderPasteRatio=-0 61 | [pcbnew/Layer.F.Cu] 62 | Name=F.Cu 63 | Type=0 64 | Enabled=1 65 | [pcbnew/Layer.In1.Cu] 66 | Name=In1.Cu 67 | Type=0 68 | Enabled=0 69 | [pcbnew/Layer.In2.Cu] 70 | Name=In2.Cu 71 | Type=0 72 | Enabled=0 73 | [pcbnew/Layer.In3.Cu] 74 | Name=In3.Cu 75 | Type=0 76 | Enabled=0 77 | [pcbnew/Layer.In4.Cu] 78 | Name=In4.Cu 79 | Type=0 80 | Enabled=0 81 | [pcbnew/Layer.In5.Cu] 82 | Name=In5.Cu 83 | Type=0 84 | Enabled=0 85 | [pcbnew/Layer.In6.Cu] 86 | Name=In6.Cu 87 | Type=0 88 | Enabled=0 89 | [pcbnew/Layer.In7.Cu] 90 | Name=In7.Cu 91 | Type=0 92 | Enabled=0 93 | [pcbnew/Layer.In8.Cu] 94 | Name=In8.Cu 95 | Type=0 96 | Enabled=0 97 | [pcbnew/Layer.In9.Cu] 98 | Name=In9.Cu 99 | Type=0 100 | Enabled=0 101 | [pcbnew/Layer.In10.Cu] 102 | Name=In10.Cu 103 | Type=0 104 | Enabled=0 105 | [pcbnew/Layer.In11.Cu] 106 | Name=In11.Cu 107 | Type=0 108 | Enabled=0 109 | [pcbnew/Layer.In12.Cu] 110 | Name=In12.Cu 111 | Type=0 112 | Enabled=0 113 | [pcbnew/Layer.In13.Cu] 114 | Name=In13.Cu 115 | Type=0 116 | Enabled=0 117 | [pcbnew/Layer.In14.Cu] 118 | Name=In14.Cu 119 | Type=0 120 | Enabled=0 121 | [pcbnew/Layer.In15.Cu] 122 | Name=In15.Cu 123 | Type=0 124 | Enabled=0 125 | [pcbnew/Layer.In16.Cu] 126 | Name=In16.Cu 127 | Type=0 128 | Enabled=0 129 | [pcbnew/Layer.In17.Cu] 130 | Name=In17.Cu 131 | Type=0 132 | Enabled=0 133 | [pcbnew/Layer.In18.Cu] 134 | Name=In18.Cu 135 | Type=0 136 | Enabled=0 137 | [pcbnew/Layer.In19.Cu] 138 | Name=In19.Cu 139 | Type=0 140 | Enabled=0 141 | [pcbnew/Layer.In20.Cu] 142 | Name=In20.Cu 143 | Type=0 144 | Enabled=0 145 | [pcbnew/Layer.In21.Cu] 146 | Name=In21.Cu 147 | Type=0 148 | Enabled=0 149 | [pcbnew/Layer.In22.Cu] 150 | Name=In22.Cu 151 | Type=0 152 | Enabled=0 153 | [pcbnew/Layer.In23.Cu] 154 | Name=In23.Cu 155 | Type=0 156 | Enabled=0 157 | [pcbnew/Layer.In24.Cu] 158 | Name=In24.Cu 159 | Type=0 160 | Enabled=0 161 | [pcbnew/Layer.In25.Cu] 162 | Name=In25.Cu 163 | Type=0 164 | Enabled=0 165 | [pcbnew/Layer.In26.Cu] 166 | Name=In26.Cu 167 | Type=0 168 | Enabled=0 169 | [pcbnew/Layer.In27.Cu] 170 | Name=In27.Cu 171 | Type=0 172 | Enabled=0 173 | [pcbnew/Layer.In28.Cu] 174 | Name=In28.Cu 175 | Type=0 176 | Enabled=0 177 | [pcbnew/Layer.In29.Cu] 178 | Name=In29.Cu 179 | Type=0 180 | Enabled=0 181 | [pcbnew/Layer.In30.Cu] 182 | Name=In30.Cu 183 | Type=0 184 | Enabled=0 185 | [pcbnew/Layer.B.Cu] 186 | Name=B.Cu 187 | Type=0 188 | Enabled=1 189 | [pcbnew/Layer.B.Adhes] 190 | Enabled=1 191 | [pcbnew/Layer.F.Adhes] 192 | Enabled=1 193 | [pcbnew/Layer.B.Paste] 194 | Enabled=1 195 | [pcbnew/Layer.F.Paste] 196 | Enabled=1 197 | [pcbnew/Layer.B.SilkS] 198 | Enabled=1 199 | [pcbnew/Layer.F.SilkS] 200 | Enabled=1 201 | [pcbnew/Layer.B.Mask] 202 | Enabled=1 203 | [pcbnew/Layer.F.Mask] 204 | Enabled=1 205 | [pcbnew/Layer.Dwgs.User] 206 | Enabled=1 207 | [pcbnew/Layer.Cmts.User] 208 | Enabled=1 209 | [pcbnew/Layer.Eco1.User] 210 | Enabled=1 211 | [pcbnew/Layer.Eco2.User] 212 | Enabled=1 213 | [pcbnew/Layer.Edge.Cuts] 214 | Enabled=1 215 | [pcbnew/Layer.Margin] 216 | Enabled=1 217 | [pcbnew/Layer.B.CrtYd] 218 | Enabled=1 219 | [pcbnew/Layer.F.CrtYd] 220 | Enabled=1 221 | [pcbnew/Layer.B.Fab] 222 | Enabled=1 223 | [pcbnew/Layer.F.Fab] 224 | Enabled=1 225 | [pcbnew/Layer.Rescue] 226 | Enabled=0 227 | [pcbnew/Netclasses] 228 | [pcbnew/Netclasses/Default] 229 | Name=Default 230 | Clearance=0.2 231 | TrackWidth=0.3 232 | ViaDiameter=0.8 233 | ViaDrill=0.4 234 | uViaDiameter=0.3 235 | uViaDrill=0.1 236 | dPairWidth=0.2 237 | dPairGap=0.25 238 | dPairViaGap=0.25 239 | -------------------------------------------------------------------------------- /bus_breakout/bus_breakout.sch: -------------------------------------------------------------------------------- 1 | EESchema Schematic File Version 4 2 | EELAYER 30 0 3 | EELAYER END 4 | $Descr A4 11693 8268 5 | encoding utf-8 6 | Sheet 1 1 7 | Title "" 8 | Date "" 9 | Rev "" 10 | Comp "" 11 | Comment1 "" 12 | Comment2 "" 13 | Comment3 "" 14 | Comment4 "" 15 | $EndDescr 16 | $Comp 17 | L Connector_Generic:Conn_01x08 J1 18 | U 1 1 5E7F3AE4 19 | P 4500 5300 20 | F 0 "J1" V 4372 4812 50 0000 R CNN 21 | F 1 "Signals" V 4463 4812 50 0000 R CNN 22 | F 2 "Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_Vertical" H 4500 5300 50 0001 C CNN 23 | F 3 "~" H 4500 5300 50 0001 C CNN 24 | 1 4500 5300 25 | 0 -1 1 0 26 | $EndComp 27 | $Comp 28 | L Connector_Generic:Conn_01x02 J3 29 | U 1 1 5E7F8A6C 30 | P 6200 4500 31 | F 0 "J3" H 6280 4492 50 0000 L CNN 32 | F 1 "Power" H 6280 4401 50 0000 L CNN 33 | F 2 "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical" H 6200 4500 50 0001 C CNN 34 | F 3 "~" H 6200 4500 50 0001 C CNN 35 | 1 6200 4500 36 | 1 0 0 -1 37 | $EndComp 38 | $Comp 39 | L Connector_Generic:Conn_02x09_Odd_Even J4 40 | U 1 1 5E7F9439 41 | P 4600 4600 42 | F 0 "J4" V 4696 4112 50 0000 R CNN 43 | F 1 "Conn_02x09_Odd_Even" V 4605 4112 50 0000 R CNN 44 | F 2 "Connector_PinHeader_2.54mm:PinHeader_2x09_P2.54mm_Vertical" H 4600 4600 50 0001 C CNN 45 | F 3 "~" H 4600 4600 50 0001 C CNN 46 | 1 4600 4600 47 | 0 -1 -1 0 48 | $EndComp 49 | Wire Wire Line 50 | 4200 4000 4200 4300 51 | Wire Wire Line 52 | 4300 4000 4300 4300 53 | Wire Wire Line 54 | 4400 4000 4400 4300 55 | Wire Wire Line 56 | 4500 4000 4500 4300 57 | Wire Wire Line 58 | 4600 4000 4600 4300 59 | Wire Wire Line 60 | 4700 4000 4700 4300 61 | Wire Wire Line 62 | 4800 4000 4800 4300 63 | Wire Wire Line 64 | 4900 4000 4900 4300 65 | Wire Wire Line 66 | 4200 5100 4200 4800 67 | Wire Wire Line 68 | 4300 5100 4300 4800 69 | Wire Wire Line 70 | 4400 5100 4400 4800 71 | Wire Wire Line 72 | 4500 5100 4500 4800 73 | Wire Wire Line 74 | 4600 5100 4600 4800 75 | Wire Wire Line 76 | 4700 5100 4700 4800 77 | Wire Wire Line 78 | 4800 5100 4800 4800 79 | Wire Wire Line 80 | 4900 5100 4900 4800 81 | Wire Wire Line 82 | 6000 4800 5000 4800 83 | Wire Wire Line 84 | 5000 4300 6000 4300 85 | Wire Wire Line 86 | 6000 4300 6000 4500 87 | $Comp 88 | L Connector_Generic:Conn_01x08 J2 89 | U 1 1 5E7F6C54 90 | P 4500 3800 91 | F 0 "J2" V 4464 3312 50 0000 R CNN 92 | F 1 "BUS" V 4373 3312 50 0000 R CNN 93 | F 2 "Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_Vertical" H 4500 3800 50 0001 C CNN 94 | F 3 "~" H 4500 3800 50 0001 C CNN 95 | 1 4500 3800 96 | 0 -1 -1 0 97 | $EndComp 98 | Wire Wire Line 99 | 6000 4600 6000 4800 100 | $EndSCHEMATC 101 | -------------------------------------------------------------------------------- /eeprom_programmer/arduino_eeprom_programmer/arduino_eeprom_programmer.pro: -------------------------------------------------------------------------------- 1 | update=Friday, 27 March 2020 at 16:26:40 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 | [pcbnew] 16 | version=1 17 | PageLayoutDescrFile= 18 | LastNetListRead= 19 | CopperLayerCount=2 20 | BoardThickness=1.6 21 | AllowMicroVias=0 22 | AllowBlindVias=0 23 | RequireCourtyardDefinitions=0 24 | ProhibitOverlappingCourtyards=1 25 | MinTrackWidth=0.2 26 | MinViaDiameter=0.4 27 | MinViaDrill=0.3 28 | MinMicroViaDiameter=0.2 29 | MinMicroViaDrill=0.09999999999999999 30 | MinHoleToHole=0.25 31 | TrackWidth1=0.254 32 | ViaDiameter1=0.6 33 | ViaDrill1=0.4 34 | dPairWidth1=0.3 35 | dPairGap1=0.25 36 | dPairViaGap1=0.25 37 | SilkLineWidth=0.12 38 | SilkTextSizeV=1 39 | SilkTextSizeH=1 40 | SilkTextSizeThickness=0.15 41 | SilkTextItalic=0 42 | SilkTextUpright=1 43 | CopperLineWidth=0.2 44 | CopperTextSizeV=1.5 45 | CopperTextSizeH=1.5 46 | CopperTextThickness=0.3 47 | CopperTextItalic=0 48 | CopperTextUpright=1 49 | EdgeCutLineWidth=0.05 50 | CourtyardLineWidth=0.05 51 | OthersLineWidth=0.15 52 | OthersTextSizeV=1 53 | OthersTextSizeH=1 54 | OthersTextSizeThickness=0.15 55 | OthersTextItalic=0 56 | OthersTextUpright=1 57 | SolderMaskClearance=0.051 58 | SolderMaskMinWidth=0.25 59 | SolderPasteClearance=0 60 | SolderPasteRatio=-0 61 | [pcbnew/Layer.F.Cu] 62 | Name=F.Cu 63 | Type=0 64 | Enabled=1 65 | [pcbnew/Layer.In1.Cu] 66 | Name=In1.Cu 67 | Type=0 68 | Enabled=0 69 | [pcbnew/Layer.In2.Cu] 70 | Name=In2.Cu 71 | Type=0 72 | Enabled=0 73 | [pcbnew/Layer.In3.Cu] 74 | Name=In3.Cu 75 | Type=0 76 | Enabled=0 77 | [pcbnew/Layer.In4.Cu] 78 | Name=In4.Cu 79 | Type=0 80 | Enabled=0 81 | [pcbnew/Layer.In5.Cu] 82 | Name=In5.Cu 83 | Type=0 84 | Enabled=0 85 | [pcbnew/Layer.In6.Cu] 86 | Name=In6.Cu 87 | Type=0 88 | Enabled=0 89 | [pcbnew/Layer.In7.Cu] 90 | Name=In7.Cu 91 | Type=0 92 | Enabled=0 93 | [pcbnew/Layer.In8.Cu] 94 | Name=In8.Cu 95 | Type=0 96 | Enabled=0 97 | [pcbnew/Layer.In9.Cu] 98 | Name=In9.Cu 99 | Type=0 100 | Enabled=0 101 | [pcbnew/Layer.In10.Cu] 102 | Name=In10.Cu 103 | Type=0 104 | Enabled=0 105 | [pcbnew/Layer.In11.Cu] 106 | Name=In11.Cu 107 | Type=0 108 | Enabled=0 109 | [pcbnew/Layer.In12.Cu] 110 | Name=In12.Cu 111 | Type=0 112 | Enabled=0 113 | [pcbnew/Layer.In13.Cu] 114 | Name=In13.Cu 115 | Type=0 116 | Enabled=0 117 | [pcbnew/Layer.In14.Cu] 118 | Name=In14.Cu 119 | Type=0 120 | Enabled=0 121 | [pcbnew/Layer.In15.Cu] 122 | Name=In15.Cu 123 | Type=0 124 | Enabled=0 125 | [pcbnew/Layer.In16.Cu] 126 | Name=In16.Cu 127 | Type=0 128 | Enabled=0 129 | [pcbnew/Layer.In17.Cu] 130 | Name=In17.Cu 131 | Type=0 132 | Enabled=0 133 | [pcbnew/Layer.In18.Cu] 134 | Name=In18.Cu 135 | Type=0 136 | Enabled=0 137 | [pcbnew/Layer.In19.Cu] 138 | Name=In19.Cu 139 | Type=0 140 | Enabled=0 141 | [pcbnew/Layer.In20.Cu] 142 | Name=In20.Cu 143 | Type=0 144 | Enabled=0 145 | [pcbnew/Layer.In21.Cu] 146 | Name=In21.Cu 147 | Type=0 148 | Enabled=0 149 | [pcbnew/Layer.In22.Cu] 150 | Name=In22.Cu 151 | Type=0 152 | Enabled=0 153 | [pcbnew/Layer.In23.Cu] 154 | Name=In23.Cu 155 | Type=0 156 | Enabled=0 157 | [pcbnew/Layer.In24.Cu] 158 | Name=In24.Cu 159 | Type=0 160 | Enabled=0 161 | [pcbnew/Layer.In25.Cu] 162 | Name=In25.Cu 163 | Type=0 164 | Enabled=0 165 | [pcbnew/Layer.In26.Cu] 166 | Name=In26.Cu 167 | Type=0 168 | Enabled=0 169 | [pcbnew/Layer.In27.Cu] 170 | Name=In27.Cu 171 | Type=0 172 | Enabled=0 173 | [pcbnew/Layer.In28.Cu] 174 | Name=In28.Cu 175 | Type=0 176 | Enabled=0 177 | [pcbnew/Layer.In29.Cu] 178 | Name=In29.Cu 179 | Type=0 180 | Enabled=0 181 | [pcbnew/Layer.In30.Cu] 182 | Name=In30.Cu 183 | Type=0 184 | Enabled=0 185 | [pcbnew/Layer.B.Cu] 186 | Name=B.Cu 187 | Type=0 188 | Enabled=1 189 | [pcbnew/Layer.B.Adhes] 190 | Enabled=1 191 | [pcbnew/Layer.F.Adhes] 192 | Enabled=1 193 | [pcbnew/Layer.B.Paste] 194 | Enabled=1 195 | [pcbnew/Layer.F.Paste] 196 | Enabled=1 197 | [pcbnew/Layer.B.SilkS] 198 | Enabled=1 199 | [pcbnew/Layer.F.SilkS] 200 | Enabled=1 201 | [pcbnew/Layer.B.Mask] 202 | Enabled=1 203 | [pcbnew/Layer.F.Mask] 204 | Enabled=1 205 | [pcbnew/Layer.Dwgs.User] 206 | Enabled=1 207 | [pcbnew/Layer.Cmts.User] 208 | Enabled=1 209 | [pcbnew/Layer.Eco1.User] 210 | Enabled=1 211 | [pcbnew/Layer.Eco2.User] 212 | Enabled=1 213 | [pcbnew/Layer.Edge.Cuts] 214 | Enabled=1 215 | [pcbnew/Layer.Margin] 216 | Enabled=1 217 | [pcbnew/Layer.B.CrtYd] 218 | Enabled=1 219 | [pcbnew/Layer.F.CrtYd] 220 | Enabled=1 221 | [pcbnew/Layer.B.Fab] 222 | Enabled=1 223 | [pcbnew/Layer.F.Fab] 224 | Enabled=1 225 | [pcbnew/Layer.Rescue] 226 | Enabled=0 227 | [pcbnew/Netclasses] 228 | [pcbnew/Netclasses/Default] 229 | Name=Default 230 | Clearance=0.253997 231 | TrackWidth=0.254 232 | ViaDiameter=0.6 233 | ViaDrill=0.4 234 | uViaDiameter=0.3 235 | uViaDrill=0.1 236 | dPairWidth=0.3 237 | dPairGap=0.25 238 | dPairViaGap=0.25 239 | [pcbnew/Netclasses/1] 240 | Name=POWER 241 | Clearance=0.253997 242 | TrackWidth=0.3 243 | ViaDiameter=0.6 244 | ViaDrill=0.4 245 | uViaDiameter=0.3 246 | uViaDrill=0.1 247 | dPairWidth=0.3 248 | dPairGap=0.25 249 | dPairViaGap=0.25 250 | -------------------------------------------------------------------------------- /eeprom_programmer/arduino_eeprom_programmer/fp-info-cache: -------------------------------------------------------------------------------- 1 | 0 2 | -------------------------------------------------------------------------------- /eeprom_programmer/arduino_eeprom_programmer/fp-lib-table: -------------------------------------------------------------------------------- 1 | (fp_lib_table 2 | (lib (name Arduino)(type KiCad)(uri "/Users/fscozzafava/Library/Mobile Documents/com~apple~CloudDocs/computer project/programming_interface/arduino-kicad-library/Arduino.pretty")(options "")(descr "")) 3 | (lib (name 8bit-custom-footprints)(type KiCad)(uri "/Users/fscozzafava/Library/Mobile Documents/com~apple~CloudDocs/computer project/8bit-computer/8bit-custom-footprints.pretty")(options "")(descr "")) 4 | ) 5 | -------------------------------------------------------------------------------- /eeprom_programmer/arduino_eeprom_programmer/images/arduino_eeprom_programmer_render.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vascofazza/8bit-cpu/027a60365ede50967a28066cb3f8de64050dac08/eeprom_programmer/arduino_eeprom_programmer/images/arduino_eeprom_programmer_render.png -------------------------------------------------------------------------------- /eeprom_programmer/arduino_eeprom_programmer/sym-lib-table: -------------------------------------------------------------------------------- 1 | (sym_lib_table 2 | (lib (name 8bit-computer-rescue)(type Legacy)(uri "/Users/fscozzafava/Library/Mobile Documents/com~apple~CloudDocs/computer project/8bit-computer/8bit-computer-rescue.lib")(options "")(descr "")) 3 | ) 4 | -------------------------------------------------------------------------------- /helix_display_interface/README.md: -------------------------------------------------------------------------------- 1 | # Helix Display Interface 2 | 3 | An ATmega328-driven LCD Display peripheral for the MK1 8-bit CPU. 4 | 5 | pcb_render 6 | 7 | ## Description 8 | 9 | LCD character display interface for the MK1 CPU computer. 10 | 11 | Uses an ATmega328P as driver and implements Integer and Character output mode. 12 | 13 | Commands and data are both transmitted on the external bus. 14 | 15 | There are two external bus connectors for peripheral daisy chaining. 16 | 17 | -------------------------------------------------------------------------------- /helix_display_interface/code/helix_display_interface/helix_display_interface.ino: -------------------------------------------------------------------------------- 1 | #include 2 | const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; 3 | LiquidCrystal lcd(rs, en, d4, d5, d6, d7); 4 | 5 | #define CLK PB7 6 | #define CLR PB6 7 | #define SIG1 13 8 | #define SIG0 10 9 | #define EN 9 10 | #define IRQ 8 11 | 12 | #define read_clock PINB & 0x80 13 | #define read_mode ((PINB & 0x4) >> 2) + ((PINB & 0x20) >> 4) 14 | #define read_bus (PINC & 0x3F) | (PIND & 0xC0) 15 | #define disable_signal PORTB &= 0xfe 16 | #define enable_signal PORTB |= 0x1 17 | #define read_enable PINB & 2 18 | #define read_clear PINB & B01000000 19 | 20 | volatile boolean data_available = false; 21 | volatile byte data = 0; 22 | volatile byte mode = 0; 23 | int written_bytes = 0; 24 | char buf[4]; 25 | char line1[17]; 26 | char line2[17]; 27 | int cursor = 0; 28 | int curr_line = 0; 29 | 30 | void setup() { 31 | lcd.begin(16, 2); 32 | lcd.setCursor(0, 0); 33 | lcd.clear(); 34 | 35 | Serial.begin(9600); 36 | 37 | pinMode(SIG0, INPUT); 38 | pinMode(SIG1, INPUT); 39 | pinMode(EN, INPUT); 40 | pinMode(IRQ, OUTPUT); 41 | 42 | set_bus_input(); 43 | DDRB &= ~B11000000; 44 | 45 | lcd.print(" Helix Display"); 46 | delay(1000); 47 | lcd.clear(); 48 | lcd.blink(); 49 | enable_signal; 50 | } 51 | 52 | void set_bus_input() 53 | { 54 | DDRC &= ~B00111111; 55 | DDRD &= ~B11000000; 56 | } 57 | 58 | void set_bus_output() 59 | { 60 | DDRC |= B00111111; 61 | DDRD |= B11000000; 62 | } 63 | void write_bus(byte data) 64 | { 65 | PORTC = (PORTC & 0xC0) | (data & 0x3f); 66 | PORTD = (PORTD & 0x3F) | (data & 0xC0); 67 | } 68 | void scroll_line() 69 | { 70 | if (curr_line == 0) 71 | { 72 | curr_line = 1; 73 | lcd.setCursor(0, 1); 74 | } 75 | else 76 | { 77 | lcd.clear(); 78 | lcd.setCursor(0, 0); 79 | lcd.print(line2); 80 | strcpy(line1, line2); 81 | lcd.setCursor(0, 1); 82 | curr_line = 1; 83 | } 84 | } 85 | 86 | void update_display(char data[]) 87 | { 88 | int count = 0; 89 | char* line = curr_line == 0 ? line1 : line2; 90 | while (data[++count] != 0); 91 | if (cursor + count > 16 || (mode == 2 && data[0] == '\n')) { 92 | scroll_line(); 93 | cursor = 0; 94 | line = line2; 95 | } 96 | if (mode == 2 && buf[0] == '\n') 97 | return; 98 | strcpy(line + cursor, data); 99 | cursor += count; 100 | lcd.print(buf); 101 | written_bytes++; 102 | } 103 | 104 | void loop() { 105 | mode = read_mode; 106 | data = read_bus; 107 | if (read_enable) 108 | { 109 | disable_signal; 110 | data_available = mode > 0; 111 | } 112 | 113 | if (data_available) 114 | { 115 | //INTEGER 116 | if (mode == 1) 117 | { 118 | itoa(data, buf, 10); 119 | update_display(buf); 120 | } 121 | //CHAR 122 | else if (mode == 2) 123 | { 124 | buf[0] = data; 125 | buf[1] = 0; 126 | update_display(buf); 127 | Serial.print((char)data); 128 | } 129 | else if (mode == 3) 130 | { 131 | lcd.clear(); 132 | lcd.setCursor(0, 0); 133 | written_bytes = 0; 134 | cursor = 0; 135 | } 136 | data_available = false; 137 | delay(25); 138 | enable_signal; 139 | } 140 | else if (read_clear) 141 | { 142 | lcd.home(); 143 | lcd.clear(); 144 | written_bytes = 0; 145 | Serial.println(); 146 | cursor = 0; 147 | enable_signal; 148 | } 149 | } 150 | -------------------------------------------------------------------------------- /helix_display_interface/display_interface/display_interface.pro: -------------------------------------------------------------------------------- 1 | update=Saturday, 28 March 2020 at 01:08:42 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 | [pcbnew] 16 | version=1 17 | PageLayoutDescrFile= 18 | LastNetListRead= 19 | CopperLayerCount=2 20 | BoardThickness=1.6 21 | AllowMicroVias=0 22 | AllowBlindVias=0 23 | RequireCourtyardDefinitions=0 24 | ProhibitOverlappingCourtyards=1 25 | MinTrackWidth=0.2 26 | MinViaDiameter=0.4 27 | MinViaDrill=0.3 28 | MinMicroViaDiameter=0.2 29 | MinMicroViaDrill=0.09999999999999999 30 | MinHoleToHole=0.25 31 | TrackWidth1=0.254 32 | ViaDiameter1=0.6 33 | ViaDrill1=0.4 34 | dPairWidth1=0.3 35 | dPairGap1=0.25 36 | dPairViaGap1=0.25 37 | SilkLineWidth=0.12 38 | SilkTextSizeV=1 39 | SilkTextSizeH=1 40 | SilkTextSizeThickness=0.15 41 | SilkTextItalic=0 42 | SilkTextUpright=1 43 | CopperLineWidth=0.2 44 | CopperTextSizeV=1.5 45 | CopperTextSizeH=1.5 46 | CopperTextThickness=0.3 47 | CopperTextItalic=0 48 | CopperTextUpright=1 49 | EdgeCutLineWidth=0.05 50 | CourtyardLineWidth=0.05 51 | OthersLineWidth=0.15 52 | OthersTextSizeV=1 53 | OthersTextSizeH=1 54 | OthersTextSizeThickness=0.15 55 | OthersTextItalic=0 56 | OthersTextUpright=1 57 | SolderMaskClearance=0.051 58 | SolderMaskMinWidth=0.25 59 | SolderPasteClearance=0 60 | SolderPasteRatio=-0 61 | [pcbnew/Layer.F.Cu] 62 | Name=F.Cu 63 | Type=0 64 | Enabled=1 65 | [pcbnew/Layer.In1.Cu] 66 | Name=In1.Cu 67 | Type=0 68 | Enabled=0 69 | [pcbnew/Layer.In2.Cu] 70 | Name=In2.Cu 71 | Type=0 72 | Enabled=0 73 | [pcbnew/Layer.In3.Cu] 74 | Name=In3.Cu 75 | Type=0 76 | Enabled=0 77 | [pcbnew/Layer.In4.Cu] 78 | Name=In4.Cu 79 | Type=0 80 | Enabled=0 81 | [pcbnew/Layer.In5.Cu] 82 | Name=In5.Cu 83 | Type=0 84 | Enabled=0 85 | [pcbnew/Layer.In6.Cu] 86 | Name=In6.Cu 87 | Type=0 88 | Enabled=0 89 | [pcbnew/Layer.In7.Cu] 90 | Name=In7.Cu 91 | Type=0 92 | Enabled=0 93 | [pcbnew/Layer.In8.Cu] 94 | Name=In8.Cu 95 | Type=0 96 | Enabled=0 97 | [pcbnew/Layer.In9.Cu] 98 | Name=In9.Cu 99 | Type=0 100 | Enabled=0 101 | [pcbnew/Layer.In10.Cu] 102 | Name=In10.Cu 103 | Type=0 104 | Enabled=0 105 | [pcbnew/Layer.In11.Cu] 106 | Name=In11.Cu 107 | Type=0 108 | Enabled=0 109 | [pcbnew/Layer.In12.Cu] 110 | Name=In12.Cu 111 | Type=0 112 | Enabled=0 113 | [pcbnew/Layer.In13.Cu] 114 | Name=In13.Cu 115 | Type=0 116 | Enabled=0 117 | [pcbnew/Layer.In14.Cu] 118 | Name=In14.Cu 119 | Type=0 120 | Enabled=0 121 | [pcbnew/Layer.In15.Cu] 122 | Name=In15.Cu 123 | Type=0 124 | Enabled=0 125 | [pcbnew/Layer.In16.Cu] 126 | Name=In16.Cu 127 | Type=0 128 | Enabled=0 129 | [pcbnew/Layer.In17.Cu] 130 | Name=In17.Cu 131 | Type=0 132 | Enabled=0 133 | [pcbnew/Layer.In18.Cu] 134 | Name=In18.Cu 135 | Type=0 136 | Enabled=0 137 | [pcbnew/Layer.In19.Cu] 138 | Name=In19.Cu 139 | Type=0 140 | Enabled=0 141 | [pcbnew/Layer.In20.Cu] 142 | Name=In20.Cu 143 | Type=0 144 | Enabled=0 145 | [pcbnew/Layer.In21.Cu] 146 | Name=In21.Cu 147 | Type=0 148 | Enabled=0 149 | [pcbnew/Layer.In22.Cu] 150 | Name=In22.Cu 151 | Type=0 152 | Enabled=0 153 | [pcbnew/Layer.In23.Cu] 154 | Name=In23.Cu 155 | Type=0 156 | Enabled=0 157 | [pcbnew/Layer.In24.Cu] 158 | Name=In24.Cu 159 | Type=0 160 | Enabled=0 161 | [pcbnew/Layer.In25.Cu] 162 | Name=In25.Cu 163 | Type=0 164 | Enabled=0 165 | [pcbnew/Layer.In26.Cu] 166 | Name=In26.Cu 167 | Type=0 168 | Enabled=0 169 | [pcbnew/Layer.In27.Cu] 170 | Name=In27.Cu 171 | Type=0 172 | Enabled=0 173 | [pcbnew/Layer.In28.Cu] 174 | Name=In28.Cu 175 | Type=0 176 | Enabled=0 177 | [pcbnew/Layer.In29.Cu] 178 | Name=In29.Cu 179 | Type=0 180 | Enabled=0 181 | [pcbnew/Layer.In30.Cu] 182 | Name=In30.Cu 183 | Type=0 184 | Enabled=0 185 | [pcbnew/Layer.B.Cu] 186 | Name=B.Cu 187 | Type=0 188 | Enabled=1 189 | [pcbnew/Layer.B.Adhes] 190 | Enabled=1 191 | [pcbnew/Layer.F.Adhes] 192 | Enabled=1 193 | [pcbnew/Layer.B.Paste] 194 | Enabled=1 195 | [pcbnew/Layer.F.Paste] 196 | Enabled=1 197 | [pcbnew/Layer.B.SilkS] 198 | Enabled=1 199 | [pcbnew/Layer.F.SilkS] 200 | Enabled=1 201 | [pcbnew/Layer.B.Mask] 202 | Enabled=1 203 | [pcbnew/Layer.F.Mask] 204 | Enabled=1 205 | [pcbnew/Layer.Dwgs.User] 206 | Enabled=1 207 | [pcbnew/Layer.Cmts.User] 208 | Enabled=1 209 | [pcbnew/Layer.Eco1.User] 210 | Enabled=1 211 | [pcbnew/Layer.Eco2.User] 212 | Enabled=1 213 | [pcbnew/Layer.Edge.Cuts] 214 | Enabled=1 215 | [pcbnew/Layer.Margin] 216 | Enabled=1 217 | [pcbnew/Layer.B.CrtYd] 218 | Enabled=1 219 | [pcbnew/Layer.F.CrtYd] 220 | Enabled=1 221 | [pcbnew/Layer.B.Fab] 222 | Enabled=1 223 | [pcbnew/Layer.F.Fab] 224 | Enabled=1 225 | [pcbnew/Layer.Rescue] 226 | Enabled=0 227 | [pcbnew/Netclasses] 228 | [pcbnew/Netclasses/Default] 229 | Name=Default 230 | Clearance=0.253997 231 | TrackWidth=0.254 232 | ViaDiameter=0.6 233 | ViaDrill=0.4 234 | uViaDiameter=0.3 235 | uViaDrill=0.1 236 | dPairWidth=0.3 237 | dPairGap=0.25 238 | dPairViaGap=0.25 239 | [pcbnew/Netclasses/1] 240 | Name=POWER 241 | Clearance=0.253997 242 | TrackWidth=0.3 243 | ViaDiameter=0.6 244 | ViaDrill=0.4 245 | uViaDiameter=0.3 246 | uViaDrill=0.1 247 | dPairWidth=0.3 248 | dPairGap=0.25 249 | dPairViaGap=0.25 250 | -------------------------------------------------------------------------------- /helix_display_interface/images/display_interface_render.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vascofazza/8bit-cpu/027a60365ede50967a28066cb3f8de64050dac08/helix_display_interface/images/display_interface_render.png -------------------------------------------------------------------------------- /helix_display_interface/images/hello_world.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vascofazza/8bit-cpu/027a60365ede50967a28066cb3f8de64050dac08/helix_display_interface/images/hello_world.gif -------------------------------------------------------------------------------- /start9_programming_interface/README.md: -------------------------------------------------------------------------------- 1 | # Start9 Programming Interface 2 | 3 | An ATmega328-driven programming interface for the MK1 8-bit CPU. 4 | 5 | pcb_render 6 | 7 | ## Description 8 | 9 | Writes a program, stored in a flash memory, into the working memory of the MK1 CPU. 10 | 11 | Supports up to 16 program slots, the program/next button is used to select the bank and write the selected program. -------------------------------------------------------------------------------- /start9_programming_interface/code/flash_composer.py: -------------------------------------------------------------------------------- 1 | import argparse 2 | from io import BytesIO 3 | import sys 4 | 5 | def byte(value): 6 | return (value).to_bytes(1, 'big', signed=False) 7 | 8 | def write(address, data, out): 9 | out.seek(address) 10 | data = data & 255 11 | out.write(data.to_bytes(1, 'big')) 12 | 13 | def assemble_binary(files): 14 | b = bytes() 15 | buffer = BytesIO(b) 16 | #Program data bytes 17 | print("Generating binary...") 18 | 19 | #address-out locations 20 | for i in range(512): 21 | buffer.write(byte(i // 2)) 22 | 23 | current_bank = 1 24 | for file in files: 25 | curr_address = 0 26 | with open(file, 'rb') as f: 27 | data = 1 28 | while data: 29 | data = f.read(1) 30 | if curr_address > 0xFF: 31 | buffer.seek(current_bank * 512 + (curr_address - 0x100) * 2 + 1) 32 | buffer.write(data) 33 | else: 34 | buffer.seek(current_bank * 512 + curr_address * 2) 35 | buffer.write(data) 36 | curr_address += 1 37 | current_bank += 1 38 | 39 | print("done") 40 | return buffer.getvalue() 41 | 42 | if __name__ == "__main__": 43 | 44 | parser = argparse.ArgumentParser(description='Flash memory composer for Start9 Programming Interface.') 45 | parser.add_argument('-i', '--input', metavar='input', type=str, nargs='+', 46 | required=True, help='input files name') 47 | 48 | args = parser.parse_args() 49 | 50 | if len(args.input) > 14: 51 | print("max number of programs reached: %d. Skipping last %d." % (len(args.input), len(args.input) - 14)) 52 | 53 | binary = assemble_binary(args.input) 54 | 55 | out_file_name = "start9.bin" 56 | 57 | with open(out_file_name, 'wb') as out: 58 | out.write(binary) 59 | 60 | with open("start9.txt", "w") as f: 61 | for idx, file in enumerate(args.input): 62 | f.write("%d\t%s\n" % (idx + 1, file[file.rfind("/") + 1:])) 63 | 64 | print("%s generated (%d bytes)."%(out_file_name, len(binary))) 65 | -------------------------------------------------------------------------------- /start9_programming_interface/code/start9.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vascofazza/8bit-cpu/027a60365ede50967a28066cb3f8de64050dac08/start9_programming_interface/code/start9.bin -------------------------------------------------------------------------------- /start9_programming_interface/code/start9.txt: -------------------------------------------------------------------------------- 1 | 1 test_suite.bin 2 | 2 display_counter.bin 3 | 3 fibonacci.bin 4 | 4 multiplication_tables.bin 5 | 5 fibonacci_recursive.bin 6 | 6 factorial.bin 7 | 7 primes.bin 8 | 8 display_hello_world.bin 9 | 9 bubble_sort.bin 10 | 10 merge_sort.bin 11 | 11 quick_sort.bin 12 | -------------------------------------------------------------------------------- /start9_programming_interface/code/start9_programming_interface/start9_programming_interface.ino: -------------------------------------------------------------------------------- 1 | #define MI 8 2 | #define HL 9 3 | #define RI 10 4 | #define EN 11 5 | #define CLK 12 6 | #define RST 13 7 | #define CU_EN A5 8 | 9 | #define NEXT A4 10 | 11 | #define DELAY 2000 12 | 13 | byte current_bank = 0; 14 | 15 | void setup() { 16 | // put your setup code here, to run once: 17 | pinMode(MI, OUTPUT); 18 | pinMode(HL, OUTPUT); 19 | pinMode(RI, OUTPUT); 20 | pinMode(EN, OUTPUT); 21 | pinMode(CLK, INPUT); 22 | pinMode(RST, INPUT); 23 | pinMode(CU_EN, OUTPUT); 24 | pinMode(NEXT, INPUT_PULLUP); 25 | 26 | DDRD |= B11111111; 27 | DDRC |= B00001111; 28 | } 29 | 30 | void reset() 31 | { 32 | pinMode(RST, OUTPUT); 33 | digitalWrite(RST, HIGH); 34 | delayMicroseconds(10); 35 | digitalWrite(RST, LOW); 36 | pinMode(RST, INPUT); 37 | } 38 | 39 | void clock() 40 | { 41 | pinMode(CLK, OUTPUT); 42 | digitalWrite(CLK, HIGH); 43 | delayMicroseconds(1); 44 | digitalWrite(CLK, LOW); 45 | pinMode(CLK, INPUT); 46 | } 47 | 48 | void enableClock() 49 | { 50 | pinMode(CLK, OUTPUT); 51 | digitalWrite(CLK, HIGH); 52 | } 53 | 54 | void disableClock() 55 | { 56 | pinMode(CLK, OUTPUT); 57 | digitalWrite(CLK, LOW); 58 | pinMode(CLK, INPUT); 59 | } 60 | 61 | void disable_cu() 62 | { 63 | digitalWrite(CU_EN, HIGH); 64 | } 65 | 66 | void enable_cu() 67 | { 68 | digitalWrite(CU_EN, LOW); 69 | } 70 | 71 | void enableOutput() 72 | { 73 | digitalWrite(EN, HIGH); 74 | } 75 | 76 | void disableOutput() 77 | { 78 | digitalWrite(EN, LOW); 79 | } 80 | 81 | void set_bank(byte bank) 82 | { 83 | PORTC = bank + (PORTC & 0xF0); 84 | } 85 | 86 | void set_address(unsigned int address) 87 | { 88 | digitalWrite(HL, address > 0xFF); 89 | set_bank(0); 90 | delayMicroseconds(1); 91 | put_out(address % 256); 92 | delayMicroseconds(1); 93 | enableOutput(); 94 | digitalWrite(MI, HIGH); 95 | delayMicroseconds(1); 96 | digitalWrite(MI, LOW); 97 | delayMicroseconds(1); 98 | disableOutput(); 99 | set_bank(current_bank); 100 | } 101 | 102 | void put_out(byte data) 103 | { 104 | PORTD = data; 105 | } 106 | 107 | void write_instruction(byte instr) 108 | { 109 | put_out(instr % 256); 110 | enableOutput(); 111 | delayMicroseconds(1); 112 | digitalWrite(RI, HIGH); 113 | delayMicroseconds(1); 114 | digitalWrite(RI, LOW); 115 | delayMicroseconds(1); 116 | disableOutput(); 117 | 118 | } 119 | 120 | void handle_button() 121 | { 122 | while (true) 123 | { 124 | if (!digitalRead(NEXT)) 125 | { 126 | if (++current_bank > 15) 127 | current_bank = 1; 128 | set_bank(current_bank); 129 | delay(250); 130 | auto curr_time = millis(); 131 | bool next = false; 132 | while (millis() - curr_time < DELAY) 133 | { 134 | if (!digitalRead(NEXT)) 135 | { 136 | next = true; 137 | break; 138 | } 139 | } 140 | if (next) 141 | continue; 142 | break; 143 | } 144 | } 145 | } 146 | 147 | void loop() { 148 | 149 | handle_button(); 150 | 151 | reset(); 152 | disable_cu(); 153 | 154 | delayMicroseconds(1); 155 | enableClock(); 156 | delayMicroseconds(1); 157 | for (int i = 0; i < 512; i ++) 158 | { 159 | set_address(i); 160 | delayMicroseconds(1); 161 | write_instruction(i); 162 | delayMicroseconds(1); 163 | } 164 | 165 | disableClock(); 166 | digitalWrite(HL, LOW); 167 | reset(); 168 | enable_cu(); 169 | disableOutput(); 170 | 171 | } 172 | -------------------------------------------------------------------------------- /start9_programming_interface/images/programming_interface_render.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vascofazza/8bit-cpu/027a60365ede50967a28066cb3f8de64050dac08/start9_programming_interface/images/programming_interface_render.png -------------------------------------------------------------------------------- /start9_programming_interface/programming_interface/arduino-kicad-library/.gitignore: -------------------------------------------------------------------------------- 1 | # For PCBs designed using KiCad: http://www.kicad-pcb.org/ 2 | 3 | # Temporary files 4 | *.000 5 | *.bak 6 | *.bck 7 | *.kicad_pcb-bak 8 | *~ 9 | _autosave-* 10 | *.tmp 11 | 12 | # Netlist files (exported from Eeschema) 13 | *.net 14 | 15 | # Autorouter files (exported from Pcbnew) 16 | *.dsn 17 | *.ses 18 | 19 | # Exported BOM files 20 | *.xml 21 | *.csv 22 | 23 | # Ignore the testproject files 24 | testproject.sch 25 | testproject.pro 26 | testproject.kicad_pcb 27 | fp-lib-table 28 | *-cache.lib 29 | *-rescue.lib 30 | -------------------------------------------------------------------------------- /start9_programming_interface/programming_interface/arduino-kicad-library/Arduino.pretty/Arduino_101_Shield.kicad_mod: -------------------------------------------------------------------------------- 1 | (module Arduino_101_Shield (layer F.Cu) (tedit 5A8605BA) 2 | (descr https://store.arduino.cc/genuino-101) 3 | (fp_text reference XA** (at 2.54 -54.356) (layer F.SilkS) 4 | (effects (font (size 1 1) (thickness 0.15))) 5 | ) 6 | (fp_text value Arduino_101_Shield (at 15.494 -54.356) (layer F.Fab) 7 | (effects (font (size 1 1) (thickness 0.15))) 8 | ) 9 | (fp_line (start 9.525 -32.385) (end -6.35 -32.385) (layer B.CrtYd) (width 0.15)) 10 | (fp_line (start 9.525 -43.815) (end -6.35 -43.815) (layer B.CrtYd) (width 0.15)) 11 | (fp_line (start 9.525 -43.815) (end 9.525 -32.385) (layer B.CrtYd) (width 0.15)) 12 | (fp_line (start -6.35 -43.815) (end -6.35 -32.385) (layer B.CrtYd) (width 0.15)) 13 | (fp_text user . (at 62.484 -32.004) (layer F.SilkS) 14 | (effects (font (size 1 1) (thickness 0.15))) 15 | ) 16 | (fp_line (start 11.43 -12.065) (end 11.43 -3.175) (layer B.CrtYd) (width 0.15)) 17 | (fp_line (start -1.905 -3.175) (end 11.43 -3.175) (layer B.CrtYd) (width 0.15)) 18 | (fp_line (start -1.905 -12.065) (end -1.905 -3.175) (layer B.CrtYd) (width 0.15)) 19 | (fp_line (start -1.905 -12.065) (end 11.43 -12.065) (layer B.CrtYd) (width 0.15)) 20 | (fp_line (start 0 -53.34) (end 0 0) (layer F.SilkS) (width 0.15)) 21 | (fp_line (start 66.04 -40.64) (end 66.04 -51.816) (layer F.SilkS) (width 0.15)) 22 | (fp_line (start 68.58 -38.1) (end 66.04 -40.64) (layer F.SilkS) (width 0.15)) 23 | (fp_line (start 68.58 -3.81) (end 68.58 -38.1) (layer F.SilkS) (width 0.15)) 24 | (fp_line (start 66.04 -1.27) (end 68.58 -3.81) (layer F.SilkS) (width 0.15)) 25 | (fp_line (start 66.04 0) (end 66.04 -1.27) (layer F.SilkS) (width 0.15)) 26 | (fp_line (start 64.516 -53.34) (end 66.04 -51.816) (layer F.SilkS) (width 0.15)) 27 | (fp_line (start 0 0) (end 66.04 0) (layer F.SilkS) (width 0.15)) 28 | (fp_line (start 0 -53.34) (end 64.516 -53.34) (layer F.SilkS) (width 0.15)) 29 | (pad RST2 thru_hole oval (at 63.627 -25.4) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 30 | (pad GND4 thru_hole oval (at 66.167 -25.4) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 31 | (pad MOSI thru_hole oval (at 66.167 -27.94) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 32 | (pad SCK thru_hole oval (at 63.627 -27.94) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 33 | (pad 5V2 thru_hole oval (at 66.167 -30.48) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 34 | (pad A0 thru_hole oval (at 50.8 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 35 | (pad VIN thru_hole oval (at 45.72 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 36 | (pad GND3 thru_hole oval (at 43.18 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 37 | (pad GND2 thru_hole oval (at 40.64 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 38 | (pad 5V1 thru_hole oval (at 38.1 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 39 | (pad 3V3 thru_hole oval (at 35.56 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 40 | (pad RST1 thru_hole oval (at 33.02 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 41 | (pad IORF thru_hole oval (at 30.48 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 42 | (pad D0 thru_hole oval (at 63.5 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 43 | (pad D1 thru_hole oval (at 60.96 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 44 | (pad D2 thru_hole oval (at 58.42 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 45 | (pad D3 thru_hole oval (at 55.88 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 46 | (pad D4 thru_hole oval (at 53.34 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 47 | (pad D5 thru_hole oval (at 50.8 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 48 | (pad D6 thru_hole oval (at 48.26 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 49 | (pad D7 thru_hole oval (at 45.72 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 50 | (pad GND1 thru_hole oval (at 26.416 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 51 | (pad D8 thru_hole oval (at 41.656 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 52 | (pad D9 thru_hole oval (at 39.116 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 53 | (pad D10 thru_hole oval (at 36.576 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 54 | (pad "" np_thru_hole circle (at 66.04 -7.62) (size 3.2 3.2) (drill 3.2) (layers *.Cu *.Mask)) 55 | (pad "" np_thru_hole circle (at 66.04 -35.56) (size 3.2 3.2) (drill 3.2) (layers *.Cu *.Mask)) 56 | (pad "" np_thru_hole circle (at 15.24 -50.8) (size 3.2 3.2) (drill 3.2) (layers *.Cu *.Mask)) 57 | (pad "" np_thru_hole circle (at 13.97 -2.54) (size 3.2 3.2) (drill 3.2) (layers *.Cu *.Mask)) 58 | (pad SCL thru_hole oval (at 18.796 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 59 | (pad SDA thru_hole oval (at 21.336 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 60 | (pad AREF thru_hole oval (at 23.876 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 61 | (pad D13 thru_hole oval (at 28.956 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 62 | (pad D12 thru_hole oval (at 31.496 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 63 | (pad D11 thru_hole oval (at 34.036 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 64 | (pad ATN thru_hole oval (at 27.94 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 65 | (pad A1 thru_hole oval (at 53.34 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 66 | (pad A2 thru_hole oval (at 55.88 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 67 | (pad A3 thru_hole oval (at 58.42 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 68 | (pad A4 thru_hole oval (at 60.96 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 69 | (pad A5 thru_hole oval (at 63.5 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 70 | (pad MISO thru_hole oval (at 63.627 -30.48) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 71 | ) 72 | -------------------------------------------------------------------------------- /start9_programming_interface/programming_interface/arduino-kicad-library/Arduino.pretty/Arduino_Leonardo_Shield.kicad_mod: -------------------------------------------------------------------------------- 1 | (module Arduino_Leonardo_Shield (layer F.Cu) (tedit 5A8605E1) 2 | (descr https://store.arduino.cc/arduino-leonardo-with-headers) 3 | (fp_text reference XA** (at 2.54 -54.356) (layer F.SilkS) 4 | (effects (font (size 1 1) (thickness 0.15))) 5 | ) 6 | (fp_text value Arduino_Leonardo_Shield (at 15.494 -54.356) (layer F.Fab) 7 | (effects (font (size 1 1) (thickness 0.15))) 8 | ) 9 | (fp_text user . (at 62.484 -32.004) (layer F.SilkS) 10 | (effects (font (size 1 1) (thickness 0.15))) 11 | ) 12 | (fp_line (start 11.43 -12.065) (end 11.43 -3.175) (layer B.CrtYd) (width 0.15)) 13 | (fp_line (start -1.905 -3.175) (end 11.43 -3.175) (layer B.CrtYd) (width 0.15)) 14 | (fp_line (start -1.905 -12.065) (end -1.905 -3.175) (layer B.CrtYd) (width 0.15)) 15 | (fp_line (start -1.905 -12.065) (end 11.43 -12.065) (layer B.CrtYd) (width 0.15)) 16 | (fp_line (start 0 -53.34) (end 0 0) (layer F.SilkS) (width 0.15)) 17 | (fp_line (start 66.04 -40.64) (end 66.04 -51.816) (layer F.SilkS) (width 0.15)) 18 | (fp_line (start 68.58 -38.1) (end 66.04 -40.64) (layer F.SilkS) (width 0.15)) 19 | (fp_line (start 68.58 -3.81) (end 68.58 -38.1) (layer F.SilkS) (width 0.15)) 20 | (fp_line (start 66.04 -1.27) (end 68.58 -3.81) (layer F.SilkS) (width 0.15)) 21 | (fp_line (start 66.04 0) (end 66.04 -1.27) (layer F.SilkS) (width 0.15)) 22 | (fp_line (start 64.516 -53.34) (end 66.04 -51.816) (layer F.SilkS) (width 0.15)) 23 | (fp_line (start 0 0) (end 66.04 0) (layer F.SilkS) (width 0.15)) 24 | (fp_line (start 0 -53.34) (end 64.516 -53.34) (layer F.SilkS) (width 0.15)) 25 | (pad RST2 thru_hole oval (at 63.627 -25.4) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 26 | (pad GND4 thru_hole oval (at 66.167 -25.4) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 27 | (pad MOSI thru_hole oval (at 66.167 -27.94) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 28 | (pad SCK thru_hole oval (at 63.627 -27.94) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 29 | (pad 5V2 thru_hole oval (at 66.167 -30.48) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 30 | (pad A0 thru_hole oval (at 50.8 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 31 | (pad VIN thru_hole oval (at 45.72 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 32 | (pad GND3 thru_hole oval (at 43.18 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 33 | (pad GND2 thru_hole oval (at 40.64 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 34 | (pad 5V1 thru_hole oval (at 38.1 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 35 | (pad 3V3 thru_hole oval (at 35.56 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 36 | (pad RST1 thru_hole oval (at 33.02 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 37 | (pad IORF thru_hole oval (at 30.48 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 38 | (pad D0 thru_hole oval (at 63.5 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 39 | (pad D1 thru_hole oval (at 60.96 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 40 | (pad D2 thru_hole oval (at 58.42 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 41 | (pad D3 thru_hole oval (at 55.88 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 42 | (pad D4 thru_hole oval (at 53.34 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 43 | (pad D5 thru_hole oval (at 50.8 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 44 | (pad D6 thru_hole oval (at 48.26 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 45 | (pad D7 thru_hole oval (at 45.72 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 46 | (pad GND1 thru_hole oval (at 26.416 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 47 | (pad D8 thru_hole oval (at 41.656 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 48 | (pad D9 thru_hole oval (at 39.116 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 49 | (pad D10 thru_hole oval (at 36.576 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 50 | (pad "" np_thru_hole circle (at 66.04 -7.62) (size 3.2 3.2) (drill 3.2) (layers *.Cu *.Mask)) 51 | (pad "" np_thru_hole circle (at 66.04 -35.56) (size 3.2 3.2) (drill 3.2) (layers *.Cu *.Mask)) 52 | (pad "" np_thru_hole circle (at 15.24 -50.8) (size 3.2 3.2) (drill 3.2) (layers *.Cu *.Mask)) 53 | (pad "" np_thru_hole circle (at 13.97 -2.54) (size 3.2 3.2) (drill 3.2) (layers *.Cu *.Mask)) 54 | (pad SCL thru_hole oval (at 18.796 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 55 | (pad SDA thru_hole oval (at 21.336 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 56 | (pad AREF thru_hole oval (at 23.876 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 57 | (pad D13 thru_hole oval (at 28.956 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 58 | (pad D12 thru_hole oval (at 31.496 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 59 | (pad D11 thru_hole oval (at 34.036 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 60 | (pad "" thru_hole oval (at 27.94 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 61 | (pad A1 thru_hole oval (at 53.34 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 62 | (pad A2 thru_hole oval (at 55.88 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 63 | (pad A3 thru_hole oval (at 58.42 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 64 | (pad A4 thru_hole oval (at 60.96 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 65 | (pad A5 thru_hole oval (at 63.5 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 66 | (pad MISO thru_hole oval (at 63.627 -30.48) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 67 | ) 68 | -------------------------------------------------------------------------------- /start9_programming_interface/programming_interface/arduino-kicad-library/Arduino.pretty/Arduino_Micro_Socket.kicad_mod: -------------------------------------------------------------------------------- 1 | (module Arduino_Micro_Socket (layer F.Cu) (tedit 5A860566) 2 | (descr https://store.arduino.cc/arduino-micro) 3 | (fp_text reference XA** (at 2.54 -19.05) (layer F.SilkS) 4 | (effects (font (size 1 1) (thickness 0.15))) 5 | ) 6 | (fp_text value Arduino_Micro_Socket (at 15.494 -19.05) (layer F.Fab) 7 | (effects (font (size 1 1) (thickness 0.15))) 8 | ) 9 | (fp_text user 3.3V (at 6.46 -2.794) (layer F.SilkS) 10 | (effects (font (size 0.5 0.5) (thickness 0.075))) 11 | ) 12 | (fp_text user USB (at -1.016 -9.017 90) (layer F.SilkS) 13 | (effects (font (size 0.5 0.5) (thickness 0.075))) 14 | ) 15 | (fp_line (start -2.032 0.254) (end -2.286 0.254) (layer F.CrtYd) (width 0.15)) 16 | (fp_line (start -2.286 0.254) (end -2.286 -17.526) (layer F.CrtYd) (width 0.15)) 17 | (fp_line (start -2.286 -17.526) (end -2.286 -18.288) (layer F.CrtYd) (width 0.15)) 18 | (fp_line (start -2.286 -18.288) (end 48.768 -18.288) (layer F.CrtYd) (width 0.15)) 19 | (fp_line (start 48.768 -18.288) (end 48.768 0.254) (layer F.CrtYd) (width 0.15)) 20 | (fp_line (start 48.768 0.254) (end -2.032 0.254) (layer F.CrtYd) (width 0.15)) 21 | (fp_line (start -2 -18.034) (end -2 0) (layer F.SilkS) (width 0.15)) 22 | (fp_line (start 48.48 -18) (end 48.48 0) (layer F.SilkS) (width 0.15)) 23 | (fp_line (start -2 -18.034) (end 48.48 -18.034) (layer F.SilkS) (width 0.15)) 24 | (fp_line (start 0 -18) (end 0 0) (layer F.SilkS) (width 0.15)) 25 | (fp_line (start -2 0) (end 48.48 0) (layer F.SilkS) (width 0.15)) 26 | (pad "" np_thru_hole circle (at 47.1 -16.62) (size 1.016 1.016) (drill 1.016) (layers *.Cu *.Mask)) 27 | (pad "" np_thru_hole circle (at 1.38 -16.62) (size 1.016 1.016) (drill 1.016) (layers *.Cu *.Mask)) 28 | (pad "" np_thru_hole circle (at 47.1 -1.38) (size 1.016 1.016) (drill 1.016) (layers *.Cu *.Mask)) 29 | (pad "" thru_hole oval (at 26.78 -1.38) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 30 | (pad RST2 thru_hole oval (at 34.4 -16.62) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 31 | (pad MOSI thru_hole rect (at 44.56 -16.62) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 32 | (pad SCK thru_hole oval (at 44.56 -1.38) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 33 | (pad A0 thru_hole oval (at 11.54 -1.38) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 34 | (pad VIN thru_hole oval (at 39.48 -1.38) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 35 | (pad GND2 thru_hole oval (at 31.86 -16.62) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 36 | (pad GND1 thru_hole oval (at 36.94 -1.38) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 37 | (pad 5V thru_hole oval (at 31.86 -1.38) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 38 | (pad 3V3 thru_hole oval (at 6.46 -1.38) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 39 | (pad RST1 thru_hole oval (at 34.4 -1.38) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 40 | (pad SS thru_hole oval (at 42.02 -16.62) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 41 | (pad D0 thru_hole oval (at 36.94 -16.62) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 42 | (pad D1 thru_hole oval (at 39.48 -16.62) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 43 | (pad D2 thru_hole oval (at 29.32 -16.62) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 44 | (pad D3 thru_hole oval (at 26.78 -16.62) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 45 | (pad D4 thru_hole oval (at 24.24 -16.62) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 46 | (pad D5 thru_hole oval (at 21.7 -16.62) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 47 | (pad D6 thru_hole oval (at 19.16 -16.62) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 48 | (pad D7 thru_hole oval (at 16.62 -16.62) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 49 | (pad D8 thru_hole oval (at 14.08 -16.62) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 50 | (pad D9 thru_hole oval (at 11.54 -16.62) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 51 | (pad D10 thru_hole oval (at 9 -16.62) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 52 | (pad "" np_thru_hole circle (at 1.38 -1.38) (size 1.016 1.016) (drill 1.016) (layers *.Cu *.Mask)) 53 | (pad AREF thru_hole oval (at 9 -1.38) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 54 | (pad D13 thru_hole oval (at 3.92 -1.38) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 55 | (pad D12 thru_hole oval (at 3.92 -16.62) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 56 | (pad D11 thru_hole oval (at 6.46 -16.62) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 57 | (pad "" thru_hole oval (at 29.32 -1.38) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 58 | (pad A1 thru_hole oval (at 14.08 -1.38) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 59 | (pad A2 thru_hole oval (at 16.62 -1.38) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 60 | (pad A3 thru_hole oval (at 19.16 -1.38) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 61 | (pad A4 thru_hole oval (at 21.7 -1.38) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 62 | (pad A5 thru_hole oval (at 24.24 -1.38) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 63 | (pad MISO thru_hole oval (at 42.02 -1.38) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 64 | ) 65 | -------------------------------------------------------------------------------- /start9_programming_interface/programming_interface/arduino-kicad-library/Arduino.pretty/Arduino_Mini_Socket.kicad_mod: -------------------------------------------------------------------------------- 1 | (module Arduino_Mini_Socket (layer F.Cu) (tedit 5A87789E) 2 | (descr https://store.arduino.cc/arduino-mini-05) 3 | (fp_text reference XA** (at 2.54 -31.496) (layer F.SilkS) 4 | (effects (font (size 1 1) (thickness 0.15))) 5 | ) 6 | (fp_text value Arduino_Mini_Socket (at 8.89 -15.24 90) (layer F.Fab) 7 | (effects (font (size 1 1) (thickness 0.15))) 8 | ) 9 | (fp_line (start -0.254 0.254) (end -0.254 -30.734) (layer F.CrtYd) (width 0.15)) 10 | (fp_line (start -0.254 -30.734) (end 18.034 -30.734) (layer F.CrtYd) (width 0.15)) 11 | (fp_line (start 18.034 -30.734) (end 18.034 0.254) (layer F.CrtYd) (width 0.15)) 12 | (fp_line (start 18.034 0.254) (end -0.254 0.254) (layer F.CrtYd) (width 0.15)) 13 | (fp_text user RST (at 14.986 -24.13 90) (layer F.SilkS) 14 | (effects (font (size 0.5 0.5) (thickness 0.075))) 15 | ) 16 | (fp_line (start 0 0) (end 0 -30.48) (layer F.SilkS) (width 0.15)) 17 | (fp_line (start 0 -30.48) (end 17.78 -30.48) (layer F.SilkS) (width 0.15)) 18 | (fp_line (start 17.78 -30.48) (end 17.78 0) (layer F.SilkS) (width 0.15)) 19 | (fp_line (start 17.78 0) (end 0 0) (layer F.SilkS) (width 0.15)) 20 | (pad GND3 thru_hole circle (at 13.97 -29.21) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 21 | (pad 5V2 thru_hole circle (at 11.43 -29.21) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 22 | (pad RX thru_hole circle (at 8.89 -29.21) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 23 | (pad TX thru_hole circle (at 6.35 -29.21) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 24 | (pad L2 thru_hole rect (at 3.81 -29.21) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 25 | (pad D11 thru_hole circle (at 16.51 -3.81) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 26 | (pad D12 thru_hole circle (at 16.51 -6.35) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 27 | (pad D13 thru_hole circle (at 16.51 -8.89) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 28 | (pad A0 thru_hole circle (at 16.51 -11.43) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 29 | (pad A1 thru_hole circle (at 16.51 -13.97) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 30 | (pad A2 thru_hole circle (at 16.51 -16.51) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 31 | (pad A3 thru_hole circle (at 16.51 -19.05) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 32 | (pad 5V1 thru_hole circle (at 16.51 -21.59) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 33 | (pad RST2 thru_hole circle (at 16.51 -24.13) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 34 | (pad GND2 thru_hole circle (at 16.51 -26.67) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 35 | (pad VIN thru_hole rect (at 16.51 -29.21) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 36 | (pad D10 thru_hole circle (at 16.51 -1.27) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 37 | (pad GND4 thru_hole rect (at 13.97 -1.27) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 38 | (pad 5V3 thru_hole circle (at 11.43 -1.27) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 39 | (pad A6 thru_hole circle (at 3.81 -3.81) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 40 | (pad A7 thru_hole circle (at 6.35 -3.81) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 41 | (pad A5 thru_hole circle (at 6.35 -1.27) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 42 | (pad D1 thru_hole rect (at 1.27 -29.21) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 43 | (pad D0 thru_hole circle (at 1.27 -26.67) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 44 | (pad L0 thru_hole circle (at 1.27 -24.13) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 45 | (pad L1 thru_hole circle (at 1.27 -21.59) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 46 | (pad D2 thru_hole circle (at 1.27 -19.05) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 47 | (pad D3 thru_hole circle (at 1.27 -16.51) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 48 | (pad D4 thru_hole circle (at 1.27 -13.97) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 49 | (pad D5 thru_hole circle (at 1.27 -11.43) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 50 | (pad D6 thru_hole circle (at 1.27 -8.89) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 51 | (pad D7 thru_hole circle (at 1.27 -6.35) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 52 | (pad D8 thru_hole circle (at 1.27 -3.81) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 53 | (pad A4 thru_hole rect (at 3.81 -1.27) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 54 | (pad D9 thru_hole circle (at 1.27 -1.27) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 55 | ) 56 | -------------------------------------------------------------------------------- /start9_programming_interface/programming_interface/arduino-kicad-library/Arduino.pretty/Arduino_Nano_Socket.kicad_mod: -------------------------------------------------------------------------------- 1 | (module Arduino_Nano_Socket (layer F.Cu) (tedit 5E7D1946) 2 | (descr https://store.arduino.cc/arduino-nano) 3 | (fp_text reference XA** (at 6.604 1.016) (layer F.SilkS) 4 | (effects (font (size 1 1) (thickness 0.15))) 5 | ) 6 | (fp_text value Arduino_Nano_Socket (at 0 -21.082 90) (layer F.Fab) 7 | (effects (font (size 1 1) (thickness 0.15))) 8 | ) 9 | (fp_text user USB (at 0 0.635) (layer F.SilkS) 10 | (effects (font (size 0.5 0.5) (thickness 0.075))) 11 | ) 12 | (fp_text user 3.3V (at 6.35 -6.35 90) (layer F.SilkS) 13 | (effects (font (size 0.5 0.5) (thickness 0.075))) 14 | ) 15 | (fp_text user ICSP (at 0 -40.64) (layer F.Fab) 16 | (effects (font (size 1 1) (thickness 0.15))) 17 | ) 18 | (fp_circle (center 0 -39.37) (end 0.508 -39.37) (layer F.Fab) (width 0.15)) 19 | (fp_circle (center 2.54 -39.37) (end 3.048 -39.37) (layer F.Fab) (width 0.15)) 20 | (fp_circle (center 2.54 -41.91) (end 3.048 -41.91) (layer F.Fab) (width 0.15)) 21 | (fp_circle (center -2.54 -39.37) (end -2.032 -39.37) (layer F.Fab) (width 0.15)) 22 | (fp_circle (center 0 -41.91) (end 0.508 -41.91) (layer F.Fab) (width 0.15)) 23 | (fp_circle (center -2.54 -41.91) (end -2.032 -41.91) (layer F.Fab) (width 0.15)) 24 | (fp_line (start -3.302 1.778) (end -9.144 1.778) (layer F.CrtYd) (width 0.15)) 25 | (fp_line (start -9.144 1.778) (end -9.144 -22.606) (layer F.CrtYd) (width 0.15)) 26 | (fp_line (start -9.144 -22.606) (end -9.144 -43.434) (layer F.CrtYd) (width 0.15)) 27 | (fp_line (start -9.144 -43.434) (end 9.144 -43.434) (layer F.CrtYd) (width 0.15)) 28 | (fp_line (start 9.144 -43.434) (end 9.144 1.778) (layer F.CrtYd) (width 0.15)) 29 | (fp_line (start 9.144 1.778) (end -3.302 1.778) (layer F.CrtYd) (width 0.15)) 30 | (fp_line (start -4.064 0) (end -4.064 1.45) (layer F.SilkS) (width 0.15)) 31 | (fp_line (start -4.064 1.45) (end 4.064 1.45) (layer F.SilkS) (width 0.15)) 32 | (fp_line (start 4.064 1.45) (end 4.064 0) (layer F.SilkS) (width 0.15)) 33 | (fp_line (start -8.89 -43.18) (end 8.89 -43.18) (layer F.SilkS) (width 0.15)) 34 | (fp_line (start -8.89 0) (end 8.89 0) (layer F.SilkS) (width 0.15)) 35 | (fp_line (start 8.89 -43.18) (end 8.89 0) (layer F.SilkS) (width 0.15)) 36 | (fp_line (start -8.89 -43.18) (end -8.89 0) (layer F.SilkS) (width 0.15)) 37 | (pad VIN thru_hole circle (at 7.62 -39.37) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 38 | (pad GND2 thru_hole circle (at 7.62 -36.83) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 39 | (pad RST2 thru_hole circle (at 7.62 -34.29) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 40 | (pad 5V thru_hole circle (at 7.62 -31.75) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 41 | (pad A7 thru_hole circle (at 7.62 -29.21) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 42 | (pad A6 thru_hole circle (at 7.62 -26.67) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 43 | (pad A5 thru_hole circle (at 7.62 -24.13) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 44 | (pad A4 thru_hole circle (at 7.62 -21.59) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 45 | (pad A3 thru_hole circle (at 7.62 -19.05) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 46 | (pad A2 thru_hole circle (at 7.62 -16.51) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 47 | (pad A1 thru_hole circle (at 7.62 -13.97) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 48 | (pad A0 thru_hole circle (at 7.62 -11.43) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 49 | (pad AREF thru_hole circle (at 7.62 -8.89) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 50 | (pad 3V3 thru_hole circle (at 7.62 -6.35) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 51 | (pad D13 thru_hole circle (at 7.62 -3.81) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 52 | (pad D12 thru_hole circle (at -7.62 -3.81) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 53 | (pad D11 thru_hole circle (at -7.62 -6.35) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 54 | (pad D10 thru_hole circle (at -7.62 -8.89) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 55 | (pad D9 thru_hole circle (at -7.62 -11.43) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 56 | (pad D8 thru_hole circle (at -7.62 -13.97) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 57 | (pad D7 thru_hole circle (at -7.62 -16.51) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 58 | (pad D6 thru_hole circle (at -7.62 -19.05) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 59 | (pad D5 thru_hole circle (at -7.62 -21.59) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 60 | (pad D4 thru_hole circle (at -7.62 -24.13) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 61 | (pad D3 thru_hole circle (at -7.62 -26.67) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 62 | (pad D2 thru_hole circle (at -7.62 -29.21) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 63 | (pad GND1 thru_hole circle (at -7.62 -31.75) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 64 | (pad RST1 thru_hole circle (at -7.62 -34.29) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 65 | (pad D0 thru_hole circle (at -7.62 -36.83) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 66 | (pad D1 thru_hole rect (at -7.62 -39.37) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 67 | ) 68 | -------------------------------------------------------------------------------- /start9_programming_interface/programming_interface/arduino-kicad-library/Arduino.pretty/Arduino_Uno_Shield.kicad_mod: -------------------------------------------------------------------------------- 1 | (module Arduino_Uno_Shield (layer F.Cu) (tedit 5A8605EC) 2 | (descr https://store.arduino.cc/arduino-uno-rev3) 3 | (fp_text reference XA** (at 2.54 -54.356) (layer F.SilkS) 4 | (effects (font (size 1 1) (thickness 0.15))) 5 | ) 6 | (fp_text value Arduino_Uno_Shield (at 15.494 -54.356) (layer F.Fab) 7 | (effects (font (size 1 1) (thickness 0.15))) 8 | ) 9 | (fp_line (start 9.525 -32.385) (end -6.35 -32.385) (layer B.CrtYd) (width 0.15)) 10 | (fp_line (start 9.525 -43.815) (end -6.35 -43.815) (layer B.CrtYd) (width 0.15)) 11 | (fp_line (start 9.525 -43.815) (end 9.525 -32.385) (layer B.CrtYd) (width 0.15)) 12 | (fp_line (start -6.35 -43.815) (end -6.35 -32.385) (layer B.CrtYd) (width 0.15)) 13 | (fp_text user . (at 62.484 -32.004) (layer F.SilkS) 14 | (effects (font (size 1 1) (thickness 0.15))) 15 | ) 16 | (fp_line (start 11.43 -12.065) (end 11.43 -3.175) (layer B.CrtYd) (width 0.15)) 17 | (fp_line (start -1.905 -3.175) (end 11.43 -3.175) (layer B.CrtYd) (width 0.15)) 18 | (fp_line (start -1.905 -12.065) (end -1.905 -3.175) (layer B.CrtYd) (width 0.15)) 19 | (fp_line (start -1.905 -12.065) (end 11.43 -12.065) (layer B.CrtYd) (width 0.15)) 20 | (fp_line (start 0 -53.34) (end 0 0) (layer F.SilkS) (width 0.15)) 21 | (fp_line (start 66.04 -40.64) (end 66.04 -51.816) (layer F.SilkS) (width 0.15)) 22 | (fp_line (start 68.58 -38.1) (end 66.04 -40.64) (layer F.SilkS) (width 0.15)) 23 | (fp_line (start 68.58 -3.81) (end 68.58 -38.1) (layer F.SilkS) (width 0.15)) 24 | (fp_line (start 66.04 -1.27) (end 68.58 -3.81) (layer F.SilkS) (width 0.15)) 25 | (fp_line (start 66.04 0) (end 66.04 -1.27) (layer F.SilkS) (width 0.15)) 26 | (fp_line (start 64.516 -53.34) (end 66.04 -51.816) (layer F.SilkS) (width 0.15)) 27 | (fp_line (start 0 0) (end 66.04 0) (layer F.SilkS) (width 0.15)) 28 | (fp_line (start 0 -53.34) (end 64.516 -53.34) (layer F.SilkS) (width 0.15)) 29 | (pad RST2 thru_hole oval (at 63.627 -25.4) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 30 | (pad GND4 thru_hole oval (at 66.167 -25.4) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 31 | (pad MOSI thru_hole oval (at 66.167 -27.94) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 32 | (pad SCK thru_hole oval (at 63.627 -27.94) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 33 | (pad 5V2 thru_hole oval (at 66.167 -30.48) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 34 | (pad A0 thru_hole oval (at 50.8 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 35 | (pad VIN thru_hole oval (at 45.72 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 36 | (pad GND3 thru_hole oval (at 43.18 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 37 | (pad GND2 thru_hole oval (at 40.64 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 38 | (pad 5V1 thru_hole oval (at 38.1 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 39 | (pad 3V3 thru_hole oval (at 35.56 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 40 | (pad RST1 thru_hole oval (at 33.02 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 41 | (pad IORF thru_hole oval (at 30.48 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 42 | (pad D0 thru_hole oval (at 63.5 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 43 | (pad D1 thru_hole oval (at 60.96 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 44 | (pad D2 thru_hole oval (at 58.42 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 45 | (pad D3 thru_hole oval (at 55.88 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 46 | (pad D4 thru_hole oval (at 53.34 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 47 | (pad D5 thru_hole oval (at 50.8 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 48 | (pad D6 thru_hole oval (at 48.26 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 49 | (pad D7 thru_hole oval (at 45.72 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 50 | (pad GND1 thru_hole oval (at 26.416 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 51 | (pad D8 thru_hole oval (at 41.656 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 52 | (pad D9 thru_hole oval (at 39.116 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 53 | (pad D10 thru_hole oval (at 36.576 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 54 | (pad "" np_thru_hole circle (at 66.04 -7.62) (size 3.2 3.2) (drill 3.2) (layers *.Cu *.Mask)) 55 | (pad "" np_thru_hole circle (at 66.04 -35.56) (size 3.2 3.2) (drill 3.2) (layers *.Cu *.Mask)) 56 | (pad "" np_thru_hole circle (at 15.24 -50.8) (size 3.2 3.2) (drill 3.2) (layers *.Cu *.Mask)) 57 | (pad "" np_thru_hole circle (at 13.97 -2.54) (size 3.2 3.2) (drill 3.2) (layers *.Cu *.Mask)) 58 | (pad SCL thru_hole oval (at 18.796 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 59 | (pad SDA thru_hole oval (at 21.336 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 60 | (pad AREF thru_hole oval (at 23.876 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 61 | (pad D13 thru_hole oval (at 28.956 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 62 | (pad D12 thru_hole oval (at 31.496 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 63 | (pad D11 thru_hole oval (at 34.036 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 64 | (pad "" thru_hole oval (at 27.94 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 65 | (pad A1 thru_hole oval (at 53.34 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 66 | (pad A2 thru_hole oval (at 55.88 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 67 | (pad A3 thru_hole oval (at 58.42 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 68 | (pad A4 thru_hole oval (at 60.96 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 69 | (pad A5 thru_hole oval (at 63.5 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 70 | (pad MISO thru_hole oval (at 63.627 -30.48) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 71 | ) 72 | -------------------------------------------------------------------------------- /start9_programming_interface/programming_interface/arduino-kicad-library/Arduino.pretty/Arduino_Zero_Shield.kicad_mod: -------------------------------------------------------------------------------- 1 | (module Arduino_Zero_Shield (layer F.Cu) (tedit 5A8605F5) 2 | (descr https://store.arduino.cc/genuino-zero) 3 | (fp_text reference XA** (at 2.54 -54.356) (layer F.SilkS) 4 | (effects (font (size 1 1) (thickness 0.15))) 5 | ) 6 | (fp_text value Arduino_Zero_Shield (at 15.494 -54.356) (layer F.Fab) 7 | (effects (font (size 1 1) (thickness 0.15))) 8 | ) 9 | (fp_text user . (at 62.484 -32.004) (layer F.SilkS) 10 | (effects (font (size 1 1) (thickness 0.15))) 11 | ) 12 | (fp_line (start 11.43 -12.065) (end 11.43 -3.175) (layer B.CrtYd) (width 0.15)) 13 | (fp_line (start -1.905 -3.175) (end 11.43 -3.175) (layer B.CrtYd) (width 0.15)) 14 | (fp_line (start -1.905 -12.065) (end -1.905 -3.175) (layer B.CrtYd) (width 0.15)) 15 | (fp_line (start -1.905 -12.065) (end 11.43 -12.065) (layer B.CrtYd) (width 0.15)) 16 | (fp_line (start 0 -53.34) (end 0 0) (layer F.SilkS) (width 0.15)) 17 | (fp_line (start 66.04 -40.64) (end 66.04 -51.816) (layer F.SilkS) (width 0.15)) 18 | (fp_line (start 68.58 -38.1) (end 66.04 -40.64) (layer F.SilkS) (width 0.15)) 19 | (fp_line (start 68.58 -3.81) (end 68.58 -38.1) (layer F.SilkS) (width 0.15)) 20 | (fp_line (start 66.04 -1.27) (end 68.58 -3.81) (layer F.SilkS) (width 0.15)) 21 | (fp_line (start 66.04 0) (end 66.04 -1.27) (layer F.SilkS) (width 0.15)) 22 | (fp_line (start 64.516 -53.34) (end 66.04 -51.816) (layer F.SilkS) (width 0.15)) 23 | (fp_line (start 0 0) (end 66.04 0) (layer F.SilkS) (width 0.15)) 24 | (fp_line (start 0 -53.34) (end 64.516 -53.34) (layer F.SilkS) (width 0.15)) 25 | (pad RST2 thru_hole oval (at 63.627 -25.4) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 26 | (pad GND4 thru_hole oval (at 66.167 -25.4) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 27 | (pad MOSI thru_hole oval (at 66.167 -27.94) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 28 | (pad SCK thru_hole oval (at 63.627 -27.94) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 29 | (pad 5V2 thru_hole oval (at 66.167 -30.48) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 30 | (pad A0 thru_hole oval (at 50.8 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 31 | (pad VIN thru_hole oval (at 45.72 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 32 | (pad GND3 thru_hole oval (at 43.18 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 33 | (pad GND2 thru_hole oval (at 40.64 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 34 | (pad 5V1 thru_hole oval (at 38.1 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 35 | (pad 3V3 thru_hole oval (at 35.56 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 36 | (pad RST1 thru_hole oval (at 33.02 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 37 | (pad IORF thru_hole oval (at 30.48 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 38 | (pad D0 thru_hole oval (at 63.5 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 39 | (pad D1 thru_hole oval (at 60.96 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 40 | (pad D2 thru_hole oval (at 58.42 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 41 | (pad D3 thru_hole oval (at 55.88 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 42 | (pad D4 thru_hole oval (at 53.34 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 43 | (pad D5 thru_hole oval (at 50.8 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 44 | (pad D6 thru_hole oval (at 48.26 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 45 | (pad D7 thru_hole oval (at 45.72 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 46 | (pad GND1 thru_hole oval (at 26.416 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 47 | (pad D8 thru_hole oval (at 41.656 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 48 | (pad D9 thru_hole oval (at 39.116 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 49 | (pad D10 thru_hole oval (at 36.576 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 50 | (pad "" np_thru_hole circle (at 66.04 -7.62) (size 3.2 3.2) (drill 3.2) (layers *.Cu *.Mask)) 51 | (pad "" np_thru_hole circle (at 66.04 -35.56) (size 3.2 3.2) (drill 3.2) (layers *.Cu *.Mask)) 52 | (pad "" np_thru_hole circle (at 15.24 -50.8) (size 3.2 3.2) (drill 3.2) (layers *.Cu *.Mask)) 53 | (pad "" np_thru_hole circle (at 13.97 -2.54) (size 3.2 3.2) (drill 3.2) (layers *.Cu *.Mask)) 54 | (pad SCL thru_hole oval (at 18.796 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 55 | (pad SDA thru_hole oval (at 21.336 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 56 | (pad AREF thru_hole oval (at 23.876 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 57 | (pad D13 thru_hole oval (at 28.956 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 58 | (pad D12 thru_hole oval (at 31.496 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 59 | (pad D11 thru_hole oval (at 34.036 -50.8) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 60 | (pad ATN thru_hole oval (at 27.94 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 61 | (pad A1 thru_hole oval (at 53.34 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 62 | (pad A2 thru_hole oval (at 55.88 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 63 | (pad A3 thru_hole oval (at 58.42 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 64 | (pad A4 thru_hole oval (at 60.96 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 65 | (pad A5 thru_hole oval (at 63.5 -2.54) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 66 | (pad MISO thru_hole oval (at 63.627 -30.48) (size 1.7272 1.7272) (drill 1.016) (layers *.Cu *.Mask)) 67 | ) 68 | -------------------------------------------------------------------------------- /start9_programming_interface/programming_interface/arduino-kicad-library/README.md: -------------------------------------------------------------------------------- 1 | # Arduino KiCad Library 2 | *Version 1.4.1* 3 | 4 | Library of schematic components and footprints of common Arduino boards for KiCad. 5 | 6 | Currently included are: 7 | - Arduino 101 Shield 8 | - Arduino Due Shield 9 | - Arduino Leonardo Shied 10 | - Arduino M0 Shield 11 | - Arduino M0 Pro Shield 12 | - Arduino Mega 2560 Shield 13 | - Arduino Micro Socket 14 | - Arduino Mini Socket 15 | - Arduino Nano Socket 16 | - Arduino Uno Shield 17 | - Arduino Zero Shield 18 | 19 | Shield means the Arduino is designed to plug in from beneath your PCB; socket means it is designed to plug in from above. 20 | 21 | ## Comments, Requests, Bugs & Contributions 22 | All are welcome. 23 | Please file an Issue or Pull Request at https://github.com/Alarm-Siren/arduino-kicad-library 24 | 25 | ## License 26 | Copyright 2017-2018, Nicholas Parks Young. All Rights Reserved. 27 | This library is licensed under the GNU LGPL v2.1, which can be found in file LICENSE.txt. 28 | 29 | ## Donations 30 | 31 | If you've found this library useful and you'd like to make a donation towards its continued upkeep, click the button below: 32 | 33 | [![paypal](https://www.paypalobjects.com/en_GB/i/btn/btn_donate_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=UX25HM4CZFFWW) 34 | 35 | ## Library Setup 36 | To add this library to your KiCad Project, do the following steps: 37 | 1. Copy the source files to your Project. Make sure that the Arduino.pretty folder structure is preserved. 38 | 2. In Eeschema (the schematic editor of KiCad) go to Preferences -> Component Libraries. Click the "Add" button next to "Component library files". 39 | 3. Navigate to your project folder, select "arduino.lib" and click "open". 40 | 4. You may wish to adjust the newly added arduino schematic library to be near the top of the load order using the "Up" and "Down" buttons, but this is optional and is only relevant if you have other libraries that use the same names for parts. 41 | 5. OK out and exit Eeschema. Open Pcbnew (the PCB editor of KiCad) go to Preferences -> Footprint Libraries Manager. 42 | 6. Select the "Project Specific Libraries" tab and then click "Append Library". 43 | 7. In the new line of the table, set Library Path to "$(KIPRJMOD)\Arduino.pretty" on Windows or "$(KIPRJMOD)/Arduino.pretty" on Linux/Mac, and ensure Plugin Type is "KiCad". Options and Description can be left blank. You should set Nickname to something descriptive - like "Arduino" for example! 44 | 8. All done: you are now ready to use these schematic components and footprints! 45 | 46 | ## A note about Power and Reset pins 47 | 48 | ### Power 49 | On the Arduino Platform, it is not possible to categorically state that the power pins are "power inputs" or "power outputs", as that depends on exactly how you're using the Arduino. For example, if you're powering the Arduino from USB then GND, +3.3V and +5V would be power outputs and VIN would do nothing, whereas if you're powering the Arduino from a battery via your Shield then VIN and GND are power inputs whilst +5V and +3.3V are power outputs. There are other, more esoteric possibilities too. 50 | 51 | Regardless of the above, I needed to make a decision about what electrical type to apply to these pins. I could use something like Passive or Unspecified, but then KiCad's Electrical Rules Checker (ERC) tool would not be effective in catching errors on these pins at all, whilst using Power Output means it objects to you joining pins together (for example, joining all the GND pins into a common net) even when that's OK in some situations. 52 | 53 | Therefore, I have decided to use Power Input as this presents the least issues. This means if you're actually using any of the power pins as Power Outputs in your schematic, by default the ERC will complain that the relevant nets are undriven. To fix this you will need to add the special "PWR_FLAG" component to the affected net. 54 | 55 | ### Reset 56 | Reset pins on the Arduino Platform have interesting electrical characteristics, which mean that no KiCad electrical type exactly matches their functionality. I settled on Open Collector as the nearest candidate, but unlike a true Open Collector pin on an integrated circuit, the reset pins on the Arduino Platform have an internal weak pull-up, and the reset button that can strongly pull low, so your circuit needs to be able to cope with all these situations. 57 | 58 | In other words, if you use the reset pin as an input to your shield then you do not need to add a pull-up (doing so will actually make it less responsive if not break it); conversely if you want to drive the reset line in order to reset the Arduino you need to ensure that you only ever pull it low - if you pull it high at the same time as an unwitting user hits the physical reset button, you've created a short between power and ground which will likely fry whatever chip is on your shield. 59 | 60 | ### TL;DR: 61 | 62 | *The KiCad ERC cannot catch all the possible electrical errors on your schematic as it doesn't natively support the reset and power pins' electrical types. Even if the ERC says its OK, double check it manually.* 63 | 64 | *If the ERC says that your power pins are undriven, first manually check they are being driven. If they are driven, then add a "PWR_FLAG" component to the net to make the error go away.* 65 | -------------------------------------------------------------------------------- /start9_programming_interface/programming_interface/arduino-kicad-library/arduino.dcm: -------------------------------------------------------------------------------- 1 | EESchema-DOCLIB Version 2.0 2 | # 3 | $CMP Arduino_101_Shield 4 | D Shield for Arduino 101 5 | K Arduino MPU Shield 6 | F https://store.arduino.cc/genuino-101 7 | $ENDCMP 8 | # 9 | $CMP Arduino_Due_Shield 10 | D Shield for Arduino Due 11 | K Arduino MPU Shield 12 | F https://store.arduino.cc/arduino-due 13 | $ENDCMP 14 | # 15 | $CMP Arduino_Leonardo_Shield 16 | D Shield for Arduino Leonardo 17 | K Arduino MPU Shield 18 | F https://store.arduino.cc/arduino-leonardo-with-headers 19 | $ENDCMP 20 | # 21 | $CMP Arduino_M0_Pro_Shield 22 | D Shield for Arduino M0 Pro 23 | K Arduino MPU Shield 24 | F https://store.arduino.cc/arduino-m0-pro 25 | $ENDCMP 26 | # 27 | $CMP Arduino_M0_Shield 28 | D Shield for Arduino M0 29 | K Arduino MPU Shield 30 | F https://store.arduino.cc/arduino-m0 31 | $ENDCMP 32 | # 33 | $CMP Arduino_Mega2560_Shield 34 | D Shield for Arduino Mega 2560 35 | K Arduino MPU Shield 36 | F https://store.arduino.cc/arduino-mega-2560-rev3 37 | $ENDCMP 38 | # 39 | $CMP Arduino_Micro_Socket 40 | D Socket for Arduino Micro 41 | K Arduino MPU Shield 42 | F https://store.arduino.cc/arduino-micro 43 | $ENDCMP 44 | # 45 | $CMP Arduino_Mini_01_Socket 46 | D Socket for Arduino Mini 01 47 | K Arduino MPU Shield 48 | F https://store.arduino.cc/arduino-mini-05 49 | $ENDCMP 50 | # 51 | $CMP Arduino_Mini_02_Socket 52 | D Socket for Arduino Mini 02 53 | K Arduino MPU Shield 54 | F https://store.arduino.cc/arduino-mini-05 55 | $ENDCMP 56 | # 57 | $CMP Arduino_Mini_03_Socket 58 | D Socket for Arduino Mini 03 59 | K Arduino MPU Shield 60 | F https://store.arduino.cc/arduino-mini-05 61 | $ENDCMP 62 | # 63 | $CMP Arduino_Mini_04_Socket 64 | D Socket for Arduino Mini 04 65 | K Arduino MPU Shield 66 | F https://store.arduino.cc/arduino-mini-05 67 | $ENDCMP 68 | # 69 | $CMP Arduino_Mini_05_Socket 70 | D Socket for Arduino Mini 05 71 | K Arduino MPU Shield 72 | F https://store.arduino.cc/arduino-mini-05 73 | $ENDCMP 74 | # 75 | $CMP Arduino_Nano_Socket 76 | D Socket for Arduino Nano 77 | K Arduino MPU Shield 78 | F https://store.arduino.cc/arduino-nano 79 | $ENDCMP 80 | # 81 | $CMP Arduino_Uno_Shield 82 | D Shield for Arduino Uno 83 | K Arduino MPU Shield 84 | F https://store.arduino.cc/arduino-uno-rev3 85 | $ENDCMP 86 | # 87 | $CMP Arduino_Zero_Shield 88 | D Shield for Arduino Zero 89 | K Arduino MPU Shield 90 | F https://store.arduino.cc/genuino-zero 91 | $ENDCMP 92 | # 93 | #End Doc Library 94 | -------------------------------------------------------------------------------- /start9_programming_interface/programming_interface/fp-info-cache: -------------------------------------------------------------------------------- 1 | 0 2 | -------------------------------------------------------------------------------- /start9_programming_interface/programming_interface/fp-lib-table: -------------------------------------------------------------------------------- 1 | (fp_lib_table 2 | (lib (name Housings_LCC)(type KiCad)(uri "/Users/fscozzafava/Library/Mobile Documents/com~apple~CloudDocs/computer project/8bit-computer/Housings_LCC.pretty")(options "")(descr "")) 3 | ) 4 | -------------------------------------------------------------------------------- /start9_programming_interface/programming_interface/programming_interface.pro: -------------------------------------------------------------------------------- 1 | update=Thursday, 26 March 2020 at 22:33:30 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 | [pcbnew] 16 | version=1 17 | PageLayoutDescrFile= 18 | LastNetListRead= 19 | CopperLayerCount=2 20 | BoardThickness=1.6 21 | AllowMicroVias=0 22 | AllowBlindVias=0 23 | RequireCourtyardDefinitions=0 24 | ProhibitOverlappingCourtyards=1 25 | MinTrackWidth=0.2 26 | MinViaDiameter=0.4 27 | MinViaDrill=0.3 28 | MinMicroViaDiameter=0.2 29 | MinMicroViaDrill=0.09999999999999999 30 | MinHoleToHole=0.25 31 | TrackWidth1=0.254 32 | ViaDiameter1=0.6 33 | ViaDrill1=0.4 34 | dPairWidth1=0.3 35 | dPairGap1=0.25 36 | dPairViaGap1=0.25 37 | SilkLineWidth=0.12 38 | SilkTextSizeV=1 39 | SilkTextSizeH=1 40 | SilkTextSizeThickness=0.15 41 | SilkTextItalic=0 42 | SilkTextUpright=1 43 | CopperLineWidth=0.2 44 | CopperTextSizeV=1.5 45 | CopperTextSizeH=1.5 46 | CopperTextThickness=0.3 47 | CopperTextItalic=0 48 | CopperTextUpright=1 49 | EdgeCutLineWidth=0.05 50 | CourtyardLineWidth=0.05 51 | OthersLineWidth=0.15 52 | OthersTextSizeV=1 53 | OthersTextSizeH=1 54 | OthersTextSizeThickness=0.15 55 | OthersTextItalic=0 56 | OthersTextUpright=1 57 | SolderMaskClearance=0.051 58 | SolderMaskMinWidth=0.25 59 | SolderPasteClearance=0 60 | SolderPasteRatio=-0 61 | [pcbnew/Layer.F.Cu] 62 | Name=F.Cu 63 | Type=0 64 | Enabled=1 65 | [pcbnew/Layer.In1.Cu] 66 | Name=In1.Cu 67 | Type=0 68 | Enabled=0 69 | [pcbnew/Layer.In2.Cu] 70 | Name=In2.Cu 71 | Type=0 72 | Enabled=0 73 | [pcbnew/Layer.In3.Cu] 74 | Name=In3.Cu 75 | Type=0 76 | Enabled=0 77 | [pcbnew/Layer.In4.Cu] 78 | Name=In4.Cu 79 | Type=0 80 | Enabled=0 81 | [pcbnew/Layer.In5.Cu] 82 | Name=In5.Cu 83 | Type=0 84 | Enabled=0 85 | [pcbnew/Layer.In6.Cu] 86 | Name=In6.Cu 87 | Type=0 88 | Enabled=0 89 | [pcbnew/Layer.In7.Cu] 90 | Name=In7.Cu 91 | Type=0 92 | Enabled=0 93 | [pcbnew/Layer.In8.Cu] 94 | Name=In8.Cu 95 | Type=0 96 | Enabled=0 97 | [pcbnew/Layer.In9.Cu] 98 | Name=In9.Cu 99 | Type=0 100 | Enabled=0 101 | [pcbnew/Layer.In10.Cu] 102 | Name=In10.Cu 103 | Type=0 104 | Enabled=0 105 | [pcbnew/Layer.In11.Cu] 106 | Name=In11.Cu 107 | Type=0 108 | Enabled=0 109 | [pcbnew/Layer.In12.Cu] 110 | Name=In12.Cu 111 | Type=0 112 | Enabled=0 113 | [pcbnew/Layer.In13.Cu] 114 | Name=In13.Cu 115 | Type=0 116 | Enabled=0 117 | [pcbnew/Layer.In14.Cu] 118 | Name=In14.Cu 119 | Type=0 120 | Enabled=0 121 | [pcbnew/Layer.In15.Cu] 122 | Name=In15.Cu 123 | Type=0 124 | Enabled=0 125 | [pcbnew/Layer.In16.Cu] 126 | Name=In16.Cu 127 | Type=0 128 | Enabled=0 129 | [pcbnew/Layer.In17.Cu] 130 | Name=In17.Cu 131 | Type=0 132 | Enabled=0 133 | [pcbnew/Layer.In18.Cu] 134 | Name=In18.Cu 135 | Type=0 136 | Enabled=0 137 | [pcbnew/Layer.In19.Cu] 138 | Name=In19.Cu 139 | Type=0 140 | Enabled=0 141 | [pcbnew/Layer.In20.Cu] 142 | Name=In20.Cu 143 | Type=0 144 | Enabled=0 145 | [pcbnew/Layer.In21.Cu] 146 | Name=In21.Cu 147 | Type=0 148 | Enabled=0 149 | [pcbnew/Layer.In22.Cu] 150 | Name=In22.Cu 151 | Type=0 152 | Enabled=0 153 | [pcbnew/Layer.In23.Cu] 154 | Name=In23.Cu 155 | Type=0 156 | Enabled=0 157 | [pcbnew/Layer.In24.Cu] 158 | Name=In24.Cu 159 | Type=0 160 | Enabled=0 161 | [pcbnew/Layer.In25.Cu] 162 | Name=In25.Cu 163 | Type=0 164 | Enabled=0 165 | [pcbnew/Layer.In26.Cu] 166 | Name=In26.Cu 167 | Type=0 168 | Enabled=0 169 | [pcbnew/Layer.In27.Cu] 170 | Name=In27.Cu 171 | Type=0 172 | Enabled=0 173 | [pcbnew/Layer.In28.Cu] 174 | Name=In28.Cu 175 | Type=0 176 | Enabled=0 177 | [pcbnew/Layer.In29.Cu] 178 | Name=In29.Cu 179 | Type=0 180 | Enabled=0 181 | [pcbnew/Layer.In30.Cu] 182 | Name=In30.Cu 183 | Type=0 184 | Enabled=0 185 | [pcbnew/Layer.B.Cu] 186 | Name=B.Cu 187 | Type=0 188 | Enabled=1 189 | [pcbnew/Layer.B.Adhes] 190 | Enabled=1 191 | [pcbnew/Layer.F.Adhes] 192 | Enabled=1 193 | [pcbnew/Layer.B.Paste] 194 | Enabled=1 195 | [pcbnew/Layer.F.Paste] 196 | Enabled=1 197 | [pcbnew/Layer.B.SilkS] 198 | Enabled=1 199 | [pcbnew/Layer.F.SilkS] 200 | Enabled=1 201 | [pcbnew/Layer.B.Mask] 202 | Enabled=1 203 | [pcbnew/Layer.F.Mask] 204 | Enabled=1 205 | [pcbnew/Layer.Dwgs.User] 206 | Enabled=1 207 | [pcbnew/Layer.Cmts.User] 208 | Enabled=1 209 | [pcbnew/Layer.Eco1.User] 210 | Enabled=1 211 | [pcbnew/Layer.Eco2.User] 212 | Enabled=1 213 | [pcbnew/Layer.Edge.Cuts] 214 | Enabled=1 215 | [pcbnew/Layer.Margin] 216 | Enabled=1 217 | [pcbnew/Layer.B.CrtYd] 218 | Enabled=1 219 | [pcbnew/Layer.F.CrtYd] 220 | Enabled=1 221 | [pcbnew/Layer.B.Fab] 222 | Enabled=1 223 | [pcbnew/Layer.F.Fab] 224 | Enabled=1 225 | [pcbnew/Layer.Rescue] 226 | Enabled=0 227 | [pcbnew/Netclasses] 228 | [pcbnew/Netclasses/Default] 229 | Name=Default 230 | Clearance=0.253997 231 | TrackWidth=0.254 232 | ViaDiameter=0.6 233 | ViaDrill=0.4 234 | uViaDiameter=0.3 235 | uViaDrill=0.1 236 | dPairWidth=0.3 237 | dPairGap=0.25 238 | dPairViaGap=0.25 239 | [pcbnew/Netclasses/1] 240 | Name=POWER 241 | Clearance=0.253997 242 | TrackWidth=0.3 243 | ViaDiameter=0.6 244 | ViaDrill=0.4 245 | uViaDiameter=0.3 246 | uViaDrill=0.1 247 | dPairWidth=0.3 248 | dPairGap=0.25 249 | dPairViaGap=0.25 250 | -------------------------------------------------------------------------------- /start9_programming_interface/programming_interface/sym-lib-table: -------------------------------------------------------------------------------- 1 | (sym_lib_table 2 | (lib (name 8bit-computer-rescue)(type Legacy)(uri "/Users/fscozzafava/Library/Mobile Documents/com~apple~CloudDocs/computer project/8bit-computer/8bit-computer-rescue.lib")(options "")(descr "")) 3 | (lib (name arduino)(type Legacy)(uri ${KIPRJMOD}/arduino-kicad-library/arduino.lib)(options "")(descr "")) 4 | ) 5 | -------------------------------------------------------------------------------- /start9_programming_interface/programming_interface/trainer.kicad_mod: -------------------------------------------------------------------------------- 1 | (module LOGO (layer F.Cu) 2 | (at 0 0) 3 | (fp_text reference "G***" (at 0 0) (layer F.SilkS) hide 4 | (effects (font (thickness 0.3))) 5 | ) 6 | (fp_text value "LOGO" (at 0.75 0) (layer F.SilkS) hide 7 | (effects (font (thickness 0.3))) 8 | ) 9 | (fp_poly (pts (xy 3.048000 1.016000) (xy 3.556000 1.016000) (xy 3.556000 2.032000) (xy 3.048000 2.032000) (xy 3.048000 1.016000) )(layer F.SilkS) (width 0.010000) 10 | ) 11 | (fp_poly (pts (xy 2.540000 -3.048000) (xy 2.540000 -2.032000) (xy 3.048000 -2.032000) (xy 3.048000 -1.016000) (xy 2.540000 -1.016000) (xy 2.540000 -0.508000) (xy 2.032000 -0.508000) (xy 2.032000 -1.524000) 12 | (xy 1.524000 -1.524000) (xy 1.524000 -2.032000) (xy 2.032000 -2.032000) (xy 2.032000 -3.048000) (xy 2.540000 -3.048000) )(layer F.SilkS) (width 0.010000) 13 | ) 14 | (fp_poly (pts (xy -1.524000 -4.064000) (xy 1.524000 -4.064000) (xy 1.524000 -3.556000) (xy -1.524000 -3.556000) (xy -1.524000 -4.064000) )(layer F.SilkS) (width 0.010000) 15 | ) 16 | (fp_poly (pts (xy -2.032000 -3.556000) (xy -1.524000 -3.556000) (xy -1.524000 -3.048000) (xy -2.032000 -3.048000) (xy -2.032000 -3.556000) )(layer F.SilkS) (width 0.010000) 17 | ) 18 | (fp_poly (pts (xy -3.048000 -2.032000) (xy -2.540000 -2.032000) (xy -2.540000 -3.048000) (xy -2.032000 -3.048000) (xy -2.032000 -2.032000) (xy -1.524000 -2.032000) (xy -1.524000 -1.524000) (xy -2.032000 -1.524000) 19 | (xy -2.032000 -0.508000) (xy -2.540000 -0.508000) (xy -2.540000 -1.016000) (xy -3.048000 -1.016000) (xy -3.048000 -2.032000) )(layer F.SilkS) (width 0.010000) 20 | ) 21 | (fp_poly (pts (xy -3.556000 0.000000) (xy -3.556000 -1.016000) (xy -3.048000 -1.016000) (xy -3.048000 0.000000) (xy -3.556000 0.000000) )(layer F.SilkS) (width 0.010000) 22 | ) 23 | (fp_poly (pts (xy 3.048000 -1.016000) (xy 3.556000 -1.016000) (xy 3.556000 0.000000) (xy 3.048000 0.000000) (xy 3.048000 -1.016000) )(layer F.SilkS) (width 0.010000) 24 | ) 25 | (fp_poly (pts (xy 1.524000 -3.048000) (xy 1.524000 -3.556000) (xy 2.032000 -3.556000) (xy 2.032000 -3.048000) (xy 1.524000 -3.048000) )(layer F.SilkS) (width 0.010000) 26 | ) 27 | (fp_poly (pts (xy 3.048000 1.016000) (xy 2.032000 1.016000) (xy 2.032000 2.032000) (xy 3.048000 2.032000) (xy 3.048000 2.540000) (xy 2.540000 2.540000) (xy 2.540000 3.556000) (xy 2.032000 3.556000) 28 | (xy 2.032000 4.064000) (xy 0.508000 4.064000) (xy 0.508000 3.556000) (xy -0.508000 3.556000) (xy -0.508000 4.064000) (xy -2.032000 4.064000) (xy -2.032000 3.556000) (xy -2.540000 3.556000) 29 | (xy -2.540000 2.540000) (xy -2.032000 2.540000) (xy -2.032000 3.556000) (xy -0.508000 3.556000) (xy -0.508000 3.048000) (xy 0.508000 3.048000) (xy 0.508000 3.556000) (xy 2.032000 3.556000) 30 | (xy 2.032000 2.540000) (xy 1.524000 2.540000) (xy 1.524000 2.032000) (xy 0.508000 2.032000) (xy 0.508000 2.540000) (xy -0.508000 2.540000) (xy -0.508000 2.032000) (xy -1.524000 2.032000) 31 | (xy -1.524000 2.540000) (xy -2.032000 2.540000) (xy -2.540000 2.540000) (xy -3.048000 2.540000) (xy -3.048000 2.032000) (xy -3.556000 2.032000) (xy -3.556000 1.016000) (xy -3.048000 1.016000) 32 | (xy -3.048000 2.032000) (xy -2.032000 2.032000) (xy -2.032000 1.016000) (xy -3.048000 1.016000) (xy -3.048000 0.000000) (xy -2.032000 0.000000) (xy -2.032000 0.508000) (xy -1.524000 0.508000) 33 | (xy -1.524000 1.016000) (xy 1.524000 1.016000) (xy 1.524000 0.508000) (xy 2.032000 0.508000) (xy 2.032000 0.000000) (xy 3.048000 0.000000) (xy 3.048000 1.016000) )(layer F.SilkS) (width 0.010000) 34 | ) 35 | (fp_poly (pts (xy -0.508000 3.048000) (xy -1.524000 3.048000) (xy -1.524000 2.540000) (xy -0.508000 2.540000) (xy -0.508000 3.048000) )(layer F.SilkS) (width 0.010000) 36 | ) 37 | (fp_poly (pts (xy 1.524000 3.048000) (xy 0.508000 3.048000) (xy 0.508000 2.540000) (xy 1.524000 2.540000) (xy 1.524000 3.048000) )(layer F.SilkS) (width 0.010000) 38 | ) 39 | (fp_poly (pts (xy -0.508000 0.508000) (xy -1.016000 0.508000) (xy -1.016000 -0.508000) (xy -0.508000 -0.508000) (xy -0.508000 0.508000) )(layer F.SilkS) (width 0.010000) 40 | ) 41 | (fp_poly (pts (xy 1.016000 0.508000) (xy 0.508000 0.508000) (xy 0.508000 -0.508000) (xy 1.016000 -0.508000) (xy 1.016000 0.508000) )(layer F.SilkS) (width 0.010000) 42 | ) 43 | (fp_poly (pts (xy 1.524000 -1.016000) (xy -1.524000 -1.016000) (xy -1.524000 -1.524000) (xy 1.524000 -1.524000) (xy 1.524000 -1.016000) )(layer F.SilkS) (width 0.010000) 44 | ) 45 | ) 46 | --------------------------------------------------------------------------------