├── .gitignore ├── 68000sbc.kicad_pcb ├── 68000sbc.pro ├── 68000sbc.sch ├── API.md ├── LICENSE ├── PadRows.pretty └── PadRow_1x25_P2.54mm.kicad_mod ├── README.md ├── bom.txt ├── code ├── 68000app.inc ├── 68000sbc.inc ├── Makefile ├── baudrate.py ├── cfcard.inc ├── fizzbuzz.asm ├── hello.asm ├── idle.asm ├── macros.inc ├── memory.inc ├── rom.asm ├── serload.py ├── syscalls.inc └── uart.inc ├── fp-lib-table └── images └── board.jpg /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *.swp 3 | *.bck 4 | *.kicad_pcb-bak 5 | *.sch-bak 6 | fp-info-cache 7 | *-cache.lib 8 | gerbers/ 9 | *.hex 10 | *.lst 11 | *.bin 12 | *.srec 13 | -------------------------------------------------------------------------------- /68000sbc.pro: -------------------------------------------------------------------------------- 1 | update=Saturday, June 06, 2020 at 04:33:48 PM 2 | version=1 3 | last_client=kicad 4 | [general] 5 | version=1 6 | RootSch= 7 | BoardNm= 8 | [cvpcb] 9 | version=1 10 | NetIExt=net 11 | [eeschema] 12 | version=1 13 | LibDir= 14 | [eeschema/libraries] 15 | [schematic_editor] 16 | version=1 17 | PageLayoutDescrFile= 18 | PlotDirectoryName= 19 | SubpartIdSeparator=0 20 | SubpartFirstId=65 21 | NetFmtName=Pcbnew 22 | SpiceAjustPassiveValues=0 23 | LabSize=50 24 | ERC_TestSimilarLabels=1 25 | [pcbnew] 26 | version=1 27 | PageLayoutDescrFile= 28 | LastNetListRead=68000sbc.net 29 | CopperLayerCount=2 30 | BoardThickness=1.6 31 | AllowMicroVias=0 32 | AllowBlindVias=0 33 | RequireCourtyardDefinitions=0 34 | ProhibitOverlappingCourtyards=1 35 | MinTrackWidth=0.2 36 | MinViaDiameter=0.4 37 | MinViaDrill=0.3 38 | MinMicroViaDiameter=0.2 39 | MinMicroViaDrill=0.09999999999999999 40 | MinHoleToHole=0.25 41 | TrackWidth1=0.254 42 | ViaDiameter1=0.6858 43 | ViaDrill1=0.3302 44 | dPairWidth1=0.2 45 | dPairGap1=0.25 46 | dPairViaGap1=0.25 47 | SilkLineWidth=0.12 48 | SilkTextSizeV=1 49 | SilkTextSizeH=1 50 | SilkTextSizeThickness=0.15 51 | SilkTextItalic=0 52 | SilkTextUpright=1 53 | CopperLineWidth=0.2 54 | CopperTextSizeV=1.5 55 | CopperTextSizeH=1.5 56 | CopperTextThickness=0.3 57 | CopperTextItalic=0 58 | CopperTextUpright=1 59 | EdgeCutLineWidth=0.05 60 | CourtyardLineWidth=0.05 61 | OthersLineWidth=0.15 62 | OthersTextSizeV=1 63 | OthersTextSizeH=1 64 | OthersTextSizeThickness=0.15 65 | OthersTextItalic=0 66 | OthersTextUpright=1 67 | SolderMaskClearance=0.051 68 | SolderMaskMinWidth=0.25 69 | SolderPasteClearance=0 70 | SolderPasteRatio=0 71 | [pcbnew/Layer.F.Cu] 72 | Name=F.Cu 73 | Type=0 74 | Enabled=1 75 | [pcbnew/Layer.In1.Cu] 76 | Name=In1.Cu 77 | Type=0 78 | Enabled=0 79 | [pcbnew/Layer.In2.Cu] 80 | Name=In2.Cu 81 | Type=0 82 | Enabled=0 83 | [pcbnew/Layer.In3.Cu] 84 | Name=In3.Cu 85 | Type=0 86 | Enabled=0 87 | [pcbnew/Layer.In4.Cu] 88 | Name=In4.Cu 89 | Type=0 90 | Enabled=0 91 | [pcbnew/Layer.In5.Cu] 92 | Name=In5.Cu 93 | Type=0 94 | Enabled=0 95 | [pcbnew/Layer.In6.Cu] 96 | Name=In6.Cu 97 | Type=0 98 | Enabled=0 99 | [pcbnew/Layer.In7.Cu] 100 | Name=In7.Cu 101 | Type=0 102 | Enabled=0 103 | [pcbnew/Layer.In8.Cu] 104 | Name=In8.Cu 105 | Type=0 106 | Enabled=0 107 | [pcbnew/Layer.In9.Cu] 108 | Name=In9.Cu 109 | Type=0 110 | Enabled=0 111 | [pcbnew/Layer.In10.Cu] 112 | Name=In10.Cu 113 | Type=0 114 | Enabled=0 115 | [pcbnew/Layer.In11.Cu] 116 | Name=In11.Cu 117 | Type=0 118 | Enabled=0 119 | [pcbnew/Layer.In12.Cu] 120 | Name=In12.Cu 121 | Type=0 122 | Enabled=0 123 | [pcbnew/Layer.In13.Cu] 124 | Name=In13.Cu 125 | Type=0 126 | Enabled=0 127 | [pcbnew/Layer.In14.Cu] 128 | Name=In14.Cu 129 | Type=0 130 | Enabled=0 131 | [pcbnew/Layer.In15.Cu] 132 | Name=In15.Cu 133 | Type=0 134 | Enabled=0 135 | [pcbnew/Layer.In16.Cu] 136 | Name=In16.Cu 137 | Type=0 138 | Enabled=0 139 | [pcbnew/Layer.In17.Cu] 140 | Name=In17.Cu 141 | Type=0 142 | Enabled=0 143 | [pcbnew/Layer.In18.Cu] 144 | Name=In18.Cu 145 | Type=0 146 | Enabled=0 147 | [pcbnew/Layer.In19.Cu] 148 | Name=In19.Cu 149 | Type=0 150 | Enabled=0 151 | [pcbnew/Layer.In20.Cu] 152 | Name=In20.Cu 153 | Type=0 154 | Enabled=0 155 | [pcbnew/Layer.In21.Cu] 156 | Name=In21.Cu 157 | Type=0 158 | Enabled=0 159 | [pcbnew/Layer.In22.Cu] 160 | Name=In22.Cu 161 | Type=0 162 | Enabled=0 163 | [pcbnew/Layer.In23.Cu] 164 | Name=In23.Cu 165 | Type=0 166 | Enabled=0 167 | [pcbnew/Layer.In24.Cu] 168 | Name=In24.Cu 169 | Type=0 170 | Enabled=0 171 | [pcbnew/Layer.In25.Cu] 172 | Name=In25.Cu 173 | Type=0 174 | Enabled=0 175 | [pcbnew/Layer.In26.Cu] 176 | Name=In26.Cu 177 | Type=0 178 | Enabled=0 179 | [pcbnew/Layer.In27.Cu] 180 | Name=In27.Cu 181 | Type=0 182 | Enabled=0 183 | [pcbnew/Layer.In28.Cu] 184 | Name=In28.Cu 185 | Type=0 186 | Enabled=0 187 | [pcbnew/Layer.In29.Cu] 188 | Name=In29.Cu 189 | Type=0 190 | Enabled=0 191 | [pcbnew/Layer.In30.Cu] 192 | Name=In30.Cu 193 | Type=0 194 | Enabled=0 195 | [pcbnew/Layer.B.Cu] 196 | Name=B.Cu 197 | Type=0 198 | Enabled=1 199 | [pcbnew/Layer.B.Adhes] 200 | Enabled=1 201 | [pcbnew/Layer.F.Adhes] 202 | Enabled=1 203 | [pcbnew/Layer.B.Paste] 204 | Enabled=1 205 | [pcbnew/Layer.F.Paste] 206 | Enabled=1 207 | [pcbnew/Layer.B.SilkS] 208 | Enabled=1 209 | [pcbnew/Layer.F.SilkS] 210 | Enabled=1 211 | [pcbnew/Layer.B.Mask] 212 | Enabled=1 213 | [pcbnew/Layer.F.Mask] 214 | Enabled=1 215 | [pcbnew/Layer.Dwgs.User] 216 | Enabled=1 217 | [pcbnew/Layer.Cmts.User] 218 | Enabled=1 219 | [pcbnew/Layer.Eco1.User] 220 | Enabled=1 221 | [pcbnew/Layer.Eco2.User] 222 | Enabled=1 223 | [pcbnew/Layer.Edge.Cuts] 224 | Enabled=1 225 | [pcbnew/Layer.Margin] 226 | Enabled=1 227 | [pcbnew/Layer.B.CrtYd] 228 | Enabled=1 229 | [pcbnew/Layer.F.CrtYd] 230 | Enabled=1 231 | [pcbnew/Layer.B.Fab] 232 | Enabled=1 233 | [pcbnew/Layer.F.Fab] 234 | Enabled=1 235 | [pcbnew/Layer.Rescue] 236 | Enabled=0 237 | [pcbnew/Netclasses] 238 | [pcbnew/Netclasses/Default] 239 | Name=Default 240 | Clearance=0.1524 241 | TrackWidth=0.254 242 | ViaDiameter=0.6858 243 | ViaDrill=0.3302 244 | uViaDiameter=0.6858 245 | uViaDrill=0.3302 246 | dPairWidth=0.2 247 | dPairGap=0.25 248 | dPairViaGap=0.25 249 | [pcbnew/Netclasses/1] 250 | Name=Thicc 251 | Clearance=0.1524 252 | TrackWidth=0.254 253 | ViaDiameter=0.6858 254 | ViaDrill=0.3302 255 | uViaDiameter=0.6858 256 | uViaDrill=0.3302 257 | dPairWidth=0.2 258 | dPairGap=0.25 259 | dPairViaGap=0.25 260 | -------------------------------------------------------------------------------- /68000sbc.sch: -------------------------------------------------------------------------------- 1 | EESchema Schematic File Version 4 2 | EELAYER 30 0 3 | EELAYER END 4 | $Descr A3 16535 11693 5 | encoding utf-8 6 | Sheet 1 1 7 | Title "68k nano single board computer" 8 | Date "2020-06-24" 9 | Rev "1" 10 | Comp "Matt Sarnoff (msarnoff.org)" 11 | Comment1 "" 12 | Comment2 "" 13 | Comment3 "" 14 | Comment4 "" 15 | $EndDescr 16 | Text Label 9825 4725 2 50 ~ 0 17 | ~WRU 18 | Text Label 9825 4625 2 50 ~ 0 19 | ~RDU 20 | Wire Wire Line 21 | 9650 4725 9825 4725 22 | Wire Wire Line 23 | 9650 4625 9825 4625 24 | Text Label 9825 2325 2 50 ~ 0 25 | ~WRL 26 | Text Label 9825 2225 2 50 ~ 0 27 | ~RDL 28 | Wire Wire Line 29 | 9650 2325 9825 2325 30 | Wire Wire Line 31 | 9650 2225 9825 2225 32 | Text Label 8475 5325 0 50 ~ 0 33 | A19 34 | Text Label 8475 5225 0 50 ~ 0 35 | A18 36 | Text Label 8475 5125 0 50 ~ 0 37 | A17 38 | Text Label 8475 5025 0 50 ~ 0 39 | A16 40 | Wire Wire Line 41 | 8650 5325 8475 5325 42 | Wire Wire Line 43 | 8650 5225 8475 5225 44 | Wire Wire Line 45 | 8650 5125 8475 5125 46 | Wire Wire Line 47 | 8650 5025 8475 5025 48 | Text Label 8475 4925 0 50 ~ 0 49 | A15 50 | Text Label 8475 4825 0 50 ~ 0 51 | A14 52 | Text Label 8475 4725 0 50 ~ 0 53 | A13 54 | Text Label 8475 4625 0 50 ~ 0 55 | A12 56 | Text Label 8475 4525 0 50 ~ 0 57 | A11 58 | Text Label 8475 4425 0 50 ~ 0 59 | A10 60 | Text Label 8475 4325 0 50 ~ 0 61 | A9 62 | Text Label 8475 4225 0 50 ~ 0 63 | A8 64 | Text Label 8475 4125 0 50 ~ 0 65 | A7 66 | Text Label 8475 4025 0 50 ~ 0 67 | A6 68 | Text Label 8475 3925 0 50 ~ 0 69 | A5 70 | Text Label 8475 3825 0 50 ~ 0 71 | A4 72 | Text Label 8475 3725 0 50 ~ 0 73 | A3 74 | Text Label 8475 3625 0 50 ~ 0 75 | A2 76 | Text Label 8475 3525 0 50 ~ 0 77 | A1 78 | Wire Wire Line 79 | 8650 4925 8475 4925 80 | Wire Wire Line 81 | 8650 4825 8475 4825 82 | Wire Wire Line 83 | 8650 4725 8475 4725 84 | Wire Wire Line 85 | 8650 4625 8475 4625 86 | Wire Wire Line 87 | 8650 4525 8475 4525 88 | Wire Wire Line 89 | 8650 4425 8475 4425 90 | Wire Wire Line 91 | 8650 4325 8475 4325 92 | Wire Wire Line 93 | 8650 4225 8475 4225 94 | Wire Wire Line 95 | 8650 4125 8475 4125 96 | Wire Wire Line 97 | 8650 4025 8475 4025 98 | Wire Wire Line 99 | 8650 3925 8475 3925 100 | Wire Wire Line 101 | 8650 3825 8475 3825 102 | Wire Wire Line 103 | 8650 3725 8475 3725 104 | Wire Wire Line 105 | 8650 3625 8475 3625 106 | Wire Wire Line 107 | 8650 3525 8475 3525 108 | Text Label 8475 2925 0 50 ~ 0 109 | A19 110 | Text Label 8475 2825 0 50 ~ 0 111 | A18 112 | Text Label 8475 2725 0 50 ~ 0 113 | A17 114 | Text Label 8475 2625 0 50 ~ 0 115 | A16 116 | Wire Wire Line 117 | 8650 2925 8475 2925 118 | Wire Wire Line 119 | 8650 2825 8475 2825 120 | Wire Wire Line 121 | 8650 2725 8475 2725 122 | Wire Wire Line 123 | 8650 2625 8475 2625 124 | Text Label 6350 2950 2 50 ~ 0 125 | A19 126 | Text Label 6350 2850 2 50 ~ 0 127 | A18 128 | Text Label 6350 2750 2 50 ~ 0 129 | A17 130 | Text Label 6350 2650 2 50 ~ 0 131 | A16 132 | Wire Wire Line 133 | 6175 2950 6350 2950 134 | Wire Wire Line 135 | 6175 2850 6350 2850 136 | Wire Wire Line 137 | 6175 2750 6350 2750 138 | Wire Wire Line 139 | 6175 2650 6350 2650 140 | Text Label 8475 2525 0 50 ~ 0 141 | A15 142 | Text Label 8475 2425 0 50 ~ 0 143 | A14 144 | Text Label 8475 2325 0 50 ~ 0 145 | A13 146 | Text Label 8475 2225 0 50 ~ 0 147 | A12 148 | Text Label 8475 2125 0 50 ~ 0 149 | A11 150 | Text Label 8475 2025 0 50 ~ 0 151 | A10 152 | Text Label 8475 1925 0 50 ~ 0 153 | A9 154 | Text Label 8475 1825 0 50 ~ 0 155 | A8 156 | Text Label 8475 1725 0 50 ~ 0 157 | A7 158 | Text Label 8475 1625 0 50 ~ 0 159 | A6 160 | Text Label 8475 1525 0 50 ~ 0 161 | A5 162 | Text Label 8475 1425 0 50 ~ 0 163 | A4 164 | Text Label 8475 1325 0 50 ~ 0 165 | A3 166 | Text Label 8475 1225 0 50 ~ 0 167 | A2 168 | Text Label 8475 1125 0 50 ~ 0 169 | A1 170 | Wire Wire Line 171 | 8650 2525 8475 2525 172 | Wire Wire Line 173 | 8650 2425 8475 2425 174 | Wire Wire Line 175 | 8650 2325 8475 2325 176 | Wire Wire Line 177 | 8650 2225 8475 2225 178 | Wire Wire Line 179 | 8650 2125 8475 2125 180 | Wire Wire Line 181 | 8650 2025 8475 2025 182 | Wire Wire Line 183 | 8650 1925 8475 1925 184 | Wire Wire Line 185 | 8650 1825 8475 1825 186 | Wire Wire Line 187 | 8650 1725 8475 1725 188 | Wire Wire Line 189 | 8650 1625 8475 1625 190 | Wire Wire Line 191 | 8650 1525 8475 1525 192 | Wire Wire Line 193 | 8650 1425 8475 1425 194 | Wire Wire Line 195 | 8650 1325 8475 1325 196 | Wire Wire Line 197 | 8650 1225 8475 1225 198 | Wire Wire Line 199 | 8650 1125 8475 1125 200 | Text Label 9825 4225 2 50 ~ 0 201 | D15 202 | Text Label 9825 4125 2 50 ~ 0 203 | D14 204 | Text Label 9825 4025 2 50 ~ 0 205 | D13 206 | Text Label 9825 3925 2 50 ~ 0 207 | D12 208 | Text Label 9825 3825 2 50 ~ 0 209 | D11 210 | Text Label 9825 3725 2 50 ~ 0 211 | D10 212 | Text Label 9825 3625 2 50 ~ 0 213 | D9 214 | Text Label 9825 3525 2 50 ~ 0 215 | D8 216 | Wire Wire Line 217 | 9650 4225 9825 4225 218 | Wire Wire Line 219 | 9650 4125 9825 4125 220 | Wire Wire Line 221 | 9650 4025 9825 4025 222 | Wire Wire Line 223 | 9650 3925 9825 3925 224 | Wire Wire Line 225 | 9650 3825 9825 3825 226 | Wire Wire Line 227 | 9650 3725 9825 3725 228 | Wire Wire Line 229 | 9650 3625 9825 3625 230 | Wire Wire Line 231 | 9650 3525 9825 3525 232 | Text Label 9825 1825 2 50 ~ 0 233 | D7 234 | Text Label 9825 1725 2 50 ~ 0 235 | D6 236 | Text Label 9825 1625 2 50 ~ 0 237 | D5 238 | Text Label 9825 1525 2 50 ~ 0 239 | D4 240 | Text Label 9825 1425 2 50 ~ 0 241 | D3 242 | Text Label 9825 1325 2 50 ~ 0 243 | D2 244 | Text Label 9825 1225 2 50 ~ 0 245 | D1 246 | Text Label 9825 1125 2 50 ~ 0 247 | D0 248 | Wire Wire Line 249 | 9650 1825 9825 1825 250 | Wire Wire Line 251 | 9650 1725 9825 1725 252 | Wire Wire Line 253 | 9650 1625 9825 1625 254 | Wire Wire Line 255 | 9650 1525 9825 1525 256 | Wire Wire Line 257 | 9650 1425 9825 1425 258 | Wire Wire Line 259 | 9650 1325 9825 1325 260 | Wire Wire Line 261 | 9650 1225 9825 1225 262 | Wire Wire Line 263 | 9650 1125 9825 1125 264 | Wire Wire Line 265 | 9150 3125 9300 3125 266 | $Comp 267 | L power:GND #PWR0101 268 | U 1 1 5EEF0067 269 | P 9300 3125 270 | F 0 "#PWR0101" H 9300 2875 50 0001 C CNN 271 | F 1 "GND" H 9300 2975 50 0000 C CNN 272 | F 2 "" H 9300 3125 50 0001 C CNN 273 | F 3 "" H 9300 3125 50 0001 C CNN 274 | 1 9300 3125 275 | 1 0 0 -1 276 | $EndComp 277 | Wire Wire Line 278 | 9150 3325 8975 3325 279 | $Comp 280 | L power:VCC #PWR0102 281 | U 1 1 5EEE8072 282 | P 8975 3325 283 | F 0 "#PWR0102" H 8975 3175 50 0001 C CNN 284 | F 1 "VCC" H 8975 3475 50 0000 C CNN 285 | F 2 "" H 8975 3325 50 0001 C CNN 286 | F 3 "" H 8975 3325 50 0001 C CNN 287 | 1 8975 3325 288 | 1 0 0 -1 289 | $EndComp 290 | $Comp 291 | L power:GND #PWR0103 292 | U 1 1 5EEE79D5 293 | P 9150 5525 294 | F 0 "#PWR0103" H 9150 5275 50 0001 C CNN 295 | F 1 "GND" H 9150 5375 50 0000 C CNN 296 | F 2 "" H 9150 5525 50 0001 C CNN 297 | F 3 "" H 9150 5525 50 0001 C CNN 298 | 1 9150 5525 299 | 1 0 0 -1 300 | $EndComp 301 | $Comp 302 | L power:VCC #PWR0104 303 | U 1 1 5EEE7371 304 | P 9150 925 305 | F 0 "#PWR0104" H 9150 775 50 0001 C CNN 306 | F 1 "VCC" H 9150 1075 50 0000 C CNN 307 | F 2 "" H 9150 925 50 0001 C CNN 308 | F 3 "" H 9150 925 50 0001 C CNN 309 | 1 9150 925 310 | 1 0 0 -1 311 | $EndComp 312 | $Comp 313 | L Memory_RAM:AS6C4008-55PCN U6 314 | U 1 1 5EEE48D7 315 | P 9150 4425 316 | F 0 "U6" H 9225 3375 50 0000 L CNN 317 | F 1 "AS6C4008-55PCN" H 9225 3300 50 0000 L CNN 318 | F 2 "Package_DIP:DIP-32_W15.24mm_Socket" H 9150 4525 50 0001 C CNN 319 | F 3 "https://www.alliancememory.com/wp-content/uploads/pdf/AS6C4008.pdf" H 9150 4525 50 0001 C CNN 320 | 1 9150 4425 321 | 1 0 0 -1 322 | $EndComp 323 | $Comp 324 | L Memory_RAM:AS6C4008-55PCN U4 325 | U 1 1 5EEE27C6 326 | P 9150 2025 327 | F 0 "U4" H 9200 3150 50 0000 L CNN 328 | F 1 "AS6C4008-55PCN" H 9200 3075 50 0000 L CNN 329 | F 2 "Package_DIP:DIP-32_W15.24mm_Socket" H 9150 2125 50 0001 C CNN 330 | F 3 "https://www.alliancememory.com/wp-content/uploads/pdf/AS6C4008.pdf" H 9150 2125 50 0001 C CNN 331 | 1 9150 2025 332 | 1 0 0 -1 333 | $EndComp 334 | Text Notes 7300 5150 0 50 ~ 0 335 | (UPPER) 336 | Text Notes 7300 2750 0 50 ~ 0 337 | (LOWER) 338 | Wire Wire Line 339 | 6925 2950 6625 2950 340 | Text Label 6625 2950 0 50 ~ 0 341 | A23 342 | Wire Wire Line 343 | 6925 5350 6625 5350 344 | Text Label 6350 3050 2 50 ~ 0 345 | A20 346 | Wire Wire Line 347 | 6175 3050 6350 3050 348 | Text Label 6350 3150 2 50 ~ 0 349 | A21 350 | Text Label 6350 3250 2 50 ~ 0 351 | A22 352 | Text Label 6350 3350 2 50 ~ 0 353 | A23 354 | Wire Wire Line 355 | 6175 3150 6350 3150 356 | Wire Wire Line 357 | 6175 3250 6350 3250 358 | Wire Wire Line 359 | 6175 3350 6350 3350 360 | $Comp 361 | L 74xx:74LS139 U1 362 | U 3 1 5EE38B6B 363 | P 1575 10500 364 | F 0 "U1" H 1805 10546 50 0000 L CNN 365 | F 1 "74HC139" H 1800 10475 50 0000 L CNN 366 | F 2 "Package_DIP:DIP-16_W7.62mm_Socket" H 1575 10500 50 0001 C CNN 367 | F 3 "http://www.ti.com/lit/gpn/sn74LS139" H 1575 10500 50 0001 C CNN 368 | 3 1575 10500 369 | 1 0 0 -1 370 | $EndComp 371 | Text Label 3925 6175 2 50 ~ 0 372 | ~RDU 373 | Wire Wire Line 374 | 3725 6175 3925 6175 375 | Text Label 3925 6075 2 50 ~ 0 376 | ~WRU 377 | Wire Wire Line 378 | 3725 6075 3925 6075 379 | Text Label 2525 6175 0 50 ~ 0 380 | R,~W 381 | NoConn ~ 3725 6375 382 | NoConn ~ 3725 6275 383 | Text Label 2525 6075 0 50 ~ 0 384 | ~AS 385 | Wire Wire Line 386 | 2725 6075 2525 6075 387 | Wire Wire Line 388 | 2725 6175 2525 6175 389 | Text Label 2525 6375 0 50 ~ 0 390 | ~UDS 391 | Wire Wire Line 392 | 2725 6375 2525 6375 393 | $Comp 394 | L 74xx:74LS139 U1 395 | U 2 1 5EE32FF1 396 | P 3225 6175 397 | F 0 "U1" H 3225 6500 50 0000 C CNN 398 | F 1 "74HC139" H 3225 6425 50 0000 C CNN 399 | F 2 "Package_DIP:DIP-16_W7.62mm_Socket" H 3225 6175 50 0001 C CNN 400 | F 3 "http://www.ti.com/lit/gpn/sn74LS139" H 3225 6175 50 0001 C CNN 401 | 2 3225 6175 402 | 1 0 0 -1 403 | $EndComp 404 | Text Label 2400 6175 2 50 ~ 0 405 | ~RDL 406 | Wire Wire Line 407 | 2200 6175 2400 6175 408 | Text Label 2400 6075 2 50 ~ 0 409 | ~WRL 410 | Wire Wire Line 411 | 2200 6075 2400 6075 412 | Text Label 1000 6175 0 50 ~ 0 413 | R,~W 414 | NoConn ~ 2200 6375 415 | NoConn ~ 2200 6275 416 | Text Label 1000 6075 0 50 ~ 0 417 | ~AS 418 | Wire Wire Line 419 | 1200 6075 1000 6075 420 | Wire Wire Line 421 | 1200 6175 1000 6175 422 | Text Label 1000 6375 0 50 ~ 0 423 | ~LDS 424 | Wire Wire Line 425 | 1200 6375 1000 6375 426 | $Comp 427 | L 74xx:74LS139 U1 428 | U 1 1 5EDFA3C0 429 | P 1700 6175 430 | F 0 "U1" H 1700 6500 50 0000 C CNN 431 | F 1 "74HC139" H 1700 6425 50 0000 C CNN 432 | F 2 "Package_DIP:DIP-16_W7.62mm_Socket" H 1700 6175 50 0001 C CNN 433 | F 3 "http://www.ti.com/lit/gpn/sn74LS139" H 1700 6175 50 0001 C CNN 434 | 1 1700 6175 435 | 1 0 0 -1 436 | $EndComp 437 | Text Label 6625 2850 0 50 ~ 0 438 | ~RDL 439 | Wire Wire Line 440 | 6625 2750 6925 2750 441 | $Comp 442 | L power:VCC #PWR0105 443 | U 1 1 5EDC5FAE 444 | P 6625 2750 445 | F 0 "#PWR0105" H 6625 2600 50 0001 C CNN 446 | F 1 "VCC" H 6625 2900 50 0000 C CNN 447 | F 2 "" H 6625 2750 50 0001 C CNN 448 | F 3 "" H 6625 2750 50 0001 C CNN 449 | 1 6625 2750 450 | 1 0 0 -1 451 | $EndComp 452 | Wire Wire Line 453 | 6925 2850 6625 2850 454 | Text Label 6625 5250 0 50 ~ 0 455 | ~RDU 456 | Wire Wire Line 457 | 6625 5150 6925 5150 458 | $Comp 459 | L power:VCC #PWR0106 460 | U 1 1 5EDC2312 461 | P 6625 5150 462 | F 0 "#PWR0106" H 6625 5000 50 0001 C CNN 463 | F 1 "VCC" H 6625 5300 50 0000 C CNN 464 | F 2 "" H 6625 5150 50 0001 C CNN 465 | F 3 "" H 6625 5150 50 0001 C CNN 466 | 1 6625 5150 467 | 1 0 0 -1 468 | $EndComp 469 | Wire Wire Line 470 | 6925 5250 6625 5250 471 | Text Label 6350 5550 2 50 ~ 0 472 | R,~W 473 | Text Label 6350 5450 2 50 ~ 0 474 | ~LDS 475 | Text Label 6350 5350 2 50 ~ 0 476 | ~UDS 477 | Text Label 6350 5250 2 50 ~ 0 478 | ~AS 479 | Wire Wire Line 480 | 6175 5550 6350 5550 481 | Wire Wire Line 482 | 6175 5450 6350 5450 483 | Wire Wire Line 484 | 6175 5350 6350 5350 485 | Wire Wire Line 486 | 6175 5250 6350 5250 487 | Text Label 6350 5050 2 50 ~ 0 488 | D15 489 | Text Label 6350 4950 2 50 ~ 0 490 | D14 491 | Text Label 6350 4850 2 50 ~ 0 492 | D13 493 | Text Label 6350 4750 2 50 ~ 0 494 | D12 495 | Text Label 6350 4650 2 50 ~ 0 496 | D11 497 | Text Label 6350 4550 2 50 ~ 0 498 | D10 499 | Text Label 6350 4450 2 50 ~ 0 500 | D9 501 | Text Label 6350 4350 2 50 ~ 0 502 | D8 503 | Text Label 6350 4250 2 50 ~ 0 504 | D7 505 | Text Label 6350 4150 2 50 ~ 0 506 | D6 507 | Text Label 6350 4050 2 50 ~ 0 508 | D5 509 | Text Label 6350 3950 2 50 ~ 0 510 | D4 511 | Text Label 6350 3850 2 50 ~ 0 512 | D3 513 | Text Label 6350 3750 2 50 ~ 0 514 | D2 515 | Text Label 6350 3650 2 50 ~ 0 516 | D1 517 | Text Label 6350 3550 2 50 ~ 0 518 | D0 519 | Wire Wire Line 520 | 7175 3350 7325 3350 521 | $Comp 522 | L power:VCC #PWR0107 523 | U 1 1 5ED9D84B 524 | P 7175 3350 525 | F 0 "#PWR0107" H 7175 3200 50 0001 C CNN 526 | F 1 "VCC" H 7175 3500 50 0000 C CNN 527 | F 2 "" H 7175 3350 50 0001 C CNN 528 | F 3 "" H 7175 3350 50 0001 C CNN 529 | 1 7175 3350 530 | 1 0 0 -1 531 | $EndComp 532 | $Comp 533 | L power:VCC #PWR0108 534 | U 1 1 5ED9D29A 535 | P 7325 950 536 | F 0 "#PWR0108" H 7325 800 50 0001 C CNN 537 | F 1 "VCC" H 7325 1100 50 0000 C CNN 538 | F 2 "" H 7325 950 50 0001 C CNN 539 | F 3 "" H 7325 950 50 0001 C CNN 540 | 1 7325 950 541 | 1 0 0 -1 542 | $EndComp 543 | Wire Wire Line 544 | 7325 3150 7425 3150 545 | $Comp 546 | L power:GND #PWR0109 547 | U 1 1 5ED9A5AB 548 | P 7425 3150 549 | F 0 "#PWR0109" H 7425 2900 50 0001 C CNN 550 | F 1 "GND" H 7425 3000 50 0000 C CNN 551 | F 2 "" H 7425 3150 50 0001 C CNN 552 | F 3 "" H 7425 3150 50 0001 C CNN 553 | 1 7425 3150 554 | 1 0 0 -1 555 | $EndComp 556 | $Comp 557 | L power:GND #PWR0110 558 | U 1 1 5ED999E0 559 | P 7325 5550 560 | F 0 "#PWR0110" H 7325 5300 50 0001 C CNN 561 | F 1 "GND" H 7325 5400 50 0000 C CNN 562 | F 2 "" H 7325 5550 50 0001 C CNN 563 | F 3 "" H 7325 5550 50 0001 C CNN 564 | 1 7325 5550 565 | 1 0 0 -1 566 | $EndComp 567 | Text Label 7900 4250 2 50 ~ 0 568 | D15 569 | Text Label 7900 4150 2 50 ~ 0 570 | D14 571 | Text Label 7900 4050 2 50 ~ 0 572 | D13 573 | Text Label 7900 3950 2 50 ~ 0 574 | D12 575 | Text Label 7900 3850 2 50 ~ 0 576 | D11 577 | Text Label 7900 3750 2 50 ~ 0 578 | D10 579 | Text Label 7900 3650 2 50 ~ 0 580 | D9 581 | Text Label 7900 3550 2 50 ~ 0 582 | D8 583 | Text Label 7900 1850 2 50 ~ 0 584 | D7 585 | Text Label 7900 1750 2 50 ~ 0 586 | D6 587 | Text Label 7900 1650 2 50 ~ 0 588 | D5 589 | Text Label 7900 1550 2 50 ~ 0 590 | D4 591 | Text Label 7900 1450 2 50 ~ 0 592 | D3 593 | Text Label 7900 1350 2 50 ~ 0 594 | D2 595 | Text Label 7900 1250 2 50 ~ 0 596 | D1 597 | Text Label 7900 1150 2 50 ~ 0 598 | D0 599 | Text Label 6750 4950 0 50 ~ 0 600 | A15 601 | Text Label 6750 4850 0 50 ~ 0 602 | A14 603 | Text Label 6750 4750 0 50 ~ 0 604 | A13 605 | Text Label 6750 4650 0 50 ~ 0 606 | A12 607 | Text Label 6750 4550 0 50 ~ 0 608 | A11 609 | Text Label 6750 4450 0 50 ~ 0 610 | A10 611 | Text Label 6750 4350 0 50 ~ 0 612 | A9 613 | Text Label 6750 4250 0 50 ~ 0 614 | A8 615 | Text Label 6750 4150 0 50 ~ 0 616 | A7 617 | Text Label 6750 4050 0 50 ~ 0 618 | A6 619 | Text Label 6750 3950 0 50 ~ 0 620 | A5 621 | Text Label 6750 3850 0 50 ~ 0 622 | A4 623 | Text Label 6750 3750 0 50 ~ 0 624 | A3 625 | Text Label 6750 3650 0 50 ~ 0 626 | A2 627 | Text Label 6750 3550 0 50 ~ 0 628 | A1 629 | Wire Wire Line 630 | 6925 4950 6750 4950 631 | Wire Wire Line 632 | 6925 4850 6750 4850 633 | Wire Wire Line 634 | 6925 4750 6750 4750 635 | Wire Wire Line 636 | 6925 4650 6750 4650 637 | Wire Wire Line 638 | 6925 4550 6750 4550 639 | Wire Wire Line 640 | 6925 4450 6750 4450 641 | Wire Wire Line 642 | 6925 4350 6750 4350 643 | Wire Wire Line 644 | 6925 4250 6750 4250 645 | Wire Wire Line 646 | 6925 4150 6750 4150 647 | Wire Wire Line 648 | 6925 4050 6750 4050 649 | Wire Wire Line 650 | 6925 3950 6750 3950 651 | Wire Wire Line 652 | 6925 3850 6750 3850 653 | Wire Wire Line 654 | 6925 3750 6750 3750 655 | Wire Wire Line 656 | 6925 3650 6750 3650 657 | Wire Wire Line 658 | 6925 3550 6750 3550 659 | Wire Wire Line 660 | 6175 5050 6350 5050 661 | Wire Wire Line 662 | 6175 4950 6350 4950 663 | Wire Wire Line 664 | 6175 4850 6350 4850 665 | Wire Wire Line 666 | 6175 4750 6350 4750 667 | Wire Wire Line 668 | 6175 4650 6350 4650 669 | Wire Wire Line 670 | 6175 4550 6350 4550 671 | Wire Wire Line 672 | 6175 4450 6350 4450 673 | Wire Wire Line 674 | 6175 4350 6350 4350 675 | Wire Wire Line 676 | 6175 4250 6350 4250 677 | Wire Wire Line 678 | 6175 4150 6350 4150 679 | Wire Wire Line 680 | 6175 4050 6350 4050 681 | Wire Wire Line 682 | 6175 3950 6350 3950 683 | Wire Wire Line 684 | 7725 4250 7900 4250 685 | Wire Wire Line 686 | 7725 4150 7900 4150 687 | Wire Wire Line 688 | 7725 4050 7900 4050 689 | Wire Wire Line 690 | 7725 3950 7900 3950 691 | Wire Wire Line 692 | 7725 3850 7900 3850 693 | Wire Wire Line 694 | 7725 3750 7900 3750 695 | Wire Wire Line 696 | 7725 3650 7900 3650 697 | Wire Wire Line 698 | 7725 3550 7900 3550 699 | $Comp 700 | L Memory_EEPROM:28C256 U7 701 | U 1 1 5ED5DF46 702 | P 7325 4450 703 | F 0 "U7" H 7450 3975 50 0000 C CNN 704 | F 1 "28C256" H 7450 3875 50 0000 C CNN 705 | F 2 "Package_DIP:DIP-28_W15.24mm_Socket" H 7325 4450 50 0001 C CNN 706 | F 3 "http://ww1.microchip.com/downloads/en/DeviceDoc/doc0006.pdf" H 7325 4450 50 0001 C CNN 707 | 1 7325 4450 708 | 1 0 0 -1 709 | $EndComp 710 | Wire Wire Line 711 | 7725 1850 7900 1850 712 | Wire Wire Line 713 | 7725 1750 7900 1750 714 | Wire Wire Line 715 | 7725 1650 7900 1650 716 | Wire Wire Line 717 | 7725 1550 7900 1550 718 | Wire Wire Line 719 | 7725 1450 7900 1450 720 | Wire Wire Line 721 | 7725 1350 7900 1350 722 | Wire Wire Line 723 | 7725 1250 7900 1250 724 | Wire Wire Line 725 | 7725 1150 7900 1150 726 | Wire Wire Line 727 | 6175 3850 6350 3850 728 | Wire Wire Line 729 | 6175 3750 6350 3750 730 | Wire Wire Line 731 | 6175 3650 6350 3650 732 | Wire Wire Line 733 | 6175 3550 6350 3550 734 | Text Label 6175 2550 0 50 ~ 0 735 | A15 736 | Text Label 6175 2450 0 50 ~ 0 737 | A14 738 | Text Label 6175 2350 0 50 ~ 0 739 | A13 740 | Text Label 6175 2250 0 50 ~ 0 741 | A12 742 | Text Label 6175 2150 0 50 ~ 0 743 | A11 744 | Text Label 6175 2050 0 50 ~ 0 745 | A10 746 | Text Label 6175 1950 0 50 ~ 0 747 | A9 748 | Text Label 6175 1850 0 50 ~ 0 749 | A8 750 | Text Label 6175 1750 0 50 ~ 0 751 | A7 752 | Text Label 6175 1650 0 50 ~ 0 753 | A6 754 | Text Label 6175 1550 0 50 ~ 0 755 | A5 756 | Text Label 6175 1450 0 50 ~ 0 757 | A4 758 | Text Label 6175 1350 0 50 ~ 0 759 | A3 760 | Text Label 6175 1250 0 50 ~ 0 761 | A2 762 | Text Label 6175 1150 0 50 ~ 0 763 | A1 764 | Wire Wire Line 765 | 6925 2550 6175 2550 766 | Wire Wire Line 767 | 6175 2450 6925 2450 768 | Wire Wire Line 769 | 6925 2350 6175 2350 770 | Wire Wire Line 771 | 6175 2250 6925 2250 772 | Wire Wire Line 773 | 6925 2150 6175 2150 774 | Wire Wire Line 775 | 6175 2050 6925 2050 776 | Wire Wire Line 777 | 6175 1950 6925 1950 778 | Wire Wire Line 779 | 6925 1850 6175 1850 780 | Wire Wire Line 781 | 6175 1750 6925 1750 782 | Wire Wire Line 783 | 6925 1650 6175 1650 784 | Wire Wire Line 785 | 6175 1550 6925 1550 786 | Wire Wire Line 787 | 6925 1450 6175 1450 788 | Wire Wire Line 789 | 6175 1350 6925 1350 790 | Wire Wire Line 791 | 6175 1250 6925 1250 792 | Wire Wire Line 793 | 6175 1150 6925 1150 794 | $Comp 795 | L Memory_EEPROM:28C256 U5 796 | U 1 1 5ED45B8E 797 | P 7325 2050 798 | F 0 "U5" H 7450 1575 50 0000 C CNN 799 | F 1 "28C256" H 7450 1475 50 0000 C CNN 800 | F 2 "Package_DIP:DIP-28_W15.24mm_Socket" H 7325 2050 50 0001 C CNN 801 | F 3 "http://ww1.microchip.com/downloads/en/DeviceDoc/doc0006.pdf" H 7325 2050 50 0001 C CNN 802 | 1 7325 2050 803 | 1 0 0 -1 804 | $EndComp 805 | NoConn ~ 4175 2350 806 | NoConn ~ 4175 2450 807 | NoConn ~ 4175 2550 808 | NoConn ~ 4175 2950 809 | NoConn ~ 4175 2850 810 | NoConn ~ 4175 1950 811 | Connection ~ 3950 1850 812 | Connection ~ 3950 1650 813 | Wire Wire Line 814 | 3950 1850 3950 1650 815 | Wire Wire Line 816 | 4175 1550 3950 1550 817 | Wire Wire Line 818 | 4025 1450 4175 1450 819 | Wire Wire Line 820 | 3950 1650 3950 1550 821 | Wire Wire Line 822 | 4175 1650 3950 1650 823 | $Comp 824 | L power:VCC #PWR0111 825 | U 1 1 5ED48274 826 | P 4175 3950 827 | F 0 "#PWR0111" H 4175 3800 50 0001 C CNN 828 | F 1 "VCC" H 4175 4100 50 0000 C CNN 829 | F 2 "" H 4175 3950 50 0001 C CNN 830 | F 3 "" H 4175 3950 50 0001 C CNN 831 | 1 4175 3950 832 | 1 0 0 -1 833 | $EndComp 834 | Wire Wire Line 835 | 4175 3050 4000 3050 836 | Wire Wire Line 837 | 3950 2050 3950 1850 838 | Wire Wire Line 839 | 4175 2050 3950 2050 840 | Wire Wire Line 841 | 4175 1850 3950 1850 842 | $Comp 843 | L power:VCC #PWR0112 844 | U 1 1 5ED468BA 845 | P 3950 1375 846 | F 0 "#PWR0112" H 3950 1225 50 0001 C CNN 847 | F 1 "VCC" H 3950 1525 50 0000 C CNN 848 | F 2 "" H 3950 1375 50 0001 C CNN 849 | F 3 "" H 3950 1375 50 0001 C CNN 850 | 1 3950 1375 851 | 1 0 0 -1 852 | $EndComp 853 | Wire Wire Line 854 | 5225 950 5175 950 855 | Connection ~ 5225 950 856 | $Comp 857 | L power:VCC #PWR0113 858 | U 1 1 5ED460A7 859 | P 5225 950 860 | F 0 "#PWR0113" H 5225 800 50 0001 C CNN 861 | F 1 "VCC" H 5225 1100 50 0000 C CNN 862 | F 2 "" H 5225 950 50 0001 C CNN 863 | F 3 "" H 5225 950 50 0001 C CNN 864 | 1 5225 950 865 | 1 0 0 -1 866 | $EndComp 867 | Wire Wire Line 868 | 5275 950 5225 950 869 | $Comp 870 | L power:GND #PWR0114 871 | U 1 1 5ED451FF 872 | P 4175 4150 873 | F 0 "#PWR0114" H 4175 3900 50 0001 C CNN 874 | F 1 "GND" H 4175 4000 50 0000 C CNN 875 | F 2 "" H 4175 4150 50 0001 C CNN 876 | F 3 "" H 4175 4150 50 0001 C CNN 877 | 1 4175 4150 878 | 1 0 0 -1 879 | $EndComp 880 | Connection ~ 5225 5750 881 | Wire Wire Line 882 | 5275 5750 5225 5750 883 | Wire Wire Line 884 | 5175 5750 5225 5750 885 | $Comp 886 | L power:GND #PWR0115 887 | U 1 1 5ED441C4 888 | P 5225 5750 889 | F 0 "#PWR0115" H 5225 5500 50 0001 C CNN 890 | F 1 "GND" H 5225 5600 50 0000 C CNN 891 | F 2 "" H 5225 5750 50 0001 C CNN 892 | F 3 "" H 5225 5750 50 0001 C CNN 893 | 1 5225 5750 894 | 1 0 0 -1 895 | $EndComp 896 | $Comp 897 | L CPU_NXP_68000:68000D U3 898 | U 1 1 5ED415C8 899 | P 5175 3350 900 | F 0 "U3" H 5175 3375 50 0000 C CNN 901 | F 1 "TMP68HC000P-12" H 5175 3250 50 0000 C CNN 902 | F 2 "Package_DIP:DIP-64_W22.86mm_Socket" H 5175 3350 50 0001 C CNN 903 | F 3 "https://www.nxp.com/docs/en/reference-manual/MC68000UM.pdf" H 5175 3350 50 0001 C CNN 904 | 1 5175 3350 905 | 1 0 0 -1 906 | $EndComp 907 | $Comp 908 | L 74xx:74HC14 U2 909 | U 3 1 5F039004 910 | P 2075 4650 911 | F 0 "U2" H 2150 4875 50 0000 C CNN 912 | F 1 "74HC14" H 2150 4800 50 0000 C CNN 913 | F 2 "Package_DIP:DIP-14_W7.62mm_Socket" H 2075 4650 50 0001 C CNN 914 | F 3 "http://www.ti.com/lit/gpn/sn74HC14" H 2075 4650 50 0001 C CNN 915 | 3 2075 4650 916 | 1 0 0 -1 917 | $EndComp 918 | $Comp 919 | L 74xx:74HC14 U2 920 | U 2 1 5F069AD6 921 | P 2675 4650 922 | F 0 "U2" H 2750 4875 50 0000 C CNN 923 | F 1 "74HC14" H 2750 4800 50 0000 C CNN 924 | F 2 "Package_DIP:DIP-14_W7.62mm_Socket" H 2675 4650 50 0001 C CNN 925 | F 3 "http://www.ti.com/lit/gpn/sn74HC14" H 2675 4650 50 0001 C CNN 926 | 2 2675 4650 927 | 1 0 0 -1 928 | $EndComp 929 | $Comp 930 | L Device:R R2 931 | U 1 1 5F0CA967 932 | P 3275 4500 933 | F 0 "R2" H 3325 4500 50 0000 L CNN 934 | F 1 "10k" V 3275 4425 50 0000 L CNN 935 | F 2 "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal" V 3205 4500 50 0001 C CNN 936 | F 3 "~" H 3275 4500 50 0001 C CNN 937 | 1 3275 4500 938 | 1 0 0 -1 939 | $EndComp 940 | $Comp 941 | L power:VCC #PWR0116 942 | U 1 1 5F0F8C05 943 | P 3275 4350 944 | F 0 "#PWR0116" H 3275 4200 50 0001 C CNN 945 | F 1 "VCC" H 3275 4500 50 0000 C CNN 946 | F 2 "" H 3275 4350 50 0001 C CNN 947 | F 3 "" H 3275 4350 50 0001 C CNN 948 | 1 3275 4350 949 | 1 0 0 -1 950 | $EndComp 951 | $Comp 952 | L Device:D_Schottky D1 953 | U 1 1 5F110B74 954 | P 3125 4650 955 | F 0 "D1" H 3125 4550 50 0000 C CNN 956 | F 1 "1N5817" H 3125 4750 50 0000 C CNN 957 | F 2 "Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal" H 3125 4650 50 0001 C CNN 958 | F 3 "~" H 3125 4650 50 0001 C CNN 959 | 1 3125 4650 960 | 1 0 0 1 961 | $EndComp 962 | Connection ~ 3275 4650 963 | Wire Wire Line 964 | 3275 4650 4175 4650 965 | $Comp 966 | L Device:R R3 967 | U 1 1 5F26212E 968 | P 1625 4650 969 | F 0 "R3" V 1525 4600 50 0000 L CNN 970 | F 1 "1k" V 1625 4600 50 0000 L CNN 971 | F 2 "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal" V 1555 4650 50 0001 C CNN 972 | F 3 "~" H 1625 4650 50 0001 C CNN 973 | 1 1625 4650 974 | 0 1 1 0 975 | $EndComp 976 | $Comp 977 | L Device:CP1 C11 978 | U 1 1 5F27AF00 979 | P 1775 4950 980 | F 0 "C11" H 1890 4996 50 0000 L CNN 981 | F 1 "10uF" H 1890 4905 50 0000 L CNN 982 | F 2 "Capacitor_THT:CP_Radial_D5.0mm_P2.50mm" H 1775 4950 50 0001 C CNN 983 | F 3 "~" H 1775 4950 50 0001 C CNN 984 | 1 1775 4950 985 | 1 0 0 -1 986 | $EndComp 987 | Wire Wire Line 988 | 1775 4800 1775 4650 989 | Connection ~ 1775 4650 990 | $Comp 991 | L power:GND #PWR0118 992 | U 1 1 5F2A9ECC 993 | P 1775 5100 994 | F 0 "#PWR0118" H 1775 4850 50 0001 C CNN 995 | F 1 "GND" H 1775 4950 50 0000 C CNN 996 | F 2 "" H 1775 5100 50 0001 C CNN 997 | F 3 "" H 1775 5100 50 0001 C CNN 998 | 1 1775 5100 999 | 1 0 0 -1 1000 | $EndComp 1001 | $Comp 1002 | L Switch:SW_Push SW1 1003 | U 1 1 5F2AAF02 1004 | P 1275 4650 1005 | F 0 "SW1" H 1275 4575 50 0000 C CNN 1006 | F 1 "RESET" H 1275 4500 50 0000 C CNN 1007 | F 2 "Button_Switch_THT:SW_PUSH_6mm" H 1275 4850 50 0001 C CNN 1008 | F 3 "~" H 1275 4850 50 0001 C CNN 1009 | 1 1275 4650 1010 | 1 0 0 -1 1011 | $EndComp 1012 | $Comp 1013 | L 74xx:74HC14 U2 1014 | U 1 1 5F2C3CEF 1015 | P 3575 5000 1016 | F 0 "U2" H 3650 5225 50 0000 C CNN 1017 | F 1 "74HC14" H 3650 5150 50 0000 C CNN 1018 | F 2 "Package_DIP:DIP-14_W7.62mm_Socket" H 3575 5000 50 0001 C CNN 1019 | F 3 "http://www.ti.com/lit/gpn/sn74HC14" H 3575 5000 50 0001 C CNN 1020 | 1 3575 5000 1021 | 1 0 0 -1 1022 | $EndComp 1023 | Wire Wire Line 1024 | 3275 4650 3275 5000 1025 | Wire Wire Line 1026 | 3875 5000 4150 5000 1027 | Wire Wire Line 1028 | 3275 5000 3275 5200 1029 | Wire Wire Line 1030 | 3275 5200 4150 5200 1031 | Connection ~ 3275 5000 1032 | Text Label 4150 5000 2 50 ~ 0 1033 | RESET 1034 | Text Label 4150 5200 2 50 ~ 0 1035 | ~RESET 1036 | $Comp 1037 | L power:GND #PWR0120 1038 | U 1 1 5EDC8257 1039 | P 6800 9400 1040 | F 0 "#PWR0120" H 6800 9150 50 0001 C CNN 1041 | F 1 "GND" H 6800 9250 50 0000 C CNN 1042 | F 2 "" H 6800 9400 50 0001 C CNN 1043 | F 3 "" H 6800 9400 50 0001 C CNN 1044 | 1 6800 9400 1045 | 1 0 0 -1 1046 | $EndComp 1047 | $Comp 1048 | L power:VCC #PWR0121 1049 | U 1 1 5EDC8CC4 1050 | P 6800 6000 1051 | F 0 "#PWR0121" H 6800 5850 50 0001 C CNN 1052 | F 1 "VCC" H 6800 6150 50 0000 C CNN 1053 | F 2 "" H 6800 6000 50 0001 C CNN 1054 | F 3 "" H 6800 6000 50 0001 C CNN 1055 | 1 6800 6000 1056 | 1 0 0 -1 1057 | $EndComp 1058 | Text Label 5625 7000 0 50 ~ 0 1059 | D15 1060 | Text Label 5625 6900 0 50 ~ 0 1061 | D14 1062 | Text Label 5625 6800 0 50 ~ 0 1063 | D13 1064 | Text Label 5625 6700 0 50 ~ 0 1065 | D12 1066 | Text Label 5625 6600 0 50 ~ 0 1067 | D11 1068 | Text Label 5625 6500 0 50 ~ 0 1069 | D10 1070 | Text Label 5625 6400 0 50 ~ 0 1071 | D9 1072 | Text Label 5625 6300 0 50 ~ 0 1073 | D8 1074 | Wire Wire Line 1075 | 5800 7000 5625 7000 1076 | Wire Wire Line 1077 | 5800 6900 5625 6900 1078 | Wire Wire Line 1079 | 5800 6800 5625 6800 1080 | Wire Wire Line 1081 | 5800 6700 5625 6700 1082 | Wire Wire Line 1083 | 5800 6600 5625 6600 1084 | Wire Wire Line 1085 | 5800 6500 5625 6500 1086 | Wire Wire Line 1087 | 5800 6400 5625 6400 1088 | Wire Wire Line 1089 | 5800 6300 5625 6300 1090 | Wire Wire Line 1091 | 5800 7200 5625 7200 1092 | Wire Wire Line 1093 | 5800 7300 5625 7300 1094 | Wire Wire Line 1095 | 5800 7400 5625 7400 1096 | Text Label 5625 7200 0 50 ~ 0 1097 | A1 1098 | Text Label 5625 7300 0 50 ~ 0 1099 | A2 1100 | Text Label 5625 7400 0 50 ~ 0 1101 | A3 1102 | Wire Wire Line 1103 | 5800 8500 5575 8500 1104 | Wire Wire Line 1105 | 5800 8800 5575 8800 1106 | Text Label 5575 8500 0 50 ~ 0 1107 | ~WRU 1108 | Text Label 5575 8800 0 50 ~ 0 1109 | ~RDU 1110 | Wire Wire Line 1111 | 5800 9100 5500 9100 1112 | Text Label 5500 9100 0 50 ~ 0 1113 | RESET 1114 | Wire Wire Line 1115 | 5800 8900 5375 8900 1116 | Wire Wire Line 1117 | 5375 8900 5375 9400 1118 | $Comp 1119 | L power:GND #PWR0122 1120 | U 1 1 5EE967B8 1121 | P 5375 9400 1122 | F 0 "#PWR0122" H 5375 9150 50 0001 C CNN 1123 | F 1 "GND" H 5375 9250 50 0000 C CNN 1124 | F 2 "" H 5375 9400 50 0001 C CNN 1125 | F 3 "" H 5375 9400 50 0001 C CNN 1126 | 1 5375 9400 1127 | 1 0 0 -1 1128 | $EndComp 1129 | Wire Wire Line 1130 | 5800 8700 5375 8700 1131 | Wire Wire Line 1132 | 5375 8700 5375 8900 1133 | Connection ~ 5375 8900 1134 | Wire Wire Line 1135 | 5800 8600 5375 8600 1136 | Wire Wire Line 1137 | 5375 8600 5375 8700 1138 | Connection ~ 5375 8700 1139 | Wire Wire Line 1140 | 7800 8900 7800 9100 1141 | NoConn ~ 7800 8300 1142 | NoConn ~ 7800 8400 1143 | NoConn ~ 7800 8500 1144 | $Comp 1145 | L power:VCC #PWR0123 1146 | U 1 1 5EFD41F6 1147 | P 7800 6350 1148 | F 0 "#PWR0123" H 7800 6200 50 0001 C CNN 1149 | F 1 "VCC" H 7800 6500 50 0000 C CNN 1150 | F 2 "" H 7800 6350 50 0001 C CNN 1151 | F 3 "" H 7800 6350 50 0001 C CNN 1152 | 1 7800 6350 1153 | 1 0 0 -1 1154 | $EndComp 1155 | Wire Wire Line 1156 | 5800 7700 5450 7700 1157 | Wire Wire Line 1158 | 5800 7500 5450 7500 1159 | Wire Wire Line 1160 | 5800 7600 5450 7600 1161 | Wire Wire Line 1162 | 5800 7900 5375 7900 1163 | Text Label 5375 7900 0 50 ~ 0 1164 | CPUCLK 1165 | NoConn ~ 5800 8200 1166 | Wire Wire Line 1167 | 9650 4525 9825 4525 1168 | Text Label 9825 4525 2 50 ~ 0 1169 | ~A22 1170 | Wire Wire Line 1171 | 9825 2125 9650 2125 1172 | $Comp 1173 | L power:VCC #PWR0124 1174 | U 1 1 5F14DABF 1175 | P 1575 10000 1176 | F 0 "#PWR0124" H 1575 9850 50 0001 C CNN 1177 | F 1 "VCC" H 1575 10150 50 0000 C CNN 1178 | F 2 "" H 1575 10000 50 0001 C CNN 1179 | F 3 "" H 1575 10000 50 0001 C CNN 1180 | 1 1575 10000 1181 | 1 0 0 -1 1182 | $EndComp 1183 | $Comp 1184 | L power:GND #PWR0125 1185 | U 1 1 5F14DF78 1186 | P 1575 11000 1187 | F 0 "#PWR0125" H 1575 10750 50 0001 C CNN 1188 | F 1 "GND" H 1575 10850 50 0000 C CNN 1189 | F 2 "" H 1575 11000 50 0001 C CNN 1190 | F 3 "" H 1575 11000 50 0001 C CNN 1191 | 1 1575 11000 1192 | 1 0 0 -1 1193 | $EndComp 1194 | $Comp 1195 | L Device:D_Schottky D2 1196 | U 1 1 5EF81DC4 1197 | P 3125 4025 1198 | F 0 "D2" H 3125 3925 50 0000 C CNN 1199 | F 1 "1N5817" H 3125 4125 50 0000 C CNN 1200 | F 2 "Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal" H 3125 4025 50 0001 C CNN 1201 | F 3 "~" H 3125 4025 50 0001 C CNN 1202 | 1 3125 4025 1203 | 1 0 0 1 1204 | $EndComp 1205 | $Comp 1206 | L Device:R R1 1207 | U 1 1 5EF8227A 1208 | P 3275 3875 1209 | F 0 "R1" H 3325 3875 50 0000 L CNN 1210 | F 1 "10k" V 3275 3800 50 0000 L CNN 1211 | F 2 "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal" V 3205 3875 50 0001 C CNN 1212 | F 3 "~" H 3275 3875 50 0001 C CNN 1213 | 1 3275 3875 1214 | 1 0 0 -1 1215 | $EndComp 1216 | Wire Wire Line 1217 | 2975 4025 2975 4650 1218 | Connection ~ 2975 4650 1219 | Wire Wire Line 1220 | 4175 4550 3550 4550 1221 | Wire Wire Line 1222 | 3550 4550 3550 4025 1223 | Wire Wire Line 1224 | 3550 4025 3275 4025 1225 | Connection ~ 3275 4025 1226 | $Comp 1227 | L power:VCC #PWR0126 1228 | U 1 1 5EDE5798 1229 | P 1375 1375 1230 | F 0 "#PWR0126" H 1375 1225 50 0001 C CNN 1231 | F 1 "VCC" H 1375 1525 50 0000 C CNN 1232 | F 2 "" H 1375 1375 50 0001 C CNN 1233 | F 3 "" H 1375 1375 50 0001 C CNN 1234 | 1 1375 1375 1235 | 1 0 0 -1 1236 | $EndComp 1237 | $Comp 1238 | L power:GND #PWR0127 1239 | U 1 1 5EE51221 1240 | P 1375 1975 1241 | F 0 "#PWR0127" H 1375 1725 50 0001 C CNN 1242 | F 1 "GND" H 1375 1825 50 0000 C CNN 1243 | F 2 "" H 1375 1975 50 0001 C CNN 1244 | F 3 "" H 1375 1975 50 0001 C CNN 1245 | 1 1375 1975 1246 | 1 0 0 -1 1247 | $EndComp 1248 | $Comp 1249 | L power:GND #PWR0128 1250 | U 1 1 5EE5149F 1251 | P 2225 1975 1252 | F 0 "#PWR0128" H 2225 1725 50 0001 C CNN 1253 | F 1 "GND" H 2225 1825 50 0000 C CNN 1254 | F 2 "" H 2225 1975 50 0001 C CNN 1255 | F 3 "" H 2225 1975 50 0001 C CNN 1256 | 1 2225 1975 1257 | 1 0 0 -1 1258 | $EndComp 1259 | Text Notes 1200 2275 0 50 ~ 0 1260 | Full can 1261 | Text Notes 2075 2275 0 50 ~ 0 1262 | Half can 1263 | Text Notes 1450 2375 0 50 ~ 0 1264 | Populate only one! 1265 | $Comp 1266 | L power:VCC #PWR0129 1267 | U 1 1 5EE53FDC 1268 | P 2225 1375 1269 | F 0 "#PWR0129" H 2225 1225 50 0001 C CNN 1270 | F 1 "VCC" H 2225 1525 50 0000 C CNN 1271 | F 2 "" H 2225 1375 50 0001 C CNN 1272 | F 3 "" H 2225 1375 50 0001 C CNN 1273 | 1 2225 1375 1274 | 1 0 0 -1 1275 | $EndComp 1276 | Wire Wire Line 1277 | 1675 1675 1675 1150 1278 | Wire Wire Line 1279 | 1675 1150 2575 1150 1280 | Wire Wire Line 1281 | 2525 1675 2575 1675 1282 | Wire Wire Line 1283 | 2575 1675 2575 1150 1284 | Connection ~ 2575 1150 1285 | Wire Wire Line 1286 | 2575 1150 4175 1150 1287 | Wire Notes Line 1288 | 2700 1075 950 1075 1289 | Wire Notes Line 1290 | 950 1075 950 2450 1291 | Wire Notes Line 1292 | 950 2450 2700 2450 1293 | Wire Notes Line 1294 | 2700 2450 2700 1075 1295 | Text Label 4175 1150 2 50 ~ 0 1296 | CPUCLK 1297 | $Comp 1298 | L 74xx:74HC14 U2 1299 | U 7 1 5EF251F0 1300 | P 775 10500 1301 | F 0 "U2" H 1000 10550 50 0000 L CNN 1302 | F 1 "74HC14" H 1000 10475 50 0000 L CNN 1303 | F 2 "Package_DIP:DIP-14_W7.62mm_Socket" H 775 10500 50 0001 C CNN 1304 | F 3 "http://www.ti.com/lit/gpn/sn74HC14" H 775 10500 50 0001 C CNN 1305 | 7 775 10500 1306 | 1 0 0 -1 1307 | $EndComp 1308 | $Comp 1309 | L power:GND #PWR0130 1310 | U 1 1 5EF2907A 1311 | P 775 11000 1312 | F 0 "#PWR0130" H 775 10750 50 0001 C CNN 1313 | F 1 "GND" H 775 10850 50 0000 C CNN 1314 | F 2 "" H 775 11000 50 0001 C CNN 1315 | F 3 "" H 775 11000 50 0001 C CNN 1316 | 1 775 11000 1317 | 1 0 0 -1 1318 | $EndComp 1319 | $Comp 1320 | L power:VCC #PWR0131 1321 | U 1 1 5EF2974C 1322 | P 775 10000 1323 | F 0 "#PWR0131" H 775 9850 50 0001 C CNN 1324 | F 1 "VCC" H 775 10150 50 0000 C CNN 1325 | F 2 "" H 775 10000 50 0001 C CNN 1326 | F 3 "" H 775 10000 50 0001 C CNN 1327 | 1 775 10000 1328 | 1 0 0 -1 1329 | $EndComp 1330 | $Comp 1331 | L 74xx:74HC14 U2 1332 | U 4 1 5EF2A007 1333 | P 2400 6900 1334 | F 0 "U2" H 2475 7125 50 0000 C CNN 1335 | F 1 "74HC14" H 2475 7050 50 0000 C CNN 1336 | F 2 "Package_DIP:DIP-14_W7.62mm_Socket" H 2400 6900 50 0001 C CNN 1337 | F 3 "http://www.ti.com/lit/gpn/sn74HC14" H 2400 6900 50 0001 C CNN 1338 | 4 2400 6900 1339 | 1 0 0 -1 1340 | $EndComp 1341 | Wire Wire Line 1342 | 2100 6900 1775 6900 1343 | Wire Wire Line 1344 | 2700 6900 3100 6900 1345 | Text Label 1775 6900 0 50 ~ 0 1346 | A22 1347 | Text Label 3100 6900 2 50 ~ 0 1348 | ~A22 1349 | Text Notes 575 9675 0 50 ~ 0 1350 | A23-A20\n0000\n0001\n0010\n0011\n0100\n0101\n0110\n0111\n1000\n1001\n1010\n1011\n1100\n1101\n1110\n1111 1351 | Text Label 6625 5350 0 50 ~ 0 1352 | A23 1353 | Text Label 9825 2125 2 50 ~ 0 1354 | ~A22 1355 | Text Label 5450 7600 0 50 ~ 0 1356 | A23 1357 | Text Label 5450 7700 0 50 ~ 0 1358 | A22 1359 | Text Label 5450 7500 0 50 ~ 0 1360 | A21 1361 | $Comp 1362 | L 74xx:74HC14 U2 1363 | U 5 1 5F007377 1364 | P 2400 7300 1365 | F 0 "U2" H 2475 7525 50 0000 C CNN 1366 | F 1 "74HC14" H 2475 7450 50 0000 C CNN 1367 | F 2 "Package_DIP:DIP-14_W7.62mm_Socket" H 2400 7300 50 0001 C CNN 1368 | F 3 "http://www.ti.com/lit/gpn/sn74HC14" H 2400 7300 50 0001 C CNN 1369 | 5 2400 7300 1370 | 1 0 0 -1 1371 | $EndComp 1372 | Wire Wire Line 1373 | 2100 7300 1775 7300 1374 | Wire Wire Line 1375 | 2700 7300 3100 7300 1376 | Text Label 1775 7300 0 50 ~ 0 1377 | A20 1378 | Text Label 3100 7300 2 50 ~ 0 1379 | ~A20 1380 | Text Notes 575 8225 0 50 ~ 0 1381 | ROM selected when A23=0\nRAM selected when A22=1\nUART selected when A23=1 and A22=0 and A21=1\nCFCARD selected when A20=1 1382 | Text Notes 1025 9675 0 50 ~ 0 1383 | Maps to\nROM\nROM + CFCARD (forbidden)\nROM\nROM + CFCARD (forbidden)\nROM + RAM (forbidden)\nROM + RAM + CFCARD (forbidden)\nROM + RAM (forbidden)\nROM + RAM + CFCARD (forbidden)\nNone (open bus)\nCFCARD\nUART\nUART + CFCARD (forbidden)\nRAM\nRAM + CFCARD (forbidden)\nRAM\nRAM + CFCARD (forbidden) 1384 | $Comp 1385 | L 74xx:74HC14 U2 1386 | U 6 1 5F060519 1387 | P 2400 7700 1388 | F 0 "U2" H 2475 7925 50 0000 C CNN 1389 | F 1 "74HC14" H 2475 7850 50 0000 C CNN 1390 | F 2 "Package_DIP:DIP-14_W7.62mm_Socket" H 2400 7700 50 0001 C CNN 1391 | F 3 "http://www.ti.com/lit/gpn/sn74HC14" H 2400 7700 50 0001 C CNN 1392 | 6 2400 7700 1393 | 1 0 0 -1 1394 | $EndComp 1395 | Wire Wire Line 1396 | 2100 7700 1775 7700 1397 | Wire Wire Line 1398 | 2700 7700 3100 7700 1399 | Text Label 1775 7700 0 50 ~ 0 1400 | IRQ 1401 | Text Label 4025 1450 0 50 ~ 0 1402 | ~IRQ 1403 | Wire Wire Line 1404 | 3950 1375 3950 1550 1405 | Connection ~ 3950 1550 1406 | Text Label 3100 7700 2 50 ~ 0 1407 | ~IRQ 1408 | Text Label 4000 3050 0 50 ~ 0 1409 | ~IRQ 1410 | Wire Wire Line 1411 | 5800 9000 5500 9000 1412 | Text Label 5500 9000 0 50 ~ 0 1413 | IRQ 1414 | $Comp 1415 | L power:VCC #PWR0132 1416 | U 1 1 5F158E55 1417 | P 3275 3725 1418 | F 0 "#PWR0132" H 3275 3575 50 0001 C CNN 1419 | F 1 "VCC" H 3275 3875 50 0000 C CNN 1420 | F 2 "" H 3275 3725 50 0001 C CNN 1421 | F 3 "" H 3275 3725 50 0001 C CNN 1422 | 1 3275 3725 1423 | 1 0 0 -1 1424 | $EndComp 1425 | Text Notes 4450 3250 2 50 ~ 0 1426 | ~IRQ~ invokes\nautovector 1 1427 | $Comp 1428 | L Device:LED D6 1429 | U 1 1 5EDF871B 1430 | P 3275 3400 1431 | F 0 "D6" H 3275 3225 50 0000 C CNN 1432 | F 1 "HALT" H 3275 3300 50 0000 C CNN 1433 | F 2 "LED_THT:LED_D5.0mm" H 3275 3400 50 0001 C CNN 1434 | F 3 "~" H 3275 3400 50 0001 C CNN 1435 | 1 3275 3400 1436 | -1 0 0 1 1437 | $EndComp 1438 | Wire Wire Line 1439 | 3425 3400 3550 3400 1440 | Wire Wire Line 1441 | 3550 3400 3550 4025 1442 | Connection ~ 3550 4025 1443 | $Comp 1444 | L Device:R R7 1445 | U 1 1 5EE4D131 1446 | P 2975 3400 1447 | F 0 "R7" V 2875 3350 50 0000 L CNN 1448 | F 1 "1k*" V 2975 3350 50 0000 L CNN 1449 | F 2 "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal" V 2905 3400 50 0001 C CNN 1450 | F 3 "~" H 2975 3400 50 0001 C CNN 1451 | 1 2975 3400 1452 | 0 1 1 0 1453 | $EndComp 1454 | $Comp 1455 | L power:VCC #PWR0133 1456 | U 1 1 5EE69137 1457 | P 2825 3400 1458 | F 0 "#PWR0133" H 2825 3250 50 0001 C CNN 1459 | F 1 "VCC" H 2825 3550 50 0000 C CNN 1460 | F 2 "" H 2825 3400 50 0001 C CNN 1461 | F 3 "" H 2825 3400 50 0001 C CNN 1462 | 1 2825 3400 1463 | 1 0 0 -1 1464 | $EndComp 1465 | $Comp 1466 | L Oscillator:CXO_DIP8 X2 1467 | U 1 1 5EDE34BE 1468 | P 2225 1675 1469 | F 0 "X2" H 2250 2000 50 0000 L CNN 1470 | F 1 "12MHz" H 2250 1925 50 0000 L CNN 1471 | F 2 "Oscillator:Oscillator_DIP-8" H 2675 1325 50 0001 C CNN 1472 | F 3 "http://cdn-reichelt.de/documents/datenblatt/B400/OSZI.pdf" H 2125 1675 50 0001 C CNN 1473 | 1 2225 1675 1474 | 1 0 0 -1 1475 | $EndComp 1476 | $Comp 1477 | L Oscillator:CXO_DIP14 X1 1478 | U 1 1 5EE6E4D7 1479 | P 1375 1675 1480 | F 0 "X1" H 1400 2000 50 0000 L CNN 1481 | F 1 "12MHz" H 1400 1925 50 0000 L CNN 1482 | F 2 "Oscillator:Oscillator_DIP-14" H 1825 1325 50 0001 C CNN 1483 | F 3 "http://cdn-reichelt.de/documents/datenblatt/B400/OSZI.pdf" H 1275 1675 50 0001 C CNN 1484 | 1 1375 1675 1485 | 1 0 0 -1 1486 | $EndComp 1487 | Wire Wire Line 1488 | 1925 1675 1925 2175 1489 | Wire Wire Line 1490 | 1925 2175 1075 2175 1491 | Wire Wire Line 1492 | 1075 2175 1075 1675 1493 | Text Label 4175 4550 2 50 ~ 0 1494 | ~HALT 1495 | Wire Wire Line 1496 | 11600 1050 11975 1050 1497 | Wire Wire Line 1498 | 11600 1150 11825 1150 1499 | Wire Wire Line 1500 | 11600 1250 11825 1250 1501 | Wire Wire Line 1502 | 11600 1350 11825 1350 1503 | Wire Wire Line 1504 | 11600 1450 11825 1450 1505 | Wire Wire Line 1506 | 11600 1550 11825 1550 1507 | Wire Wire Line 1508 | 11600 1650 11825 1650 1509 | Wire Wire Line 1510 | 11600 1750 11825 1750 1511 | Wire Wire Line 1512 | 11600 1850 11825 1850 1513 | Wire Wire Line 1514 | 11600 2050 11975 2050 1515 | Wire Wire Line 1516 | 11600 2150 11975 2150 1517 | Wire Wire Line 1518 | 11600 2250 11975 2250 1519 | Wire Wire Line 1520 | 11600 2450 11975 2450 1521 | Wire Wire Line 1522 | 11600 2750 11775 2750 1523 | Wire Wire Line 1524 | 11600 2850 11875 2850 1525 | Wire Wire Line 1526 | 11600 2950 11975 2950 1527 | Text Label 10875 1050 0 50 ~ 0 1528 | ~RESET 1529 | $Comp 1530 | L power:GND #PWR0134 1531 | U 1 1 5F39C743 1532 | P 11975 1050 1533 | F 0 "#PWR0134" H 11975 800 50 0001 C CNN 1534 | F 1 "GND" H 11980 877 50 0000 C CNN 1535 | F 2 "" H 11975 1050 50 0001 C CNN 1536 | F 3 "" H 11975 1050 50 0001 C CNN 1537 | 1 11975 1050 1538 | 1 0 0 -1 1539 | $EndComp 1540 | Text Label 10875 1150 0 50 ~ 0 1541 | D7 1542 | Text Label 10875 1250 0 50 ~ 0 1543 | D6 1544 | Text Label 10875 1350 0 50 ~ 0 1545 | D5 1546 | Text Label 10875 1450 0 50 ~ 0 1547 | D4 1548 | Text Label 10875 1550 0 50 ~ 0 1549 | D3 1550 | Text Label 10875 1650 0 50 ~ 0 1551 | D2 1552 | Text Label 10875 1750 0 50 ~ 0 1553 | D1 1554 | Text Label 10875 1850 0 50 ~ 0 1555 | D0 1556 | Text Label 11825 1150 2 50 ~ 0 1557 | D8 1558 | Text Label 11825 1250 2 50 ~ 0 1559 | D9 1560 | Text Label 11825 1350 2 50 ~ 0 1561 | D10 1562 | Text Label 11825 1450 2 50 ~ 0 1563 | D11 1564 | Text Label 11825 1550 2 50 ~ 0 1565 | D12 1566 | Text Label 11825 1650 2 50 ~ 0 1567 | D13 1568 | Text Label 11825 1750 2 50 ~ 0 1569 | D14 1570 | Text Label 11825 1850 2 50 ~ 0 1571 | D15 1572 | $Comp 1573 | L power:GND #PWR0135 1574 | U 1 1 5F5235B9 1575 | P 10775 1950 1576 | F 0 "#PWR0135" H 10775 1700 50 0001 C CNN 1577 | F 1 "GND" H 10775 1800 50 0000 C CNN 1578 | F 2 "" H 10775 1950 50 0001 C CNN 1579 | F 3 "" H 10775 1950 50 0001 C CNN 1580 | 1 10775 1950 1581 | 1 0 0 -1 1582 | $EndComp 1583 | NoConn ~ 11600 1950 1584 | $Comp 1585 | L power:GND #PWR0136 1586 | U 1 1 5F74EC7B 1587 | P 11975 2950 1588 | F 0 "#PWR0136" H 11975 2700 50 0001 C CNN 1589 | F 1 "GND" H 11975 2800 50 0000 C CNN 1590 | F 2 "" H 11975 2950 50 0001 C CNN 1591 | F 3 "" H 11975 2950 50 0001 C CNN 1592 | 1 11975 2950 1593 | 1 0 0 -1 1594 | $EndComp 1595 | Wire Wire Line 1596 | 11975 2050 11975 2150 1597 | Wire Wire Line 1598 | 11975 2250 11975 2150 1599 | Connection ~ 11975 2150 1600 | Wire Wire Line 1601 | 11975 2250 11975 2450 1602 | Connection ~ 11975 2250 1603 | Wire Wire Line 1604 | 11975 2450 11975 2950 1605 | Connection ~ 11975 2450 1606 | Connection ~ 11975 2950 1607 | Text Label 11775 2750 2 50 ~ 0 1608 | A3 1609 | $Comp 1610 | L power:GND #PWR0137 1611 | U 1 1 5F95B1DB 1612 | P 11100 3150 1613 | F 0 "#PWR0137" H 11100 2900 50 0001 C CNN 1614 | F 1 "GND" H 11100 3000 50 0000 C CNN 1615 | F 2 "" H 11100 3150 50 0001 C CNN 1616 | F 3 "" H 11100 3150 50 0001 C CNN 1617 | 1 11100 3150 1618 | 1 0 0 -1 1619 | $EndComp 1620 | Text Label 10875 2750 0 50 ~ 0 1621 | A1 1622 | Text Label 10875 2650 0 50 ~ 0 1623 | A2 1624 | NoConn ~ 11600 2550 1625 | Text Label 10875 2250 0 50 ~ 0 1626 | ~RDL 1627 | Text Label 10875 2150 0 50 ~ 0 1628 | ~WRL 1629 | NoConn ~ 11600 2650 1630 | NoConn ~ 11600 2350 1631 | NoConn ~ 11100 2450 1632 | NoConn ~ 11100 2350 1633 | Text Label 10875 2550 0 50 ~ 0 1634 | CFIRQ 1635 | Text Label 10875 2950 0 50 ~ 0 1636 | ~CFLED 1637 | NoConn ~ 11600 3150 1638 | Text Label 10875 2850 0 50 ~ 0 1639 | ~A20 1640 | $Comp 1641 | L power:VCC #PWR0139 1642 | U 1 1 5FEB8BC3 1643 | P 11875 2850 1644 | F 0 "#PWR0139" H 11875 2700 50 0001 C CNN 1645 | F 1 "VCC" H 11875 3000 50 0000 C CNN 1646 | F 2 "" H 11875 2850 50 0001 C CNN 1647 | F 3 "" H 11875 2850 50 0001 C CNN 1648 | 1 11875 2850 1649 | 1 0 0 -1 1650 | $EndComp 1651 | Wire Wire Line 1652 | 11875 3050 11875 2850 1653 | Wire Wire Line 1654 | 11600 3050 11875 3050 1655 | Connection ~ 11875 2850 1656 | Wire Wire Line 1657 | 7800 6500 8125 6500 1658 | Text Label 7800 6500 0 50 ~ 0 1659 | ~BTN1 1660 | $Comp 1661 | L Connector:USB_B J1 1662 | U 1 1 600659D8 1663 | P 2900 9175 1664 | F 0 "J1" H 2900 9600 50 0000 C CNN 1665 | F 1 "USB_B" H 2900 9525 50 0000 C CNN 1666 | F 2 "Connector_USB:USB_B_OST_USB-B1HSxx_Horizontal" H 3050 9125 50 0001 C CNN 1667 | F 3 " ~" H 3050 9125 50 0001 C CNN 1668 | 1 2900 9175 1669 | 1 0 0 -1 1670 | $EndComp 1671 | $Comp 1672 | L power:GND #PWR0140 1673 | U 1 1 60068AEF 1674 | P 2800 9575 1675 | F 0 "#PWR0140" H 2800 9325 50 0001 C CNN 1676 | F 1 "GND" H 2800 9425 50 0000 C CNN 1677 | F 2 "" H 2800 9575 50 0001 C CNN 1678 | F 3 "" H 2800 9575 50 0001 C CNN 1679 | 1 2800 9575 1680 | 1 0 0 -1 1681 | $EndComp 1682 | Wire Wire Line 1683 | 2800 9575 2900 9575 1684 | Connection ~ 2800 9575 1685 | NoConn ~ 3200 9175 1686 | NoConn ~ 3200 9275 1687 | $Comp 1688 | L Connector_Generic:Conn_01x06 J2 1689 | U 1 1 600F3C4E 1690 | P 2850 10375 1691 | F 0 "J2" H 2850 9900 50 0000 C CNN 1692 | F 1 "5V FTDI SERIAL" H 2850 9975 50 0000 C CNN 1693 | F 2 "Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Horizontal" H 2850 10375 50 0001 C CNN 1694 | F 3 "~" H 2850 10375 50 0001 C CNN 1695 | 1 2850 10375 1696 | -1 0 0 1 1697 | $EndComp 1698 | Text Notes 2775 10100 2 50 ~ 0 1699 | GRN 1700 | Text Notes 2775 10200 2 50 ~ 0 1701 | YEL 1702 | Text Notes 2775 10300 2 50 ~ 0 1703 | ORG 1704 | Text Notes 2775 10400 2 50 ~ 0 1705 | RED 1706 | Text Notes 2775 10500 2 50 ~ 0 1707 | BRN 1708 | Text Notes 2775 10600 2 50 ~ 0 1709 | GND 1710 | $Comp 1711 | L power:GND #PWR0141 1712 | U 1 1 6025B915 1713 | P 3050 10575 1714 | F 0 "#PWR0141" H 3050 10325 50 0001 C CNN 1715 | F 1 "GND" H 3050 10425 50 0000 C CNN 1716 | F 2 "" H 3050 10575 50 0001 C CNN 1717 | F 3 "" H 3050 10575 50 0001 C CNN 1718 | 1 3050 10575 1719 | 1 0 0 -1 1720 | $EndComp 1721 | Wire Wire Line 1722 | 3050 10175 3325 10175 1723 | Wire Wire Line 1724 | 3050 10275 3325 10275 1725 | Text Label 3325 10275 2 50 ~ 0 1726 | TXD 1727 | Text Label 3325 10175 2 50 ~ 0 1728 | RXD 1729 | Wire Wire Line 1730 | 3050 10375 3950 10375 1731 | Wire Wire Line 1732 | 3950 10375 3950 8975 1733 | Wire Wire Line 1734 | 3200 8975 3450 8975 1735 | $Comp 1736 | L Jumper:Jumper_3_Open JP1 1737 | U 1 1 602EB6D5 1738 | P 3700 8975 1739 | F 0 "JP1" H 3700 9106 50 0000 C CNN 1740 | F 1 "POWER SELECT" H 3750 9175 50 0000 C CNN 1741 | F 2 "Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical" H 3700 8975 50 0001 C CNN 1742 | F 3 "~" H 3700 8975 50 0001 C CNN 1743 | 1 3700 8975 1744 | -1 0 0 1 1745 | $EndComp 1746 | Wire Wire Line 1747 | 7800 7900 7850 7900 1748 | Wire Wire Line 1749 | 7800 8000 8025 8000 1750 | Text Label 8025 8000 2 50 ~ 0 1751 | RXD 1752 | Text Label 8025 7900 2 50 ~ 0 1753 | TXD 1754 | $Comp 1755 | L Connector_Generic:Conn_01x07 J3 1756 | U 1 1 6041081C 1757 | P 11575 8225 1758 | F 0 "J3" H 11525 8725 50 0000 L CNN 1759 | F 1 "RTC (SparkFun BOB-10160)" H 11025 8650 50 0000 L CNN 1760 | F 2 "Connector_PinHeader_2.54mm:PinHeader_1x07_P2.54mm_Vertical" H 11575 8225 50 0001 C CNN 1761 | F 3 "~" H 11575 8225 50 0001 C CNN 1762 | 1 11575 8225 1763 | 1 0 0 -1 1764 | $EndComp 1765 | Text Notes 11650 7950 0 50 ~ 0 1766 | GND 1767 | Text Notes 11650 8050 0 50 ~ 0 1768 | VCC 1769 | Text Notes 11650 8150 0 50 ~ 0 1770 | SQW 1771 | Text Notes 11650 8250 0 50 ~ 0 1772 | CLK 1773 | Text Notes 11650 8350 0 50 ~ 0 1774 | CIPO 1775 | Text Notes 11650 8450 0 50 ~ 0 1776 | COPI 1777 | Text Notes 11650 8550 0 50 ~ 0 1778 | ~SS 1779 | $Comp 1780 | L power:GND #PWR0142 1781 | U 1 1 604AFDBB 1782 | P 10625 7925 1783 | F 0 "#PWR0142" H 10625 7675 50 0001 C CNN 1784 | F 1 "GND" H 10625 7775 50 0000 C CNN 1785 | F 2 "" H 10625 7925 50 0001 C CNN 1786 | F 3 "" H 10625 7925 50 0001 C CNN 1787 | 1 10625 7925 1788 | 1 0 0 -1 1789 | $EndComp 1790 | Wire Wire Line 1791 | 11375 7925 10625 7925 1792 | $Comp 1793 | L power:VCC #PWR0143 1794 | U 1 1 604D5611 1795 | P 10800 8125 1796 | F 0 "#PWR0143" H 10800 7975 50 0001 C CNN 1797 | F 1 "VCC" H 10800 8275 50 0000 C CNN 1798 | F 2 "" H 10800 8125 50 0001 C CNN 1799 | F 3 "" H 10800 8125 50 0001 C CNN 1800 | 1 10800 8125 1801 | 1 0 0 -1 1802 | $EndComp 1803 | Wire Wire Line 1804 | 11375 8025 10900 8025 1805 | Wire Wire Line 1806 | 10900 8025 10900 8125 1807 | Wire Wire Line 1808 | 10900 8125 10800 8125 1809 | Text Label 7800 6700 0 50 ~ 0 1810 | RTC_SQW 1811 | $Comp 1812 | L power:VCC #PWR0144 1813 | U 1 1 605B7A4B 1814 | P 8125 5825 1815 | F 0 "#PWR0144" H 8125 5675 50 0001 C CNN 1816 | F 1 "VCC" H 8125 5975 50 0000 C CNN 1817 | F 2 "" H 8125 5825 50 0001 C CNN 1818 | F 3 "" H 8125 5825 50 0001 C CNN 1819 | 1 8125 5825 1820 | 1 0 0 -1 1821 | $EndComp 1822 | Wire Wire Line 1823 | 8125 6500 8125 6225 1824 | Wire Wire Line 1825 | 8225 6225 8225 6600 1826 | Wire Wire Line 1827 | 7800 6600 8225 6600 1828 | Wire Wire Line 1829 | 11375 8125 10975 8125 1830 | Text Label 10975 8125 0 50 ~ 0 1831 | RTC_SQW 1832 | Wire Wire Line 1833 | 7800 6700 8325 6700 1834 | Wire Wire Line 1835 | 8325 6700 8325 6225 1836 | Wire Wire Line 1837 | 11375 8325 10975 8325 1838 | Text Label 10975 8325 0 50 ~ 0 1839 | RTC_CIPO 1840 | Text Label 7800 6600 0 50 ~ 0 1841 | RTC_CIPO 1842 | Wire Wire Line 1843 | 11375 8525 10975 8525 1844 | Text Label 10975 8525 0 50 ~ 0 1845 | ~RTC_SS 1846 | Wire Wire Line 1847 | 7800 7400 8150 7400 1848 | Wire Wire Line 1849 | 7800 7200 8150 7200 1850 | Wire Wire Line 1851 | 7800 7100 8150 7100 1852 | Wire Wire Line 1853 | 11375 8225 10975 8225 1854 | Wire Wire Line 1855 | 11375 8425 10975 8425 1856 | Text Label 10975 8225 0 50 ~ 0 1857 | RTC_CLK 1858 | Text Label 8150 7100 2 50 ~ 0 1859 | RTC_CLK 1860 | Text Label 8150 7200 2 50 ~ 0 1861 | RTC_COPI 1862 | Text Label 10975 8425 0 50 ~ 0 1863 | RTC_COPI 1864 | Text Label 8150 7400 2 50 ~ 0 1865 | ~RTC_SS 1866 | Text Notes 8600 6700 0 50 ~ 0 1867 | Modem control lines can be used\nfor bit-banged SPI. 1868 | Wire Wire Line 1869 | 8425 6225 8425 6800 1870 | Wire Wire Line 1871 | 8425 6800 7800 6800 1872 | Wire Wire Line 1873 | 1475 4650 1475 4325 1874 | Wire Wire Line 1875 | 1475 4325 1075 4325 1876 | Text Label 1075 4325 0 50 ~ 0 1877 | ~RESETBTN 1878 | Text Label 9025 6500 2 50 ~ 0 1879 | ~RESETBTN 1880 | Connection ~ 1475 4650 1881 | $Comp 1882 | L Switch:SW_Push SW2 1883 | U 1 1 60A581D8 1884 | P 1325 5475 1885 | F 0 "SW2" H 1325 5400 50 0000 C CNN 1886 | F 1 "BTN1" H 1325 5325 50 0000 C CNN 1887 | F 2 "Button_Switch_THT:SW_PUSH_6mm" H 1325 5675 50 0001 C CNN 1888 | F 3 "~" H 1325 5675 50 0001 C CNN 1889 | 1 1325 5475 1890 | 1 0 0 -1 1891 | $EndComp 1892 | $Comp 1893 | L power:GND #PWR0117 1894 | U 1 1 60A58925 1895 | P 1000 5475 1896 | F 0 "#PWR0117" H 1000 5225 50 0001 C CNN 1897 | F 1 "GND" H 1000 5325 50 0000 C CNN 1898 | F 2 "" H 1000 5475 50 0001 C CNN 1899 | F 3 "" H 1000 5475 50 0001 C CNN 1900 | 1 1000 5475 1901 | 1 0 0 -1 1902 | $EndComp 1903 | Wire Wire Line 1904 | 1125 5475 1000 5475 1905 | Wire Wire Line 1906 | 1075 4650 1000 4650 1907 | Wire Wire Line 1908 | 1000 4650 1000 5475 1909 | Connection ~ 1000 5475 1910 | Wire Wire Line 1911 | 1525 5475 1725 5475 1912 | Text Label 1725 5475 2 50 ~ 0 1913 | ~BTN1 1914 | $Comp 1915 | L Device:LED D3 1916 | U 1 1 60B7FB79 1917 | P 4150 8725 1918 | F 0 "D3" H 4150 8550 50 0000 C CNN 1919 | F 1 "POWER" H 4150 8625 50 0000 C CNN 1920 | F 2 "LED_THT:LED_D5.0mm" H 4150 8725 50 0001 C CNN 1921 | F 3 "~" H 4150 8725 50 0001 C CNN 1922 | 1 4150 8725 1923 | -1 0 0 1 1924 | $EndComp 1925 | $Comp 1926 | L Device:R R6 1927 | U 1 1 60B80180 1928 | P 3850 8725 1929 | F 0 "R6" V 3750 8675 50 0000 L CNN 1930 | F 1 "1k*" V 3850 8675 50 0000 L CNN 1931 | F 2 "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal" V 3780 8725 50 0001 C CNN 1932 | F 3 "~" H 3850 8725 50 0001 C CNN 1933 | 1 3850 8725 1934 | 0 1 1 0 1935 | $EndComp 1936 | $Comp 1937 | L power:GND #PWR0119 1938 | U 1 1 60BD5E57 1939 | P 4300 8725 1940 | F 0 "#PWR0119" H 4300 8475 50 0001 C CNN 1941 | F 1 "GND" H 4300 8575 50 0000 C CNN 1942 | F 2 "" H 4300 8725 50 0001 C CNN 1943 | F 3 "" H 4300 8725 50 0001 C CNN 1944 | 1 4300 8725 1945 | 1 0 0 -1 1946 | $EndComp 1947 | Wire Wire Line 1948 | 3700 8725 3700 8825 1949 | $Comp 1950 | L power:VCC #PWR0145 1951 | U 1 1 60C016DA 1952 | P 3700 8725 1953 | F 0 "#PWR0145" H 3700 8575 50 0001 C CNN 1954 | F 1 "VCC" H 3700 8875 50 0000 C CNN 1955 | F 2 "" H 3700 8725 50 0001 C CNN 1956 | F 3 "" H 3700 8725 50 0001 C CNN 1957 | 1 3700 8725 1958 | 1 0 0 -1 1959 | $EndComp 1960 | Connection ~ 3700 8725 1961 | $Comp 1962 | L Device:LED D4 1963 | U 1 1 60C0AC66 1964 | P 8475 7300 1965 | F 0 "D4" H 8475 7125 50 0000 C CNN 1966 | F 1 "LED" H 8475 7200 50 0000 C CNN 1967 | F 2 "LED_THT:LED_D5.0mm" H 8475 7300 50 0001 C CNN 1968 | F 3 "~" H 8475 7300 50 0001 C CNN 1969 | 1 8475 7300 1970 | 1 0 0 1 1971 | $EndComp 1972 | $Comp 1973 | L Device:R R5 1974 | U 1 1 60C0AC71 1975 | P 8775 7300 1976 | F 0 "R5" V 8675 7250 50 0000 L CNN 1977 | F 1 "1k*" V 8775 7250 50 0000 L CNN 1978 | F 2 "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal" V 8705 7300 50 0001 C CNN 1979 | F 3 "~" H 8775 7300 50 0001 C CNN 1980 | 1 8775 7300 1981 | 0 1 1 0 1982 | $EndComp 1983 | Wire Wire Line 1984 | 7800 7300 8325 7300 1985 | $Comp 1986 | L power:VCC #PWR0146 1987 | U 1 1 60CB701C 1988 | P 8925 7300 1989 | F 0 "#PWR0146" H 8925 7150 50 0001 C CNN 1990 | F 1 "VCC" H 8925 7450 50 0000 C CNN 1991 | F 2 "" H 8925 7300 50 0001 C CNN 1992 | F 3 "" H 8925 7300 50 0001 C CNN 1993 | 1 8925 7300 1994 | 1 0 0 -1 1995 | $EndComp 1996 | $Comp 1997 | L Device:CP1 C12 1998 | U 1 1 60D05CD6 1999 | P 4500 9350 2000 | F 0 "C12" H 4615 9396 50 0000 L CNN 2001 | F 1 "10uF" H 4615 9305 50 0000 L CNN 2002 | F 2 "Capacitor_THT:CP_Radial_D5.0mm_P2.50mm" H 4500 9350 50 0001 C CNN 2003 | F 3 "~" H 4500 9350 50 0001 C CNN 2004 | 1 4500 9350 2005 | 1 0 0 -1 2006 | $EndComp 2007 | $Comp 2008 | L power:GND #PWR0147 2009 | U 1 1 60D073CE 2010 | P 4500 9500 2011 | F 0 "#PWR0147" H 4500 9250 50 0001 C CNN 2012 | F 1 "GND" H 4500 9350 50 0000 C CNN 2013 | F 2 "" H 4500 9500 50 0001 C CNN 2014 | F 3 "" H 4500 9500 50 0001 C CNN 2015 | 1 4500 9500 2016 | 1 0 0 -1 2017 | $EndComp 2018 | $Comp 2019 | L power:VCC #PWR0148 2020 | U 1 1 60D077A0 2021 | P 4500 9200 2022 | F 0 "#PWR0148" H 4500 9050 50 0001 C CNN 2023 | F 1 "VCC" H 4500 9350 50 0000 C CNN 2024 | F 2 "" H 4500 9200 50 0001 C CNN 2025 | F 3 "" H 4500 9200 50 0001 C CNN 2026 | 1 4500 9200 2027 | 1 0 0 -1 2028 | $EndComp 2029 | $Comp 2030 | L Device:LED D5 2031 | U 1 1 60D8EEE5 2032 | P 11000 3575 2033 | F 0 "D5" H 11000 3400 50 0000 C CNN 2034 | F 1 "CARD" H 11000 3475 50 0000 C CNN 2035 | F 2 "LED_THT:LED_D5.0mm" H 11000 3575 50 0001 C CNN 2036 | F 3 "~" H 11000 3575 50 0001 C CNN 2037 | 1 11000 3575 2038 | -1 0 0 -1 2039 | $EndComp 2040 | $Comp 2041 | L Device:R R4 2042 | U 1 1 60D8EEEF 2043 | P 11300 3575 2044 | F 0 "R4" V 11200 3525 50 0000 L CNN 2045 | F 1 "1k*" V 11300 3525 50 0000 L CNN 2046 | F 2 "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal" V 11230 3575 50 0001 C CNN 2047 | F 3 "~" H 11300 3575 50 0001 C CNN 2048 | 1 11300 3575 2049 | 0 1 1 0 2050 | $EndComp 2051 | $Comp 2052 | L power:VCC #PWR0149 2053 | U 1 1 60D8EEF9 2054 | P 10850 3575 2055 | F 0 "#PWR0149" H 10850 3425 50 0001 C CNN 2056 | F 1 "VCC" H 10850 3725 50 0000 C CNN 2057 | F 2 "" H 10850 3575 50 0001 C CNN 2058 | F 3 "" H 10850 3575 50 0001 C CNN 2059 | 1 10850 3575 2060 | 1 0 0 -1 2061 | $EndComp 2062 | $Comp 2063 | L power:VCC #PWR0138 2064 | U 1 1 5FE93E01 2065 | P 10775 3050 2066 | F 0 "#PWR0138" H 10775 2900 50 0001 C CNN 2067 | F 1 "VCC" H 10775 3200 50 0000 C CNN 2068 | F 2 "" H 10775 3050 50 0001 C CNN 2069 | F 3 "" H 10775 3050 50 0001 C CNN 2070 | 1 10775 3050 2071 | 1 0 0 -1 2072 | $EndComp 2073 | Wire Wire Line 2074 | 11450 3575 11725 3575 2075 | Text Label 11725 3575 2 50 ~ 0 2076 | ~CFLED 2077 | $Comp 2078 | L Device:C C2 2079 | U 1 1 5EE04BDE 2080 | P 4650 10575 2081 | F 0 "C2" H 4765 10621 50 0000 L CNN 2082 | F 1 "0.1uF" H 4765 10530 50 0000 L CNN 2083 | F 2 "Capacitor_THT:C_Rect_L7.0mm_W2.0mm_P5.00mm" H 4688 10425 50 0001 C CNN 2084 | F 3 "~" H 4650 10575 50 0001 C CNN 2085 | 1 4650 10575 2086 | 1 0 0 -1 2087 | $EndComp 2088 | $Comp 2089 | L power:GND #PWR0150 2090 | U 1 1 5EE05710 2091 | P 4200 10725 2092 | F 0 "#PWR0150" H 4200 10475 50 0001 C CNN 2093 | F 1 "GND" H 4200 10575 50 0000 C CNN 2094 | F 2 "" H 4200 10725 50 0001 C CNN 2095 | F 3 "" H 4200 10725 50 0001 C CNN 2096 | 1 4200 10725 2097 | 1 0 0 -1 2098 | $EndComp 2099 | $Comp 2100 | L power:VCC #PWR0151 2101 | U 1 1 5EE05AED 2102 | P 4200 10425 2103 | F 0 "#PWR0151" H 4200 10275 50 0001 C CNN 2104 | F 1 "VCC" H 4200 10575 50 0000 C CNN 2105 | F 2 "" H 4200 10425 50 0001 C CNN 2106 | F 3 "" H 4200 10425 50 0001 C CNN 2107 | 1 4200 10425 2108 | 1 0 0 -1 2109 | $EndComp 2110 | $Comp 2111 | L Device:C C3 2112 | U 1 1 5EE0B1D4 2113 | P 5100 10575 2114 | F 0 "C3" H 5215 10621 50 0000 L CNN 2115 | F 1 "0.1uF" H 5215 10530 50 0000 L CNN 2116 | F 2 "Capacitor_THT:C_Rect_L7.0mm_W2.0mm_P5.00mm" H 5138 10425 50 0001 C CNN 2117 | F 3 "~" H 5100 10575 50 0001 C CNN 2118 | 1 5100 10575 2119 | 1 0 0 -1 2120 | $EndComp 2121 | Wire Wire Line 2122 | 5550 10425 5100 10425 2123 | Connection ~ 5100 10425 2124 | Wire Wire Line 2125 | 5550 10725 5100 10725 2126 | Connection ~ 5100 10725 2127 | $Comp 2128 | L Device:C C5 2129 | U 1 1 5EE66D34 2130 | P 6000 10575 2131 | F 0 "C5" H 6115 10621 50 0000 L CNN 2132 | F 1 "0.1uF" H 6115 10530 50 0000 L CNN 2133 | F 2 "Capacitor_THT:C_Rect_L7.0mm_W2.0mm_P5.00mm" H 6038 10425 50 0001 C CNN 2134 | F 3 "~" H 6000 10575 50 0001 C CNN 2135 | 1 6000 10575 2136 | 1 0 0 -1 2137 | $EndComp 2138 | $Comp 2139 | L Device:C C6 2140 | U 1 1 5EE6729D 2141 | P 6475 10575 2142 | F 0 "C6" H 6590 10621 50 0000 L CNN 2143 | F 1 "0.1uF" H 6590 10530 50 0000 L CNN 2144 | F 2 "Capacitor_THT:C_Rect_L7.0mm_W2.0mm_P5.00mm" H 6513 10425 50 0001 C CNN 2145 | F 3 "~" H 6475 10575 50 0001 C CNN 2146 | 1 6475 10575 2147 | 1 0 0 -1 2148 | $EndComp 2149 | $Comp 2150 | L Device:C C7 2151 | U 1 1 5EE67960 2152 | P 6950 10575 2153 | F 0 "C7" H 7065 10621 50 0000 L CNN 2154 | F 1 "0.1uF" H 7065 10530 50 0000 L CNN 2155 | F 2 "Capacitor_THT:C_Rect_L7.0mm_W2.0mm_P5.00mm" H 6988 10425 50 0001 C CNN 2156 | F 3 "~" H 6950 10575 50 0001 C CNN 2157 | 1 6950 10575 2158 | 1 0 0 -1 2159 | $EndComp 2160 | Wire Wire Line 2161 | 6950 10425 6475 10425 2162 | Wire Wire Line 2163 | 6000 10425 6475 10425 2164 | Connection ~ 6475 10425 2165 | Wire Wire Line 2166 | 6000 10425 5550 10425 2167 | Connection ~ 6000 10425 2168 | Connection ~ 5550 10425 2169 | Wire Wire Line 2170 | 5550 10725 6000 10725 2171 | Connection ~ 5550 10725 2172 | Wire Wire Line 2173 | 6475 10725 6000 10725 2174 | Connection ~ 6000 10725 2175 | Wire Wire Line 2176 | 6950 10725 6475 10725 2177 | Connection ~ 6475 10725 2178 | $Comp 2179 | L Device:C C8 2180 | U 1 1 5EFD463F 2181 | P 7425 10575 2182 | F 0 "C8" H 7540 10621 50 0000 L CNN 2183 | F 1 "0.1uF" H 7540 10530 50 0000 L CNN 2184 | F 2 "Capacitor_THT:C_Rect_L7.0mm_W2.0mm_P5.00mm" H 7463 10425 50 0001 C CNN 2185 | F 3 "~" H 7425 10575 50 0001 C CNN 2186 | 1 7425 10575 2187 | 1 0 0 -1 2188 | $EndComp 2189 | $Comp 2190 | L Device:C C9 2191 | U 1 1 5EFD4981 2192 | P 7900 10575 2193 | F 0 "C9" H 8015 10621 50 0000 L CNN 2194 | F 1 "0.1uF" H 8015 10530 50 0000 L CNN 2195 | F 2 "Capacitor_THT:C_Rect_L7.0mm_W2.0mm_P5.00mm" H 7938 10425 50 0001 C CNN 2196 | F 3 "~" H 7900 10575 50 0001 C CNN 2197 | 1 7900 10575 2198 | 1 0 0 -1 2199 | $EndComp 2200 | Wire Wire Line 2201 | 7425 10425 7900 10425 2202 | Connection ~ 7900 10425 2203 | Wire Wire Line 2204 | 7425 10425 6950 10425 2205 | Connection ~ 7425 10425 2206 | Connection ~ 6950 10425 2207 | Wire Wire Line 2208 | 6950 10725 7425 10725 2209 | Connection ~ 6950 10725 2210 | Wire Wire Line 2211 | 7425 10725 7900 10725 2212 | Connection ~ 7425 10725 2213 | $Comp 2214 | L Device:C C10 2215 | U 1 1 5F150263 2216 | P 8375 10575 2217 | F 0 "C10" H 8490 10621 50 0000 L CNN 2218 | F 1 "0.1uF" H 8490 10530 50 0000 L CNN 2219 | F 2 "Capacitor_THT:C_Rect_L7.0mm_W2.0mm_P5.00mm" H 8413 10425 50 0001 C CNN 2220 | F 3 "~" H 8375 10575 50 0001 C CNN 2221 | 1 8375 10575 2222 | 1 0 0 -1 2223 | $EndComp 2224 | Wire Wire Line 2225 | 8375 10725 7900 10725 2226 | Connection ~ 7900 10725 2227 | Wire Wire Line 2228 | 8375 10425 7900 10425 2229 | $Comp 2230 | L Device:C C4 2231 | U 1 1 5F223F90 2232 | P 5550 10575 2233 | F 0 "C4" H 5665 10621 50 0000 L CNN 2234 | F 1 "0.1uF" H 5665 10530 50 0000 L CNN 2235 | F 2 "Capacitor_THT:C_Rect_L7.0mm_W2.0mm_P5.00mm" H 5588 10425 50 0001 C CNN 2236 | F 3 "~" H 5550 10575 50 0001 C CNN 2237 | 1 5550 10575 2238 | 1 0 0 -1 2239 | $EndComp 2240 | Wire Wire Line 2241 | 5100 10725 4650 10725 2242 | Wire Wire Line 2243 | 4650 10425 5100 10425 2244 | $Comp 2245 | L Device:C C1 2246 | U 1 1 5F282A5C 2247 | P 4200 10575 2248 | F 0 "C1" H 4315 10621 50 0000 L CNN 2249 | F 1 "0.1uF" H 4315 10530 50 0000 L CNN 2250 | F 2 "Capacitor_THT:C_Rect_L7.0mm_W2.0mm_P5.00mm" H 4238 10425 50 0001 C CNN 2251 | F 3 "~" H 4200 10575 50 0001 C CNN 2252 | 1 4200 10575 2253 | 1 0 0 -1 2254 | $EndComp 2255 | Wire Wire Line 2256 | 4200 10425 4650 10425 2257 | Connection ~ 4650 10425 2258 | Wire Wire Line 2259 | 4650 10725 4200 10725 2260 | Connection ~ 4650 10725 2261 | Connection ~ 4200 10425 2262 | Connection ~ 4200 10725 2263 | Text Notes 8225 7900 2 50 ~ 0 2264 | ORG 2265 | Text Notes 8225 8000 2 50 ~ 0 2266 | YEL 2267 | Text Notes 7375 7125 2 50 ~ 0 2268 | MCR[2] 2269 | Text Notes 7375 7225 2 50 ~ 0 2270 | MCR[0] 2271 | Text Notes 7375 7325 2 50 ~ 0 2272 | MCR[1] 2273 | Text Notes 7375 7425 2 50 ~ 0 2274 | MCR[3] 2275 | Text Notes 7350 6525 2 50 ~ 0 2276 | MSR[6] 2277 | Text Notes 7350 6625 2 50 ~ 0 2278 | MSR[7] 2279 | Text Notes 7350 6725 2 50 ~ 0 2280 | MSR[5] 2281 | Text Notes 7350 6825 2 50 ~ 0 2282 | MSR[4] 2283 | $Comp 2284 | L Interface_UART:16550 U8 2285 | U 1 1 5ED74037 2286 | P 6800 7700 2287 | F 0 "U8" H 6800 7775 50 0000 C CNN 2288 | F 1 "TL16C550" H 6625 7700 50 0000 L CNN 2289 | F 2 "Package_DIP:DIP-40_W15.24mm_Socket" H 6800 7700 50 0001 C CIN 2290 | F 3 "http://www.ti.com/lit/ds/symlink/pc16550d.pdf" H 6800 7700 50 0001 C CNN 2291 | 1 6800 7700 2292 | 1 0 0 -1 2293 | $EndComp 2294 | Wire Wire Line 2295 | 11100 1350 10875 1350 2296 | Wire Wire Line 2297 | 11100 1250 10875 1250 2298 | Wire Wire Line 2299 | 11100 3050 10775 3050 2300 | Wire Wire Line 2301 | 11100 2950 10875 2950 2302 | Wire Wire Line 2303 | 11100 1150 10875 1150 2304 | Wire Wire Line 2305 | 11100 2850 10875 2850 2306 | Wire Wire Line 2307 | 11100 2750 10875 2750 2308 | Wire Wire Line 2309 | 11100 2650 10875 2650 2310 | Wire Wire Line 2311 | 11100 2550 10875 2550 2312 | Wire Wire Line 2313 | 11100 2250 10875 2250 2314 | Wire Wire Line 2315 | 11100 2150 10875 2150 2316 | Wire Wire Line 2317 | 11100 2050 10875 2050 2318 | Wire Wire Line 2319 | 11100 1950 10775 1950 2320 | Wire Wire Line 2321 | 11100 1050 10875 1050 2322 | Wire Wire Line 2323 | 11100 1850 10875 1850 2324 | Wire Wire Line 2325 | 11100 1750 10875 1750 2326 | Wire Wire Line 2327 | 11100 1650 10875 1650 2328 | Wire Wire Line 2329 | 11100 1550 10875 1550 2330 | Wire Wire Line 2331 | 11100 1450 10875 1450 2332 | $Comp 2333 | L Connector_Generic:Conn_02x22_Odd_Even J4 2334 | U 1 1 5EDF2364 2335 | P 11300 2050 2336 | F 0 "J4" H 11350 3267 50 0000 C CNN 2337 | F 1 "CFCARD/IDE" H 11350 3176 50 0000 C CNN 2338 | F 2 "Connector_PinHeader_2.00mm:PinHeader_2x22_P2.00mm_Vertical" H 11300 2050 50 0001 C CNN 2339 | F 3 "~" H 11300 2050 50 0001 C CNN 2340 | 1 11300 2050 2341 | 1 0 0 -1 2342 | $EndComp 2343 | $Comp 2344 | L Device:R_Network06 RN1 2345 | U 1 1 5F31A7A9 2346 | P 8425 6025 2347 | F 0 "RN1" H 8713 6071 50 0000 L CNN 2348 | F 1 "10k" H 8713 5980 50 0000 L CNN 2349 | F 2 "Resistor_THT:R_Array_SIP7" V 8800 6025 50 0001 C CNN 2350 | F 3 "http://www.vishay.com/docs/31509/csc.pdf" H 8425 6025 50 0001 C CNN 2351 | 1 8425 6025 2352 | 1 0 0 -1 2353 | $EndComp 2354 | Wire Wire Line 2355 | 8625 6500 9025 6500 2356 | Wire Wire Line 2357 | 8625 6225 8625 6500 2358 | Wire Wire Line 2359 | 7850 7900 7850 7500 2360 | Wire Wire Line 2361 | 7850 7500 9075 7500 2362 | Wire Wire Line 2363 | 9075 6800 8525 6800 2364 | Wire Wire Line 2365 | 8525 6800 8525 6225 2366 | Connection ~ 7850 7900 2367 | Wire Wire Line 2368 | 7850 7900 8025 7900 2369 | Wire Wire Line 2370 | 9075 7500 9075 6800 2371 | $Comp 2372 | L Connector_Generic:Conn_01x25 J5 2373 | U 1 1 5EFE4967 2374 | P 11100 5850 2375 | F 0 "J5" H 10825 7275 50 0000 L CNN 2376 | F 1 "EXPANSION (F.Cu)" H 10550 7175 50 0000 L CNN 2377 | F 2 "PadRows:PadRow_1x25_P2.54mm" H 11100 5850 50 0001 C CNN 2378 | F 3 "~" H 11100 5850 50 0001 C CNN 2379 | 1 11100 5850 2380 | 1 0 0 -1 2381 | $EndComp 2382 | $Comp 2383 | L Connector_Generic:Conn_01x25 J6 2384 | U 1 1 5EFE7FD4 2385 | P 11975 5850 2386 | F 0 "J6" H 11725 7275 50 0000 L CNN 2387 | F 1 "EXPANSION (B.Cu)" H 11425 7175 50 0000 L CNN 2388 | F 2 "PadRows:PadRow_1x25_P2.54mm" H 11975 5850 50 0001 C CNN 2389 | F 3 "~" H 11975 5850 50 0001 C CNN 2390 | 1 11975 5850 2391 | 1 0 0 -1 2392 | $EndComp 2393 | Wire Wire Line 2394 | 10900 4650 10525 4650 2395 | Wire Wire Line 2396 | 11775 4650 11475 4650 2397 | Text Label 10525 4650 0 50 ~ 0 2398 | CPUCLK 2399 | Text Label 11475 4650 0 50 ~ 0 2400 | ~RESET 2401 | $Comp 2402 | L power:VCC #PWR0152 2403 | U 1 1 5F09BF9D 2404 | P 11400 5850 2405 | F 0 "#PWR0152" H 11400 5700 50 0001 C CNN 2406 | F 1 "VCC" H 11400 6000 50 0000 C CNN 2407 | F 2 "" H 11400 5850 50 0001 C CNN 2408 | F 3 "" H 11400 5850 50 0001 C CNN 2409 | 1 11400 5850 2410 | 1 0 0 -1 2411 | $EndComp 2412 | Wire Wire Line 2413 | 10900 4750 10525 4750 2414 | Text Label 10525 4750 0 50 ~ 0 2415 | D0 2416 | Wire Wire Line 2417 | 11775 4750 11475 4750 2418 | Text Label 11475 4750 0 50 ~ 0 2419 | D1 2420 | Wire Wire Line 2421 | 10900 4850 10525 4850 2422 | Text Label 10525 4850 0 50 ~ 0 2423 | D2 2424 | Wire Wire Line 2425 | 11775 4850 11475 4850 2426 | Text Label 11475 4850 0 50 ~ 0 2427 | D3 2428 | Wire Wire Line 2429 | 10900 4950 10525 4950 2430 | Text Label 10525 4950 0 50 ~ 0 2431 | D4 2432 | Wire Wire Line 2433 | 11775 4950 11475 4950 2434 | Text Label 11475 4950 0 50 ~ 0 2435 | D5 2436 | Wire Wire Line 2437 | 10900 5050 10525 5050 2438 | Wire Wire Line 2439 | 11775 5050 11475 5050 2440 | Text Label 10525 5050 0 50 ~ 0 2441 | D6 2442 | Text Label 11475 5050 0 50 ~ 0 2443 | D7 2444 | Wire Wire Line 2445 | 10900 5150 10525 5150 2446 | Text Label 10525 5150 0 50 ~ 0 2447 | A22 2448 | Wire Wire Line 2449 | 11775 5150 11475 5150 2450 | Text Label 11475 5150 0 50 ~ 0 2451 | A20 2452 | Wire Wire Line 2453 | 10900 5250 10525 5250 2454 | Wire Wire Line 2455 | 11775 5250 11475 5250 2456 | Text Label 10525 5250 0 50 ~ 0 2457 | D8 2458 | Text Label 11475 5250 0 50 ~ 0 2459 | D9 2460 | Wire Wire Line 2461 | 10900 5350 10525 5350 2462 | Text Label 10525 5350 0 50 ~ 0 2463 | A23 2464 | Wire Wire Line 2465 | 11775 5350 11475 5350 2466 | Text Label 11475 5350 0 50 ~ 0 2467 | A19 2468 | Wire Wire Line 2469 | 10900 5450 10525 5450 2470 | Text Label 10525 5450 0 50 ~ 0 2471 | A16 2472 | Wire Wire Line 2473 | 11775 5450 11475 5450 2474 | Text Label 11475 5450 0 50 ~ 0 2475 | A17 2476 | Wire Wire Line 2477 | 10900 5550 10525 5550 2478 | Text Label 10525 5550 0 50 ~ 0 2479 | A18 2480 | Wire Wire Line 2481 | 11775 5550 11475 5550 2482 | Text Label 11475 5550 0 50 ~ 0 2483 | A21 2484 | Wire Wire Line 2485 | 10900 5650 10525 5650 2486 | Wire Wire Line 2487 | 10900 5750 10525 5750 2488 | Text Label 10525 5650 0 50 ~ 0 2489 | A6 2490 | Text Label 10525 5750 0 50 ~ 0 2491 | A8 2492 | Wire Wire Line 2493 | 11775 5650 11475 5650 2494 | Wire Wire Line 2495 | 11775 5750 11475 5750 2496 | Text Label 11475 5650 0 50 ~ 0 2497 | A7 2498 | Text Label 11475 5750 0 50 ~ 0 2499 | A10 2500 | Wire Wire Line 2501 | 10900 5850 10525 5850 2502 | Text Label 10525 5850 0 50 ~ 0 2503 | D15 2504 | Wire Wire Line 2505 | 11775 5850 11400 5850 2506 | Wire Wire Line 2507 | 10900 5950 10525 5950 2508 | Wire Wire Line 2509 | 11475 5950 11775 5950 2510 | Text Label 10525 5950 0 50 ~ 0 2511 | D14 2512 | Text Label 11475 5950 0 50 ~ 0 2513 | A5 2514 | Wire Wire Line 2515 | 10900 6050 10525 6050 2516 | Wire Wire Line 2517 | 11775 6050 11475 6050 2518 | Text Label 10525 6050 0 50 ~ 0 2519 | D13 2520 | Text Label 11475 6050 0 50 ~ 0 2521 | D12 2522 | Wire Wire Line 2523 | 10900 6150 10525 6150 2524 | Text Label 10525 6150 0 50 ~ 0 2525 | ~RDL 2526 | Wire Wire Line 2527 | 11775 6150 11475 6150 2528 | Wire Wire Line 2529 | 10900 6250 10525 6250 2530 | Text Label 11475 6150 0 50 ~ 0 2531 | A4 2532 | Text Label 10525 6250 0 50 ~ 0 2533 | A11 2534 | Text Label 11475 6250 0 50 ~ 0 2535 | ~WRL 2536 | Wire Wire Line 2537 | 11475 6250 11775 6250 2538 | Wire Wire Line 2539 | 10900 6350 10525 6350 2540 | Text Label 10525 6350 0 50 ~ 0 2541 | A13 2542 | Wire Wire Line 2543 | 11775 6350 11475 6350 2544 | Text Label 11475 6350 0 50 ~ 0 2545 | A14 2546 | Wire Wire Line 2547 | 10900 6450 10525 6450 2548 | Text Label 10525 6450 0 50 ~ 0 2549 | A9 2550 | Wire Wire Line 2551 | 11775 6450 11475 6450 2552 | Text Label 11475 6450 0 50 ~ 0 2553 | A15 2554 | Wire Wire Line 2555 | 10900 6550 10525 6550 2556 | Text Label 10525 6550 0 50 ~ 0 2557 | D10 2558 | Wire Wire Line 2559 | 11775 6550 11475 6550 2560 | Text Label 11475 6550 0 50 ~ 0 2561 | A12 2562 | Wire Wire Line 2563 | 10900 6650 10525 6650 2564 | Text Label 10525 6650 0 50 ~ 0 2565 | A2 2566 | Wire Wire Line 2567 | 11775 6650 11475 6650 2568 | Text Label 11475 6650 0 50 ~ 0 2569 | A1 2570 | Wire Wire Line 2571 | 10900 6750 10525 6750 2572 | Text Label 10525 6750 0 50 ~ 0 2573 | ~WRU 2574 | Wire Wire Line 2575 | 11775 6750 11475 6750 2576 | Text Label 11475 6750 0 50 ~ 0 2577 | ~RDU 2578 | Wire Wire Line 2579 | 10525 6850 10900 6850 2580 | Text Label 10525 6850 0 50 ~ 0 2581 | D11 2582 | Wire Wire Line 2583 | 11775 6850 11475 6850 2584 | Text Label 11475 6850 0 50 ~ 0 2585 | A3 2586 | Wire Wire Line 2587 | 10900 6950 10525 6950 2588 | Text Label 10525 6950 0 50 ~ 0 2589 | RESET 2590 | $Comp 2591 | L power:GND #PWR0153 2592 | U 1 1 5FC59BF2 2593 | P 10900 7050 2594 | F 0 "#PWR0153" H 10900 6800 50 0001 C CNN 2595 | F 1 "GND" H 10900 6900 50 0000 C CNN 2596 | F 2 "" H 10900 7050 50 0001 C CNN 2597 | F 3 "" H 10900 7050 50 0001 C CNN 2598 | 1 10900 7050 2599 | 1 0 0 -1 2600 | $EndComp 2601 | $Comp 2602 | L power:GND #PWR0154 2603 | U 1 1 5FC5A45A 2604 | P 11775 7050 2605 | F 0 "#PWR0154" H 11775 6800 50 0001 C CNN 2606 | F 1 "GND" H 11775 6900 50 0000 C CNN 2607 | F 2 "" H 11775 7050 50 0001 C CNN 2608 | F 3 "" H 11775 7050 50 0001 C CNN 2609 | 1 11775 7050 2610 | 1 0 0 -1 2611 | $EndComp 2612 | Wire Wire Line 2613 | 11775 6950 11475 6950 2614 | Text Label 11475 6950 0 50 ~ 0 2615 | EXTIRQ 2616 | Text Label 7800 6800 0 50 ~ 0 2617 | EXTIRQ 2618 | Text Notes 5950 10175 0 50 ~ 0 2619 | * R4, R5, R6, R7: \n Choose resistor value based on LED forward voltage\n and desired indicator brightness. 2620 | Wire Notes Line 2621 | 10525 700 12125 700 2622 | Wire Notes Line 2623 | 12125 700 12125 3825 2624 | Wire Notes Line 2625 | 12125 3825 10525 3825 2626 | Wire Notes Line 2627 | 10525 3825 10525 700 2628 | Wire Notes Line 2629 | 10450 4325 12225 4325 2630 | Wire Notes Line 2631 | 12225 4325 12225 7275 2632 | Wire Notes Line 2633 | 12225 7275 10450 7275 2634 | Wire Notes Line 2635 | 10450 7275 10450 4325 2636 | Wire Notes Line 2637 | 12150 7625 12150 8625 2638 | Wire Notes Line 2639 | 12150 8625 10475 8625 2640 | Wire Notes Line 2641 | 10475 8625 10475 7625 2642 | Wire Notes Line 2643 | 10475 7625 12150 7625 2644 | $EndSCHEMATC 2645 | -------------------------------------------------------------------------------- /API.md: -------------------------------------------------------------------------------- 1 | ## Application programming 2 | 3 | Programs are loaded into RAM starting at the address `APPMEMSTART` (currently 4 | defined as `$E00100`, 256 bytes past the start of RAM). Execution also begins at 5 | this location. 6 | 7 | Application programs are executed in supervisor mode. The stack pointer `A7` is 8 | initialized to the end of RAM (`$00F00000`) and registers `D0-D7/A0-A6` are 9 | initialized to `$00000000`. 10 | 11 | The interrupt priority level is set to `0`, i.e. interrupts are enabled at 12 | program start. 13 | 14 | The UART is enabled and set to 57600 baud, 8 data bits, no parity, 1 stop bit. 15 | The line status interrupt is enabled. A break condition on the serial input 16 | terminates execution of the application and enters the serial loader (see above). 17 | 18 | The `TRAP #n` instruction is used to perform system calls. (see below) 19 | 20 | 21 | ### System calls 22 | 23 | Application programs can use basic input/output routines in the ROM using the 24 | `TRAP` instruction. (This limits the number of syscalls to 16. Future ROM revisions 25 | may use [A-traps](https://en.wikipedia.org/wiki/Macintosh_Toolbox).) 26 | 27 | 28 | #### Calling convention 29 | 30 | - `D0-D1` - integer arguments. 31 | - `A0-A1` - pointer arguments. 32 | - Additional arguments passed on the stack. 33 | - `D0-D1` - integer return values. 34 | - `A0-A1` - pointer return values. 35 | - `D2-D7/A2-A7/SR` - preserved. 36 | - Registers `D0-D1/A0-A1` not used for return values may have undefined contents 37 | upon return to the caller. (i.e. the callee may use them as scratch registers) 38 | - The caller is responsible for removing arguments passed on the stack. 39 | 40 | The `sys` macro can be used as a wrapper around the `TRAP` instruction. 41 | 42 | A common convention for some system calls is to return 0 in `D0` on success, or 43 | a nonzero error code in `D0` on failure. Note that since system calls preserve 44 | condition codes, an explicit `tst d0` is required before branching to an error 45 | handler. 46 | 47 | #### `TRAP #0` - `Exit` - return to system 48 | 49 | - **Arguments:** 50 | - none 51 | - **Returns:** 52 | - none 53 | - **Function:** 54 | - Terminates the application and returns to the system. This will relaunch 55 | `STARTUP.BIN` (if present on card) or return to the command shell. 56 | 57 | #### `TRAP #1` - `WaitBtn` - wait for button to be pressed 58 | 59 | - **Arguments:** 60 | - none 61 | - **Returns:** 62 | - none 63 | - **Function:** 64 | - Pauses execution until the "ENTER" pushbutton on the board is pressed and 65 | released. 66 | 67 | 68 | #### `TRAP #2` - `OutChar` - write one character to output device 69 | 70 | - **Arguments:** 71 | - `D0.B` - character to write 72 | - **Returns:** 73 | - `D0.B` - unmodified 74 | - **Function:** 75 | - Write one character to the current output device. (The default output device 76 | is the serial port; see "Input/output customization" below for more info.) 77 | - **Example:** 78 | ``` 79 | ; write a newline character to the output device 80 | moveq #$0a,d0 81 | sys OutChar 82 | ``` 83 | 84 | 85 | #### `TRAP #3` - `OutStr` - write null-terminated string to output device 86 | - **Arguments:** 87 | - `A0.L` - pointer to null-terminated string 88 | - **Returns:** 89 | - none 90 | - **Function:** 91 | - Write a null-terminated string to the current output device. 92 | - **Example:** 93 | ``` 94 | ; write "hello world!" to the output device, followed by a newline 95 | lea.l hello,a0 96 | sys OutStr 97 | hello: dc.b "hello world!\n",0 98 | ``` 99 | 100 | 101 | #### `TRAP #4` - `OutFmt` - write formatted string to output device 102 | - **Arguments:** 103 | - `A0.L` - pointer to null-terminated format string 104 | - format arguments on stack (caller is responsible for cleanup) 105 | - **Returns:** 106 | - none 107 | - **Function:** 108 | - Write a formatted string to the current output device. Format arguments are 109 | taken from the stack, with the most-recently-pushed quantity treated as the 110 | first format argument. 111 | - Unlike C's `printf`, format specifiers are single bytes in the range `$E0-$FF`. 112 | See `syscalls.inc` for the full list. 113 | - Since the 68000 stack must always stay word-aligned, byte quantities must 114 | be pushed on the stack as words. 115 | - **Example:** 116 | ``` 117 | ; writes "567 xyz 89ABCDEF" to the output device, followed by a newline 118 | move.l #2309737967,-(sp) ; second argument, printed as 32-bit hex 119 | move.w #$237,-(sp) ; first argument, printed as 16-bit decimal 120 | lea.l fmtstr,a0 121 | sys OutFmt 122 | addq #6,sp 123 | fmtstr: dc.b FMT_U16," xyz ",FMT_H32,"\n",0 124 | ``` 125 | 126 | 127 | #### `TRAP #5` - `InChar` - read one character from input device 128 | - **Arguments:** 129 | - none 130 | - **Returns:** 131 | - `D0.B` - received character 132 | - **Function:** 133 | - Waits for a character to become available from the current input device and 134 | returns it. (The default input device is the serial port; see "Input/Output 135 | handlers" below for more info.) 136 | - **Example:** 137 | ``` 138 | ; wait for a character to be typed, then print its hex value surrounded by brackets 139 | sys InChar 140 | move.w d0,-(sp) 141 | lea.l fmtstr,a0 142 | sys OutFmt 143 | addq #2,sp 144 | fmtstr: dc.b "[",FMT_H8,"]",0 145 | ``` 146 | 147 | 148 | #### `TRAP #6` - `PromptStr` - prompt for string from input device 149 | - **Arguments:** 150 | - `A0.L` - pointer to destination buffer 151 | - `D0.L` - maximum allowed length of string 152 | - `D1.W` - delimiter character and option flags 153 | - **bits 0-7:** delimiter (terminate prompt when this character is received) 154 | - **bit 8:** if set, received characters are _not_ echoed to the output device 155 | - **bit 9:** if set, control characters like Backspace and Ctrl-C are _not_ interpreted 156 | - **Returns:** 157 | - `A0.L` - unmodified (points to start of string) 158 | - `(A0)` - user-supplied string with a terminated null byte 159 | - `D0.L` - number of characters received (excluding null byte) 160 | - **Function:** 161 | - Prompts for a string from the input device. Returns when the delimiter character 162 | specified by `D1.B` is received, or (if bit 9 of `D1` is clear) when Ctrl-C (`$03`) 163 | is received. 164 | - The string is null-terminated. The buffer pointed to by `A0` should have sufficient 165 | space for `D0`+1 bytes. 166 | - If bit 9 of `D1` is clear, the following control characters are interpreted: 167 | - **Ctrl-C** (`$03`): return immediately with an empty string 168 | - **Ctrl-H** (`$08`, **DEL** (`$7F`): delete most-recently-entered character 169 | from the input buffer and (if bit 8 of `D1` is clear) output a backspace 170 | escape sequence 171 | - **Ctrl-M** (`CR`, `$0D`): translated to Ctrl-J (`LF`, `$0A`) 172 | - **Example:** 173 | ``` 174 | ; ask for the user's name 175 | lea.l name,a0 176 | moveq #32,d0 ; max length is 32 bytes (one less than buffer size) 177 | moveq #$0a,d1 ; stop when a newline character is received 178 | sys PromptStr 179 | ; print it 180 | move.l a0,-(sp) 181 | lea.l fmtstr,a0 182 | sys OutFmt 183 | addq #4,sp 184 | fmtstr: dc.b "Hello, ",FMT_S,"!\n",0 185 | name: dcb.b 33 186 | ``` 187 | 188 | #### `TRAP #7` - `ReadSector` - read one 512-byte sector from the CompactFlash card 189 | - **Arguments:** 190 | - `D0.L` - sector number (LBA) 191 | - `D1.L` - number of bytes to read (pass any value >= 512 to load entire sector) 192 | - `A0.L` - address of destination buffer (must be word-aligned) 193 | - **Returns:** 194 | - `D0.B` - error code, or 0 if successful 195 | - `D1.L` - decremented by the number of bytes read 196 | - `A0.L` - points one byte past the last byte written to the destination buffer 197 | - **Function:** 198 | - Reads the numbered sector from the CompactFlash card into RAM. An error code 199 | is returned in `D0` if an error occurs (e.g. no card inserted or invalid sector number) 200 | - To facilitate reading of multiple sectors into the same buffer, `A0` is advanced 201 | to point one byte past the last byte written, and `D1` is decremented by the 202 | actual number of bytes read. 203 | - **Example:** 204 | ``` 205 | ; read the master boot record 206 | moveq #0,d0 ; read sector number 0 207 | moveq #-1,d1 ; read whole sector 208 | lea.l buf,a0 209 | sys ReadSector 210 | ; print it as a hexdump 211 | move.l #512,-(sp) ; number of bytes to dump 212 | pea buf ; start of buffer 213 | lea.l fmtstr,a0 214 | sys OutFmt 215 | addq #8,sp 216 | fmtstr: dc.b FMT_HEXDUMP,"\n",0 217 | buf: dcb.b 512 218 | ``` 219 | 220 | #### `TRAP #8` - `ListDirectory` - traverse the root directory of the CompactFlash card 221 | - **Arguments:** 222 | - `A0.L` - pointer to buffer of at least `DIRBUFSIZE` bytes (must be word-aligned) 223 | - `D0.L` - should be nonzero on first call; zero on subsequent calls 224 | - **Returns:** 225 | - `A0.L` - preserved 226 | - `A1.L` - pointer to 32-byte directory entry within the buffer 227 | - `D0.W` - status 228 | - if `D0.W = 0`, there are still entries to iterate over 229 | - if `D0.W < 0`, iteration is complete 230 | - if `D0.W > 0`, an error occurred (error code in lower 8 bits) 231 | - **Function:** 232 | - Iterates over the entries in the root directory of the CompactFlash card. 233 | - On the first call, the user should pass a nonzero value in `D0`, and should 234 | set `D0` to zero on subsequent calls. 235 | - `A0` should be a pointer to a temporary buffer. This can be in a fixed location 236 | or on the stack. Its contents should not be modified by application code during 237 | directory traversal. 238 | - After each call, `A1` points to a 32-byte [FAT16 directory entry](https://en.wikipedia.org/wiki/Design_of_the_FAT_file_system#Directory_entry). 239 | - Hidden files, deleted files, volume labels, and empty entries are skipped over. 240 | - **Example:** 241 | ``` 242 | ; set up buffer on stack 243 | link a6,#-DIRBUFSIZE 244 | move.l sp,a0 245 | moveq #-1,d0 ; d0 should be nonzero on first call 246 | ; loop over entries 247 | .loop: sys ListDirectory 248 | tst.w d0 249 | bmi .done 250 | bne .error 251 | ; do something with the directory entry here 252 | moveq #0,d0 ; d0 should be zero on subsequent calls 253 | bra .loop 254 | .done: ; all done 255 | .error: ; handle error 256 | unlk a6 ; deallocate temporary buffer 257 | ``` 258 | 259 | #### `TRAP #9` - `FindFile` - look up the named file in the root directory of the CompactFlash card 260 | - **Arguments:** 261 | - `A0.L` - pointer null-terminated 8.3 filename 262 | - `A1.L` - pointer to 32-byte buffer where the directory entry will be copied to 263 | - **Returns:** 264 | - `D0.B` - status code (0 on success, nonzero on error) 265 | - `A1.L` - preserved 266 | - **Function:** 267 | - Traverse the root directory until a file with the given name is found. 268 | Its directory entry is then copied into the 32-byte buffer pointed to by `A1`. 269 | - The filename should be specified as a DOS-style 8.3 filename (e.g. `FOO.TXT`) 270 | and is case-insensitive. Long filenames are not considered. 271 | - Hidden files are ignored. (this is a probably a bug) 272 | - **Example:** 273 | ``` 274 | ; print the size of the file named TEST.TXT 275 | lea.l fname,a0 276 | lea.l buf,a1 277 | sys FindFile 278 | move.l FSIZE(a1),-(sp) ; get file size from directory entry 279 | lea.l fmtstr,a0 280 | sys OutFmt ; print file size 281 | addq #4,sp 282 | fname: dc.b "TEST.TXT",0 283 | fmtstr: dc.b "FILE SIZE: ",FMT_U32," BYTES",0 284 | buf: dcb.b 32 285 | ``` 286 | 287 | 288 | #### `TRAP #10` - `ReadFile` - read the contents of the named file in the root directory of the CompactFlash card into memory 289 | - **Arguments:** 290 | - `A0.L` - pointer null-terminated 8.3 filename (case-insensitive) 291 | - `A1.L` - address where the file should be loaded into 292 | - `D0.L` - maximum number of bytes to load (passing -1 loads entire file) 293 | - **Returns:** 294 | - `D0.B` - status code (0 on success, nonzero on error) 295 | - `A0.L` - pointer to beginning of destination memory buffer (orig. value of `A1`) 296 | - `A1.L` - actual number of bytes loaded 297 | - **Function:** 298 | - Loads the full contents of the named file into memory. 299 | - The filename should be specified as a DOS-style 8.3 filename (e.g. `FOO.TXT`) 300 | and is case-insensitive. Long filenames are not considered. 301 | - Hidden files are ignored. (this is a probably a bug) 302 | - Does not return an error if the file is larger than the maximum number of 303 | bytes specified in `D0`. (this would be a nice enhancement to make it easier 304 | to detect cases where a file is too big) 305 | - **Example:** 306 | ``` 307 | ; print the first 32K of a file named TEST.TXT 308 | lea.l fname,a0 309 | lea.l buf,a1 310 | move.l #32768,d0 311 | sys ReadFile 312 | move.l d1,-(sp) ; number of bytes read 313 | move.l a0,-(sp) ; start of buffer 314 | lea.l fmtstr,a0 315 | sys OutFmt 316 | addq #8,sp 317 | fname: dc.b "TEST.TXT",0 318 | fmtstr: dc.b FMT_BUF,"\n",0 319 | buf: dcb.b 32768 320 | ``` 321 | 322 | 323 | #### `TRAP #11` - `GetDateTime` - read current date and time from the real-time clock 324 | - **Arguments:** 325 | - none 326 | - **Returns:** 327 | - `D0.L` - date 328 | - **bits 31-16:** year (four BCD digits) 329 | - **bits 15-8:** month (two BCD digits) 330 | - **bits 7-0:** date (two BCD digits) 331 | - `D1.L` - weekday and time 332 | - **bits 26-24:** weekday (one BCD digit) 333 | - **bits 23-16:** hour (two BCD digits) 334 | - **bits 15-8:** minute (two BCD digits) 335 | - **bits 7-0:** second (two BCD digits) 336 | - **Function:** 337 | - If no real-time clock is present, `D0` and `D1` will both equal 0. 338 | - If the time is not set (e.g. there has been a power failure), bit 31 of `D0` 339 | will be set. 340 | - **Example:** 341 | ``` 342 | ; print the date and time 343 | sys GetDateTime 344 | tst.l d0 345 | bmi .time_not_set 346 | beq .no_rtc 347 | lea.l fmtstr,a0 348 | movem.l d0-d1,-(sp) 349 | sys OutFmt 350 | addq #8,sp 351 | fmtstr: dc.b "DATE IS ",FMT_DATE," AND TIME IS ",FMT_TIME,"\n",0 352 | ``` 353 | 354 | #### `TRAP #12` - `SetDateTime` - set date and time 355 | - **Arguments:** 356 | - none 357 | - **Returns:** 358 | - `D0.L` - date 359 | - **bits 31-16:** year (four BCD digits) 360 | - **bits 15-8:** month (two BCD digits) 361 | - **bits 7-0:** date (two BCD digits) 362 | - `D1.L` - weekday and time 363 | - **bits 26-24:** weekday (one BCD digit) 364 | - **bits 23-16:** hour (two BCD digits) 365 | - **bits 15-8:** minute (two BCD digits) 366 | - **bits 7-0:** second (two BCD digits) 367 | - **Function:** 368 | - No validation of the date (bounds-checking fields, ensuring valid BCD) is performed. 369 | - **Example:** 370 | ``` 371 | ; set date and time to Monday, July 6, 2020, 12:34:56 372 | move.l #$01123456,d0 ; msb of 01 = Monday 373 | move.l #$20200706,d1 374 | sys SetDateTime 375 | ``` 376 | 377 | #### `TRAP #13` - `GetSysInfo` - get pointer to system information structure 378 | - **Arguments:** 379 | - none 380 | - **Returns:** 381 | - `A0.L` - pointer to system information structure in ROM 382 | - `0(A0).L` - CPU clock speed in Hz 383 | - `4(A0).L` - RAM size in bytes 384 | - `8(A0).L` - ROM size in bytes 385 | - `12(A0).L` - ROM date 386 | - `16(A0).W` - ROM major revision 387 | - `18(A0).W` - ROM minor revision 388 | - **Function:** 389 | - Allows application code to retrieve system information. 390 | 391 | 392 | #### `TRAP #14` - reserved 393 | 394 | 395 | #### `TRAP #15` - `Breakpoint` - enter the debugger 396 | - **Arguments:** 397 | - none 398 | - **Returns:** 399 | - none 400 | - **Function:** 401 | - Prints a register dump and enters the debugger. 402 | 403 | 404 | #### Input/output customization 405 | 406 | The longword-sized RAM locations `OUTCH_VEC` and `INCH_VEC` contain addressed of 407 | routines used for character output and input. These can be customized to allow 408 | input and output to be redirected. 409 | 410 | At boot, the vectors are initialized to routines that write to and read from 411 | the serial port. 412 | 413 | `OUTCH_VEC` should contain the address of a function that accepts the byte to 414 | be written in `D0`. It should preserve `A2-A7/D2-D7`. 415 | 416 | `INCH_VEC` should contain the address of a function that waits for a byte to 417 | become available and then returns it in `D0`. it should preserve `A2-A7/D2-D7`. 418 | 419 | Formatted output using the `OutFmt` system call can also be customized: 420 | - `HEXDIGITS` contains the address of a 16-character string containing the 421 | character set to use when printing hexadecimal numbers 422 | - `DATE_SEP` contains the byte used as a separator character between components 423 | when the `FMT_DATE` specifier is used. At boot, it defaults to hyphen `-`. 424 | - `TIME_SEP` contains the byte used as a separator character between components 425 | when the `FMT_TIME` specifier is used. At boot, it defaults to colon `:`. 426 | - `THOUSANDS_SEP` contains the byte used as a thousands grouping separator when 427 | printing signed and unsigned decimal values. At boot, it defaults to comma `,`. 428 | To suppress thousands separators, set it to ASCII NUL. (zero byte) 429 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | BSD 3-Clause License 2 | 3 | Copyright (c) 2020, Matt Sarnoff 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | 1. Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 12 | 2. Redistributions in binary form must reproduce the above copyright notice, 13 | this list of conditions and the following disclaimer in the documentation 14 | and/or other materials provided with the distribution. 15 | 16 | 3. Neither the name of the copyright holder nor the names of its 17 | contributors may be used to endorse or promote products derived from 18 | this software without specific prior written permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 23 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 24 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 26 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 27 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 28 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | -------------------------------------------------------------------------------- /PadRows.pretty/PadRow_1x25_P2.54mm.kicad_mod: -------------------------------------------------------------------------------- 1 | (module PadRow_1x25_P2.54mm (layer F.Cu) (tedit 5EF3A237) 2 | (fp_text reference REF** (at 0 -1.27) (layer F.SilkS) 3 | (effects (font (size 1 1) (thickness 0.15))) 4 | ) 5 | (fp_text value PadRow_1x25_P2.54mm (at 0 -1.27) (layer F.Fab) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (pad 1 smd oval (at -30.48 -3.81) (size 1.27 2.54) (layers F.Cu F.Paste F.Mask)) 9 | (pad 2 smd oval (at -27.94 -3.81) (size 1.27 2.54) (layers F.Cu F.Paste F.Mask)) 10 | (pad 3 smd oval (at -25.4 -3.81) (size 1.27 2.54) (layers F.Cu F.Paste F.Mask)) 11 | (pad 4 smd oval (at -22.86 -3.81) (size 1.27 2.54) (layers F.Cu F.Paste F.Mask)) 12 | (pad 5 smd oval (at -20.32 -3.81) (size 1.27 2.54) (layers F.Cu F.Paste F.Mask)) 13 | (pad 6 smd oval (at -17.78 -3.81) (size 1.27 2.54) (layers F.Cu F.Paste F.Mask)) 14 | (pad 7 smd oval (at -15.24 -3.81) (size 1.27 2.54) (layers F.Cu F.Paste F.Mask)) 15 | (pad 8 smd oval (at -12.7 -3.81) (size 1.27 2.54) (layers F.Cu F.Paste F.Mask)) 16 | (pad 9 smd oval (at -10.16 -3.81) (size 1.27 2.54) (layers F.Cu F.Paste F.Mask)) 17 | (pad 10 smd oval (at -7.62 -3.81) (size 1.27 2.54) (layers F.Cu F.Paste F.Mask)) 18 | (pad 11 smd oval (at -5.08 -3.81) (size 1.27 2.54) (layers F.Cu F.Paste F.Mask)) 19 | (pad 12 smd oval (at -2.54 -3.81) (size 1.27 2.54) (layers F.Cu F.Paste F.Mask)) 20 | (pad 13 smd oval (at 0 -3.81) (size 1.27 2.54) (layers F.Cu F.Paste F.Mask)) 21 | (pad 14 smd oval (at 2.54 -3.81) (size 1.27 2.54) (layers F.Cu F.Paste F.Mask)) 22 | (pad 15 smd oval (at 5.08 -3.81) (size 1.27 2.54) (layers F.Cu F.Paste F.Mask)) 23 | (pad 16 smd oval (at 7.62 -3.81) (size 1.27 2.54) (layers F.Cu F.Paste F.Mask)) 24 | (pad 17 smd oval (at 10.16 -3.81) (size 1.27 2.54) (layers F.Cu F.Paste F.Mask)) 25 | (pad 18 smd oval (at 12.7 -3.81) (size 1.27 2.54) (layers F.Cu F.Paste F.Mask)) 26 | (pad 19 smd oval (at 15.24 -3.81) (size 1.27 2.54) (layers F.Cu F.Paste F.Mask)) 27 | (pad 20 smd oval (at 17.78 -3.81) (size 1.27 2.54) (layers F.Cu F.Paste F.Mask)) 28 | (pad 21 smd oval (at 20.32 -3.81) (size 1.27 2.54) (layers F.Cu F.Paste F.Mask)) 29 | (pad 22 smd oval (at 22.86 -3.81) (size 1.27 2.54) (layers F.Cu F.Paste F.Mask)) 30 | (pad 23 smd oval (at 25.4 -3.81) (size 1.27 2.54) (layers F.Cu F.Paste F.Mask)) 31 | (pad 24 smd oval (at 27.94 -3.81) (size 1.27 2.54) (layers F.Cu F.Paste F.Mask)) 32 | (pad 25 smd oval (at 30.48 -3.81) (size 1.27 2.54) (layers F.Cu F.Paste F.Mask)) 33 | ) 34 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 68k nano 2 | 3 | A minimal single-board computer based on the venerable ["Texas Cockroach"](https://youtu.be/UaHtGf4aRLs?t=2074) 4 | Motorola 68000 16/32-bit microprocessor. 5 | 6 | ![Board image](/images/board.jpg) 7 | 8 | ## Features 9 | 10 | - 68HC000 processor running at 12MHz 11 | - 1MB RAM 12 | - 64KB ROM 13 | - 16550 UART providing a 5V FTDI serial port 14 | - 44-pin IDE connector for CompactFlash card adapter 15 | - Connector for SparkFun DS3234 real-time clock 16 | - Only two 74HC glue logic chips required 17 | 18 | This might be capable of running uClinux, but I haven't tried it! 19 | 20 | 21 | ## Hardware 22 | 23 | The 68k nano hardware is simple and straightforward. It can be built on a 24 | breadboard (though there may be stability issues at higher clock speeds). 25 | 26 | 27 | ### Memory map 28 | 29 | Due to the minimal address decoding circuitry, accessing certain memory regions 30 | will cause multiple devices to be selected. This should be avoided. 31 | 32 | ``` 33 | $000000-0xFFFF ROM (repeats 16 times) 34 | $100000-1FFFFF X Forbidden (multiple devices selected) 35 | $200000-2FFFFF ROM (mirror of $000000-0FFFFF) 36 | $300000-$7FFFF X Forbidden (multiple devices selected) 37 | $800000-8FFFFF Open bus (available for expansion) 38 | $900000-9xxxxF CompactFlash card 39 | $A00000-AxxxxF UART 40 | $B00000-BFFFFF X Forbidden (multiple devices selected) 41 | $C00000-CFFFFF RAM 42 | $D00000-DFFFFF X Forbidden (multiple devices selected) 43 | $E00000-EFFFFF RAM (mirror of $C00000-CFFFFF) 44 | $F00000-FFFFFF X Forbidden (multiple devices selected) 45 | ``` 46 | 47 | This is summarized with the following equations: 48 | 49 | ``` 50 | /ROMSEL = /A23 51 | /RAMSEL = A22 52 | /UARTSEL = A23 * /A22 * A21 53 | /CARDSEL = A20 54 | ``` 55 | 56 | 57 | ### I/O 58 | 59 | The 16550's modem control lines are used as a bit-banged SPI interface. A 7-pin 60 | header is provided for [SparkFun's "DeadOn" DS3234 real-time clock board](https://www.sparkfun.com/products/10160). 61 | Access to SPI is therefore achieved via the 16550's Modem Control Register and Line 62 | Status Register. 63 | 64 | A 2mm pitch 44-pin IDE connector is provided for storage devices. This is 65 | intended for CompactFlash card adapters (operating in 16-bit True IDE mode) but 66 | may also work with parallel ATA hard disks. (not tested) 67 | 68 | 69 | ### Interrupts 70 | 71 | All interrupt sources are routed through the 16550. All 16550 interrupts invoke 72 | the level 1 autovector (vector offset `$064`) and it is up to the software to 73 | determine the source of the interrupt. 74 | 75 | 76 | ### Building it 77 | 78 | `bom.txt` contains a bill of materials. As of this writing (July 2020), all 79 | components are available from major distributors like [Mouser](https://mouser.com) 80 | and [Jameco](https://jameco.com). If purchasing 68000s from eBay, note that [vintage 81 | ICs are a common target of counterfeiters](https://medium.com/supplyframe-hardware/the-underground-parts-store-identifying-counterfeit-computer-chips-3020adbb01f7). 82 | For this project I used [Toshiba TMP68HC000P-12 chips from Jameco](https://www.jameco.com/shop/ProductDisplay?catalogId=10001&langId=-1&storeId=10001&productId=2288039) and 83 | they work just fine. 84 | 85 | All parts are through-hole for that extra vintage feel. Note that some of the 86 | decoupling capacitors (C4, C5, C6, C8, and C10) are underneath ICs, so open-frame 87 | IC sockets are required. Large IC sockets can also be expensive (_especially_ 88 | DIP-64 sockets!) so a cheaper alternative is to use [breakaway SIP 0.1" machine-pin 89 | headers](https://www.amazon.com/dp/B0187LTEX2/ref=cm_sw_em_r_mt_dp_U_M5IbFbVJ3NVDH). 90 | 91 | Due to the spacing of the chips, Textool ZIF sockets won't fit. For the ROMs 92 | U5 and U7, [Aries 28-526-10 low-profile ZIF sockets](https://www.jameco.com/shop/ProductDisplay?catalogId=10001&langId=-1&storeId=10001&productId=102745) will fit, 93 | but _barely_. The release latch may scrape against the RAM IC to its north, 94 | but I've found that it's not a huge deal. 95 | 96 | You can use either a full-can or half-can oscillator for X1. Note that if using 97 | an oscillator with a frequency other than 12 MHz, you'll have to update the `F_CPU` 98 | value in the Makefile. (see below) Also note that, if using a 68HC000, the minimum 99 | clock frequency is 4 MHz. 100 | 101 | The 44-pin IDE header accepts a CompactFlash adapter board such as [this one](https://www.amazon.com/gp/product/B07Y2MTS13), available from Amazon and other vendors. 102 | 103 | 104 | ## Software 105 | 106 | This project uses the [vasm](http://sun.hasenbraten.de/vasm/) assembler and a 107 | standard Makefile. Python 3 and [PySerial](https://pythonhosted.org/pyserial/) 108 | are also required to upload programs to the computer via the serial port. The 109 | Makefile also contains rules for burning ROM images to AT28C256 EEPROMs using 110 | [minipro](https://gitlab.com/DavidGriffith/minipro/) if you have a [TL866II+](https://www.jameco.com/shop/ProductDisplay?catalogId=10001&langId=-1&storeId=10001&productId=2297823) 111 | programmer. (If you don't have a chip programmer, you should get a TL866II+, they 112 | are reasonably priced and available from a number of vendors.) 113 | 114 | 115 | ### Building it 116 | 117 | Running `make rom` will build the ROM image and split it into "odd" and "even" 118 | halves, `rom-l.bin` and `rom-u.bin`. Each file should be 32,768 bytes exactly. 119 | Running `make burnrom` will write these files to a pair of AT28C256 EEPROMs 120 | using minipro. 121 | 122 | **Note:** if using an oscillator with a frequency other than 12 MHz, change the 123 | value of `F_CPU` appropriately in the Makefile. 124 | 125 | The `BAUD` variable in the Makefile sets the baud rate of the serial interface. 126 | Use the included script `baudrate.py` to determine which baud rates are usable 127 | with a given oscillator frequency. 128 | 129 | 130 | ### ROM features 131 | 132 | The ROM is fairly minimal--it's closer to a bootloader than an operating system. 133 | It supports loading programs from the root directory of a FAT16-formatted 134 | CompactFlash card and some basic debugging functionality. It also provides a 135 | small set of system calls for I/O to simplify application programs. 136 | 137 | The power-up process is as follows: 138 | - Initialize serial port to 57600 baud, 8 data bits, no parity, 1 stop bit. 139 | - Test RAM. If a RAM failure occurs, the failed address is written to the serial 140 | port and the Status LED flashes rapidly. (This is prone to failure when running 141 | on a breadboard at higher clock speeds.) 142 | - Check for the real-time clock module. If found, print the current date and 143 | time to the serial port. 144 | - Check for a CompactFlash card, and attempt to mount the first partition if it 145 | is FAT16-formatted. 146 | - If the "ENTER" pushbutton is NOT held down: 147 | - If a valid card is inserted, check for a file in the root directory named 148 | `STARTUP.BIN`. If found, load it into RAM and execute it. 149 | - If `STARTUP.BIN` was not loaded, enter an interactive command shell. 150 | - If the "ENTER" pushbutton is held down, enter the interactive command shell 151 | and bypass execution of `STARTUP.BIN`. 152 | 153 | Example startup sequence (without `STARTUP.BIN`): 154 | ``` 155 | 68K NANO - ROM VERSION 00009900 (20200708) 156 | (C) 2020 MATT SARNOFF (MSARNOFF.ORG) 157 | TESTING RAM...PASSED 158 | 159 | RAM: 1,048,576 BYTES 160 | ROM: 65,536 BYTES 161 | CPU: 12,000,000 HZ 162 | TIME IS 2020-07-07 19:14:36 163 | CARD DETECTED: 250,608 KB 'NO NAME ' 164 | CANNOT LOAD STARTUP.BIN - FILE NOT FOUND 165 | 166 | TYPE ? [ENTER] FOR HELP. 167 | > 168 | ``` 169 | 170 | ### Command shell 171 | 172 | If `STARTUP.BIN` was not loaded, an interactive command shell is available via 173 | the serial port. (57600 baud, 8 data bits, no parity, 1 stop bit). Type `?` and 174 | press Enter for a list of supported commands. They are summarized briefly here. 175 | Note that commands and filenames are _case-insensitive_. 176 | 177 | - `.L` - list files in the root directory of the CompactFlash card. Long filenames 178 | and hidden files are not displayed. 179 | - `.I` - print low-level information about the filesystem on the CompactFlash card. 180 | - `.P file` - print the contents of the file named `file` in the root directory 181 | of the CompactFlash card as ASCII text. 182 | - `.H file` - print the contenxt of the file named `file` in the root directory 183 | of the CompactFlash card as a hexdump. 184 | - `.T` - print the current date and time as reported by the real-time clock module. 185 | - `.T YYYYMMDDWWhhmmss` - set the current date and time. The new date/time should 186 | be expressed as a string of 16 decimal digits with no separators. `WW` should 187 | be a 2-digit weekday between `01` and `07` inclusive. You can obtain the 188 | current date/time in this format with the Unix command `date "+%Y%m%d0%u%H%M%S"`. 189 | - `.D` - enter the debugger. 190 | - `file` - any other command is interpreted as a filename to be loaded from the 191 | root directory of the CompactFlash card and executed. Unlike MS-DOS, the file 192 | extension _is_ required. e.g. to execute the file named _foo.bin_, enter `FOO.BIN`. 193 | (`FOO` will attempt to load a file named _foo_ with no extension). 194 | 195 | 196 | ### Serial loader 197 | 198 | A break condition on the serial input line enters the serial loader, allowing 199 | programs to be uploaded to RAM from a host computer. The Python script `serload.py` 200 | and the Makefile rules `make load` and `make run` take care of this. 201 | 202 | 203 | ### Debugging 204 | 205 | A hardware exception causes a transfer into a basic debugger. The Status LED 206 | flashes rapidly and a register dump is printed to the serial port: 207 | 208 | ``` 209 | *ILLEGAL INSTRUCTION 210 | D0=00000064 D1=0000000A D2=00000038 D3=00000009 211 | D4=00000000 D5=00000000 D6=00000000 D7=00000000 212 | A0=00E0003C A1=00001D40 A2=00000000 A3=00F00000 213 | A4=00000000 A5=00000000 A6=000001E2 A7=00EFFFFA 214 | SR=-S0--Z-- PC=00001D3A USP=7F7EFFDF 215 | 216 | [A]BORT/[C]ONTINUE/[S]TEP? 217 | ``` 218 | 219 | Supported commands are: 220 | - `a` - abort execution and return to system. 221 | - `c` - (attempt to) continue execution. (the Trace bit is cleared) 222 | - `s` - set the Trace bit and single-step. 223 | 224 | `TRAP #15` is treated as a breakpoint instruction that also enters the debugger. 225 | 226 | 227 | ### API 228 | 229 | See `API.md` for a detailed description of the system calls provided by the ROM 230 | API and guidelines for application programs. 231 | 232 | 233 | ## Known issues and shortcomings 234 | 235 | - ROM is always present at the bottom of the address space, so the exception 236 | vectors cannot be overridden by application code. 237 | - Interrupt handling is a hack, since all interrupt sources go through the 16550. 238 | - Address decoding leaves little room for expansion. 239 | - System calls should set the condition codes to simplify application code. 240 | 241 | ## Future directions 242 | 243 | This is a small-scale project. I'm thinking about desiging a larger 68000 board 244 | in the future, so I probably won't continue working on this one. Here are some 245 | project ideas that I won't have time to tackle, but you're welcome to: 246 | 247 | - Running an existing 68k monitor like [TUTOR](http://www.easy68k.com/paulrsm/mecb/mecb.htm) 248 | or [zBug](http://www.kswichit.com/68k/68k.html). 249 | - Running a language like [EhBASIC](https://github.com/jefftranter/68000/tree/master/ehbasic) or a Forth. 250 | - Adding FAT16 write support. 251 | - Booting [uClinux](https://www.bigmessowires.com/2014/11/17/68-katy-68000-linux-on-a-solderless-breadboard/) like Steve Chamberlin did with [68 Katy](https://www.bigmessowires.com/category/68katy/). 252 | - Using the DS3234 real-time clock's SQW output to generate a periodic interrupt. 253 | (likely necessary for uClinux) 254 | 255 | 256 | ## About 257 | 258 | Open hardware, released under the terms of the 3-clause BSD license. 259 | 260 | Copyright 2020 Matt Sarnoff. 261 | 262 | http://twitter.com/txsector 263 | 264 | http://msarnoff.org 265 | -------------------------------------------------------------------------------- /bom.txt: -------------------------------------------------------------------------------- 1 | Ref Part Distributor SKU 2 | ---------------------------------------------------------------------------------------------------------- 3 | C1-C10 0.1uF decoupling capacitor (ceramic/monolithic) 4 | C11,C12 10uF electrolytic capacitor, 16V+ 5 | D1-D2 1N5817 Schottky diode (1N4148 also works) 6 | D3-D6 5mm LED (your choice of color) 7 | J1 USB-B PCB-mount right-angle connector Jameco 2096245 8 | J2 6-position 0.1" male right-angle header 9 | J3 (optional) 7-position 0.1" header 10 | J4 2x22 2mm header 11 | JP1 3-position 0.1" male straight header + jumper 12 | R1,R2 10k resistor, 1/4W 13 | R3 1k resistor, 1/4W 14 | R4-R7 Resistors for LEDs D3-D6 (330/1k) 15 | RN1 10k bussed resistor network (SIP-7) 16 | SW1,SW2 6mm tactile switch 17 | U1 74HC139 dual 2-to-4 line decoder (DIP-16) 18 | U2 74HC14 hex inverting Schmitt trigger (DIP-14) 19 | U3 68000 microprocessor (DIP-64) Jameco 2288039 20 | U4,U6 AS6C4008-55PCN 512Kx8 static RAM (DIP-32) Jameco 242448 Mouser 913-AS6C4008-55PCN 21 | U5,U7 AT28C256 32Kx8 EEPROM (DIP-28) Jameco 74843 Mouser 556-AT28C25615PU 22 | U8 TL16C550 UART (DIP-40) Jameco 288809 23 | X1 5V oscillator (DIP-8 or DIP-14) 24 | 25 | Optional peripherals 26 | -------------------- 27 | Low profile ZIF-28 sockets for U5/U7 - Jameco 102745 (Aries 28-526-10) 28 | SparkFun DeadOn RTC Breakout - https://www.sparkfun.com/products/10160 29 | CompactFlash to 2.5" 44-pin IDE adapter - https://www.amazon.com/gp/product/B07Y2MTS13 30 | -------------------------------------------------------------------------------- /code/68000app.inc: -------------------------------------------------------------------------------- 1 | include "68000sbc.inc" 2 | org APPMEMSTART 3 | -------------------------------------------------------------------------------- /code/68000sbc.inc: -------------------------------------------------------------------------------- 1 | include "memory.inc" 2 | include "macros.inc" 3 | include "uart.inc" 4 | include "cfcard.inc" 5 | include "syscalls.inc" -------------------------------------------------------------------------------- /code/Makefile: -------------------------------------------------------------------------------- 1 | # By default, use the first connected FTDI USB-serial cable we find. (macOS) 2 | # May be overridden by setting the $FTDI_DEV environment variable in your shell 3 | # configuration. 4 | FTDI_DEV ?= $(firstword $(wildcard /dev/cu.usbserial-*)) 5 | 6 | # Clock frequency in Hz 7 | F_CPU = 12000000 8 | # Serial baud rate 9 | BAUD = 57600 10 | 11 | # make - build test program 12 | # make load - load test program binary using serial loader 13 | TESTPROG = fizzbuzz 14 | 15 | # make rom - build ROM image 16 | # make burnrom - burn ROM image to EEPROMs using minipro 17 | ROM_SRC = rom.asm 18 | ROM_SREC = rom.srec 19 | ROM_LST = rom.lst 20 | ROM_BIN_L = rom-l.bin 21 | ROM_BIN_U = rom-u.bin 22 | ROM_DASM = rom-dasm.lst 23 | ROM_BIN = $(ROM_BIN_L) $(ROM_BIN_U) 24 | 25 | # Assembler and disassembler selection 26 | AS = vasmm68k_mot 27 | DAS = vda68k 28 | SERIALTERM = python3 -m serial.tools.miniterm --raw --eol LF 29 | 30 | # Assembler options 31 | # -nowarn=2028: don't warn when loading a constant >= 128 with moveq 32 | ASFLAGS = -esc -DF_CPU=$(F_CPU) -DBAUD=$(BAUD) -m68000 -nowarn=2028 33 | ASFLAGS_SREC = -Fsrec 34 | ASFLAGS_BIN = -Fbin 35 | 36 | #------------------------------------------------------------------------------- 37 | TESTPROG_SRC = $(TESTPROG).asm 38 | TESTPROG_BIN = $(TESTPROG).bin 39 | TESTPROG_LST = $(TESTPROG).lst 40 | 41 | .PHONY: all clean rom flashrom 42 | 43 | all: $(TESTPROG_BIN) 44 | 45 | $(TESTPROG_BIN): $(TESTPROG_SRC) 46 | $(AS) $(ASFLAGS) -o $@ $(ASFLAGS_BIN) -L $(TESTPROG_LST) $< 47 | 48 | load: $(TESTPROG_BIN) 49 | ./serload.py $< $(FTDI_DEV) 50 | 51 | run: load 52 | $(SERIALTERM) $(FTDI_DEV) $(BAUD) 53 | 54 | rom: $(ROM_BIN) 55 | 56 | serial: 57 | $(SERIALTERM) $(FTDI_DEV) $(BAUD) 58 | 59 | $(ROM_SREC): $(ROM_SRC) 60 | $(AS) $(ASFLAGS) -o $@ $(ASFLAGS_SREC) -L $(ROM_LST) $< 61 | 62 | # Even ROM (upper 8 bits, D15-D8) 63 | $(ROM_BIN_U): $(ROM_SREC) 64 | srec_cat $< -split 2 0 -o $@ -binary 65 | 66 | # Odd ROM (lower 8 bits, D7-D0) 67 | $(ROM_BIN_L): $(ROM_SREC) 68 | srec_cat $< -split 2 1 -o $@ -binary 69 | 70 | $(ROM_DASM): $(ROM_SREC) 71 | srec_cat $< -o $<.bin -binary 72 | $(DAS) $<.bin > $(ROM_DASM) 73 | 74 | clean: 75 | rm -f *.bin *.srec *.lst 76 | 77 | burnrom: rom 78 | @echo "Insert lower (odd) ROM and press Return:" 79 | @read 80 | @echo "Programming lower (odd) ROM" 81 | minipro -p AT28C256 -w $(ROM_BIN_L) 82 | @echo "Insert upper (even) ROM and press Return:" 83 | @read 84 | @echo "Programming upper (even) ROM" 85 | minipro -p AT28C256 -w $(ROM_BIN_U) 86 | @echo "Done" 87 | 88 | -------------------------------------------------------------------------------- /code/baudrate.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | # Baud rate calculator for 16550 UART 4 | 5 | import sys 6 | 7 | BASE_FREQ = 12_000_000 if len(sys.argv) < 2 else float(sys.argv[1]) 8 | #BASE_FREQ = 12_587_500 9 | PERCENT_ERROR_THRESHOLD = 3.0 10 | 11 | STANDARD_RATES = [ 12 | 230400, 13 | 115200, 14 | 57600, 15 | 38400, 16 | 28800, 17 | 19200, 18 | 14400, 19 | 9600, 20 | 7200, 21 | 4800, 22 | 3600, 23 | 2400, 24 | 1800, 25 | 1200 26 | ] 27 | 28 | def percent_error(actual, expected): 29 | return abs((actual-expected)/expected)*100 30 | 31 | print(f'Baud rate divisors for base frequency of {BASE_FREQ/1_000_000:.6f} MHz:') 32 | for rate in STANDARD_RATES: 33 | divisor = BASE_FREQ/(16*rate) 34 | divisor_rounded = round(divisor) 35 | actual = BASE_FREQ/divisor_rounded/16 36 | pct_err = percent_error(actual, rate) 37 | label = '✅' if pct_err <= PERCENT_ERROR_THRESHOLD else '❌' 38 | print(f'{label} {rate:6} baud: divisor={divisor_rounded:<5} (actual={actual:.3f} baud, error={pct_err:.2f}%)') 39 | 40 | 41 | -------------------------------------------------------------------------------- /code/cfcard.inc: -------------------------------------------------------------------------------- 1 | ; vim:noet:sw=8:ts=8:sts=8:ai:syn=asm68k 2 | 3 | ; base address 4 | CFCARD equ $900000 5 | 6 | ; task file register offsets 7 | CF_DATA equ 0 ; data register (16-bit read/write) 8 | CF_ERROR equ 3 ; error register (8-bit read) 9 | CF_FEATURE equ 3 ; feature register (8-bit write) 10 | CF_COUNT equ 5 ; sector count register (8-bit read/write) 11 | CF_SECTOR equ 7 ; sector number register (8-bit read/write) 12 | CF_LBA0 equ 7 ; also, LBA bits 7-0 13 | CF_CYLL equ 9 ; cylinder low register (8-bit read/write) 14 | CF_LBA1 equ 9 ; also, LBA bits 15-8 15 | CF_CYLH equ 11 ; cylinder high register (8-bit read/write) 16 | CF_LBA2 equ 11 ; also, LBA bits 23-16 17 | CF_DRIVEHEAD equ 13 ; drive select/head register (8-bit read/write) 18 | CF_LBA3 equ 13 ; also, LBA bits 27-24 19 | CF_STATUS equ 15 ; status register (8-bit read) 20 | CF_COMMAND equ 15 ; command register (8-bit write) 21 | 22 | ; task file register offsets for word access 23 | CF_ERROR_W equ CF_ERROR-1 24 | CF_FEATURE_W equ CF_FEATURE-1 25 | CF_COUNT_W equ CF_COUNT-1 26 | CF_SECTOR_W equ CF_SECTOR-1 27 | CF_LBA0_W equ CF_LBA0-1 28 | CF_CYLL_W equ CF_CYLL-1 29 | CF_LBA1_W equ CF_LBA1-1 30 | CF_CYLH_W equ CF_CYLH-1 31 | CF_LBA2_W equ CF_LBA2-1 32 | CF_DRIVEHEAD_W equ CF_DRIVEHEAD-1 33 | CF_LBA3_W equ CF_LBA3-1 34 | CF_STATUS_W equ CF_STATUS-1 35 | CF_COMMAND_W equ CF_COMMAND-1 36 | 37 | ; commands 38 | CFCMD_IDENTIFY equ $EC 39 | CFCMD_RDSECTOR equ $20 40 | 41 | ; errors 42 | ; if bit 5 is clear, it's an error reported by the card 43 | ; if bit 5 is set, it's a filesystem error 44 | FSERR_TIMEOUT equ 32 ; no card detected 45 | FSERR_WRONGTYPE equ 33 ; filesystem is not FAT16 46 | FSERR_BPS equ 34 ; bytes per sector is not 512 47 | FSERR_NMOUNTED equ 35 ; filesystem not mounted 48 | FSERR_NOTFOUND equ 36 ; file not found 49 | FSERR_INVCLSTR equ 37 ; invalid cluster number 50 | FSERR_BADSECTOR equ 38 ; cluster contains a bad sector 51 | FSERR_INVNAME equ 39 ; invalid filename 52 | FSERR_ISDIR equ 40 ; file is a directory 53 | 54 | ; Size of a sector. Hardcoded. 55 | ; Drives with a different sector size are not supported. 56 | SECTORSIZE equ 512 57 | ; Size of the buffer required for directory listing 58 | DIRBUFSIZE equ SECTORSIZE+8 59 | ; Size of a FAT16 directory entry 60 | DIRENTLEN equ 32 61 | 62 | ; FAT16 directory entry field offsets 63 | FNAME equ 0 64 | FNAMELEN equ 11 65 | FATTRS equ 11 66 | FCLUSTER equ 26 67 | FSIZE equ 28 68 | -------------------------------------------------------------------------------- /code/fizzbuzz.asm: -------------------------------------------------------------------------------- 1 | ; vim:noet:sw=8:ts=8:sts=8:ai:syn=asm68k 2 | ; 3 | ; Naive implementation of FizzBuzz. (uses DIVU instruction) 4 | 5 | include "68000app.inc" 6 | 7 | start: sys WaitBtn 8 | 9 | moveq #1,d3 ; counter 10 | .loop: 11 | moveq #0,d2 ; flag 12 | ; compute modulo 3 13 | move.l d3,d0 14 | divu.w #3,d0 15 | swap d0 ; ignore quotient, get remainder 16 | tst.w d0 17 | bne .1 ; don't print "Fizz" if remainder is nonzero 18 | litstr "Fizz" 19 | sys OutStr 20 | addq.w #1,d2 ; set flag 21 | .1: ; compute modulo 5 22 | move.l d3,d0 23 | divu.w #5,d0 24 | swap d0 ; ignore quotient, get remainder 25 | tst.w d0 26 | bne .2 ; don't print "Buzz" if remainder is nonzero 27 | litstr "Buzz" 28 | sys OutStr 29 | addq #1,d2 ; set flag 30 | .2: ; if flag not set, print value as decimal 31 | tst.w d2 32 | bne .3 33 | move.w d3,-(sp) 34 | litstr FMT_U16,0 35 | sys OutFmt 36 | addq #2,sp 37 | .3: moveq #$0a,d0 ; print newline 38 | sys OutChar 39 | addq #1,d3 40 | led_tgl 41 | move.l #$40000,d0 42 | bsr delay 43 | bra .loop 44 | 45 | 46 | ; delay by number of loop iterations in d0 (32-bit) 47 | delay: subq.l #1,d0 48 | bne delay 49 | rts 50 | -------------------------------------------------------------------------------- /code/hello.asm: -------------------------------------------------------------------------------- 1 | ; vim:noet:sw=8:ts=8:sts=8:ai:syn=asm68k 2 | include "68000app.inc" 3 | start: sys WaitBtn 4 | led_tgl 5 | lea.l str,a0 6 | sys OutStr 7 | bra start 8 | str: dc.b "hello world!!\n",0 9 | -------------------------------------------------------------------------------- /code/idle.asm: -------------------------------------------------------------------------------- 1 | ; vim:noet:sw=8:ts=8:sts=8:ai:syn=asm68k 2 | include "68000app.inc" 3 | ; slowly fade the LED in and out to indicate we're ready 4 | animate_led: 5 | fadespeed equ 6 6 | moveq #0,d1 ; duty cycle 7 | moveq #fadespeed,d2 ; number of periods with given duty cycle 8 | led_on 9 | .cycle: move.l #255,d0 10 | led_tgl 11 | .loop: cmp.b d0,d1 ; invert LED waveform when count == duty cycle value 12 | bne .1 13 | led_tgl 14 | .1: dbra d0,.loop 15 | dbra d2,.cycle 16 | ; increment duty cycle 17 | addq #1,d1 18 | ; when duty cycle == 0, invert waveform (change fade direction) 19 | cmp.b #0,d1 20 | bne .2 21 | led_tgl 22 | .2: moveq #fadespeed,d2 23 | bra .cycle 24 | -------------------------------------------------------------------------------- /code/macros.inc: -------------------------------------------------------------------------------- 1 | ; breakpoint (68000 does not have the BKPT instruction) 2 | brk macro 3 | trap #15 4 | endm 5 | 6 | ; set overflow flag 7 | sev macro 8 | or #%00000010,ccr 9 | endm 10 | 11 | ; clear overflow flag 12 | clv macro 13 | and #%11111101,ccr 14 | endm 15 | 16 | ; convenience alias for saving registers on stack 17 | pushm macro 18 | if NARG>1 19 | fail multiple args passed to pushm--did you use a comma instead of a slash? 20 | endif 21 | movem.l \1,-(sp) 22 | endm 23 | push macro 24 | if NARG>1 25 | fail multiple args passed to push--use pushm if you want to push multiple registers 26 | endif 27 | move.l \1,-(sp) 28 | endm 29 | 30 | ; convenience alias for restoring registers from stack 31 | popm macro 32 | if NARG>1 33 | fail multiple args passed to popm--did you use a comma instead of a slash? 34 | endif 35 | movem.l (sp)+,\1 36 | endm 37 | pop macro 38 | if NARG>1 39 | fail multiple args passed to pop--use popm if you want to pop multiple registers 40 | endif 41 | move.l (sp)+,\1 42 | endm 43 | 44 | ; Branch to subroutine and link, storing return address in A6. 45 | ; (An optimization for calling leaf functions, a la Arm) 46 | bl macro 47 | lea (.ret\@,pc),a6 48 | bra \1 49 | .ret\@: 50 | endm 51 | 52 | ; Spin for a given number of iterations. (0-65535) 53 | ; (clobbers d0) 54 | spin macro 55 | move.l #\1,d0 56 | .spin\@: dbra d0,.spin\@ 57 | endm 58 | 59 | ; Return from subroutine to address in A6. 60 | rl macro 61 | jmp (a6) 62 | endm 63 | 64 | ; Declare null-terminated string. 65 | asciz macro 66 | rept \# 67 | dc.b \+ 68 | endr 69 | dc.b 0 70 | even 71 | endm 72 | 73 | ; Declare null-terminated string inline, place its address in A0, and jump 74 | ; over it. 75 | litstr macro 76 | lea.l (.str\@,pc),a0 77 | bra .next\@ 78 | .str\@: 79 | rept \# 80 | dc.b \+ 81 | endr 82 | dc.b 0 83 | even 84 | .next\@: 85 | endm 86 | 87 | ; Status register bit offsets 88 | SR_C equ 0 ; carry flag 89 | SR_V equ 1 ; overflow flag 90 | SR_Z equ 2 ; zero flag 91 | SR_N equ 3 ; negative flag 92 | SR_X equ 4 ; extend flag 93 | SR_I equ 8 ; interrupt mask 94 | SR_S equ 13 ; supervisor mode flag 95 | SR_T equ 15 ; trace flag 96 | ; Condition code register (lower byte of status register) bit offsets 97 | CCR_C equ SR_C 98 | CCR_V equ SR_V 99 | CCR_Z equ SR_Z 100 | CCR_N equ SR_N 101 | CCR_X equ SR_X 102 | 103 | LOUD_NOISES macro 104 | move.l #$d0d0dd00,d0 105 | move.l #$d1d1dd11,d1 106 | move.l #$d2d2dd22,d2 107 | move.l #$d3d3dd33,d3 108 | move.l #$d4d4dd44,d4 109 | move.l #$d5d5dd55,d5 110 | move.l #$d6d6dd66,d6 111 | move.l #$d7d7dd77,d7 112 | move.l #$a0a0aa00,a0 113 | move.l #$a1a1aa11,a1 114 | move.l #$a2a2aa22,a2 115 | move.l #$a3a3aa33,a3 116 | move.l #$a4a4aa44,a4 117 | move.l #$a5a5aa55,a5 118 | move.l #$a6a6aa66,a6 119 | endm -------------------------------------------------------------------------------- /code/memory.inc: -------------------------------------------------------------------------------- 1 | ; vim:noet:sw=8:ts=8:sts=8:ai:syn=asm68k 2 | 3 | ROMSIZE equ $010000 ;64KB 4 | RAMSIZE equ $100000 ;1MB 5 | RAMEND equ RAM+RAMSIZE 6 | INITIAL_SP equ RAMEND 7 | ;------------------------------------------------------------------------------- 8 | ; Base addresses 9 | ROM equ $000000 10 | RAM equ $E00000 11 | ;------------------------------------------------------------------------------- 12 | ; Memory reserved for the system 13 | SYSMEMSTART equ RAM 14 | SYSMEMSIZE equ 256 15 | rsset SYSMEMSTART 16 | OUTCH_VEC rs.l 1 17 | INCH_VEC rs.l 1 18 | HEXDIGITS rs.l 1 19 | SEPARATORS rs.l 1 20 | DATE_SEP equ SEPARATORS 21 | TIME_SEP equ SEPARATORS+1 22 | THOUSANDS_SEP equ SEPARATORS+2 23 | 24 | ; Mounted filesystem parameters 25 | PARTSIZE rs.l 1 ; size of the partition in sectors, 0 = not mounted (4 bytes) 26 | BPBSECTOR rs.l 1 ; sector number of the partition's BIOS Parameter Block (4 bytes) 27 | ; These parameters are in reverse order of those in the BPB, 28 | ; because they are little-endian quantities that need to be byte-swapped 29 | FATSIZE rs.w 1 ; size of a FAT in sectors (2 bytes) 30 | MAXRDIRENTS rs.w 1 ; maximum number of root directory entries (2 bytes) 31 | FATCOPIES rs.w 1 ; number of FATs (padded to 2 bytes) 32 | RSVDSECTORS rs.w 1 ; number of reserved sectors (2 bytes) 33 | CLUSTERSIZE rs.w 1 ; number of sectors per cluster (2 bytes) 34 | RDIRSECTOR rs.l 1 ; sector number of root directory table (4 bytes) 35 | FATSECTOR rs.l 1 ; sector number of FAT #1 (4 bytes) 36 | DATASTART rs.l 1 ; sector number of data region start (4 bytes) 37 | VOLNAME rs.b 12 ; volume label (11 bytes, one extra for padding) 38 | FSVARSTART equ PARTSIZE 39 | FSVARLEN equ VOLNAME-FSVARSTART+12 40 | 41 | INPUTBUFLEN equ 64 42 | INPUTBUF rs.b INPUTBUFLEN+2 ; command input buffer 43 | 44 | ;------------------------------------------------------------------------------- 45 | ; Application programs can be loaded here 46 | APPMEMSTART equ SYSMEMSTART+SYSMEMSIZE 47 | 48 | -------------------------------------------------------------------------------- /code/serload.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | # Very basic serial loader. 4 | # Does no checking/verification that the upload succeeded 5 | # Code is always loaded into the same location in RAM. (APPMEMSTART) 6 | # 7 | # protocol is: 8 | # - host (this script) sends break condition 9 | # - target (the board) replies with ASCII U 10 | # - host sends entire binary image 11 | # - host sends break condition 12 | # - target reboots 13 | 14 | import serial 15 | import sys 16 | import time 17 | 18 | BAUD = 57600 19 | 20 | if len(sys.argv) != 3: 21 | print('usage: serload.py ') 22 | sys.exit(1) 23 | 24 | with open(sys.argv[1], 'rb') as infile: 25 | ser = serial.Serial(sys.argv[2], BAUD, timeout=1) 26 | # enter loader 27 | ser.send_break() 28 | # wait for acknowledge 29 | ack = ser.read(1) 30 | if ack != b'U': 31 | raise IOError('device did not acknowledge') 32 | # write bytes 33 | ser.write(infile.read()) 34 | ser.flush() 35 | # additional delay sometimes required when sending short files 36 | # on macOS (dee to closing the serial port too soon? 37 | time.sleep(1) 38 | # send a break to finish 39 | ser.send_break() 40 | 41 | -------------------------------------------------------------------------------- /code/syscalls.inc: -------------------------------------------------------------------------------- 1 | ; Calling conventions for system routines 2 | ;------------------------------------------------------------------------------- 3 | ; D0-D1 - integer arguments 4 | ; A0-A1 - pointer arguments 5 | ; Additional arguments passed on the stack. 6 | ; 7 | ; D0-D1 - integer return values 8 | ; A0-A1 - pointer return values 9 | ; D2-D7 - preserved 10 | ; A2-A7 - preserved 11 | ; SR - preserved 12 | ; 13 | ; Registers D0-D1/A0-A1 not used for return values may have undefined contents 14 | ; upon return to the caller. (i.e. the callee may use them as scratch registers) 15 | ; 16 | ; The caller is responsible for removing arguments passed on the stack. 17 | ; 18 | Exit equ 0 19 | WaitBtn equ 1 20 | OutChar equ 2 21 | OutStr equ 3 22 | OutFmt equ 4 23 | InChar equ 5 24 | PromptStr equ 6 25 | ReadSector equ 7 26 | ListDirectory equ 8 27 | FindFile equ 9 28 | ReadFile equ 10 29 | GetDateTime equ 11 30 | SetDateTime equ 12 31 | GetSysInfo equ 13 32 | ; 14 - reserved for future use 33 | Breakpoint equ 15 34 | 35 | 36 | ; Syscall macro. 37 | sys macro 38 | trap #\1 39 | endm 40 | 41 | ; format specifiers for OutFmt 42 | FMT_BASE equ $E0 43 | FMT_C equ FMT_BASE+0 ;pop word and print lsb as an ASCII character 44 | FMT_C2 equ FMT_BASE+1 ;pop word and print as two ASCII characters 45 | FMT_C4 equ FMT_BASE+2 ;pop longword and print as four ASCII characters 46 | FMT_H8 equ FMT_BASE+3 ;pop word and print lsb as two hex digits 47 | FMT_H16 equ FMT_BASE+4 ;pop word and print as four hex digits 48 | FMT_H32 equ FMT_BASE+5 ;pop longword and print as eight hex digits 49 | FMT_S equ FMT_BASE+6 ;pop longword and print null-terminated ASCII string at address 50 | FMT_U8 equ FMT_BASE+7 ;pop word and print lsb as 1-3 decimal digits (unsigned) 51 | FMT_U16 equ FMT_BASE+8 ;pop word and print as 1-5 decimal digits (unsigned) 52 | FMT_U32 equ FMT_BASE+9 ;pop longword and print as 1-10 decimal digits (unsigned) 53 | FMT_D8 equ FMT_BASE+10 ;pop word and print lsb as 1-3 decimal digits (signed) 54 | FMT_D16 equ FMT_BASE+11 ;pop word and print as 1-5 decimal digits (signed) 55 | FMT_D32 equ FMT_BASE+12 ;pop longword and print as 1-10 decimal digits (signed) 56 | FMT_Z8 equ FMT_BASE+13 ;pop word and print lsb as 5 decimal digits with leading zeros (unsigned) 57 | FMT_Z16 equ FMT_BASE+14 ;pop word and print as 3 decimal digits with leading zeros (unsigned) 58 | FMT_Z32 equ FMT_BASE+15 ;pop longword and print as 10 decimal digits with leading zeros (unsigned) 59 | FMT_SRFLAGS equ FMT_BASE+16 ;pop word and print as status register flags 60 | FMT_FAULTFLAGS equ FMT_BASE+17 ;pop word and print as bus/address error fault flags 61 | FMT_DATE equ FMT_BASE+18 ;pop longword and print as date (YYYY/MM/DD) 62 | FMT_TIME equ FMT_BASE+19 ;pop longword and print as time (HH:MM:SS) 63 | FMT_HEXDUMP equ FMT_BASE+20 ;pop longword length and longword address, print as hex dump 64 | FMT_BUF equ FMT_BASE+21 ;pop longword length and longword address, print as ASCII 65 | FMT_FNAME equ FMT_BASE+22 ;pop longword address and print 11 characters as a decoded filename 66 | FMT_ERR equ FMT_BASE+23 ;pop word and print description of the error code in the lsb 67 | 68 | ; option flags for PromptStr 69 | PRbNOECHO equ 8 70 | PRbNOCTRLCHARS equ 9 71 | 72 | PR_NOECHO equ (1<