Initialize the 8-bit computer memory with a program to be executed automatically on powering.

Overview

Initialize the 8-bit computer memory with a program to be executed automatically on powering. This project is small extension of Ben Eater's computer (SAP-1 architecture).

This picture is the animated picture, wait for it.

Motivation

The goal of the project is to have an option of hanging the 8-bit computer on a wall, connect it to a power supply and see how a program is executed automatically without manually programming the memory.

The picture is lent from this Reddit thread.

Setup

The program was tested with the following systems:

  • macOS Big Sur:
    • Arduino Nano:
      • Board — Arduino Nano.
      • Processor — ATmega328P (Old Bootloader).
      • Programmer — Arduino as ISP.

Instructions

Software

Clone the repository with the following command:

$ git clone [email protected]:dmytrostriletskyi/8-bit-computer-memory-init.git
$ cd 8-bit-computer-memory-init

By default, the Fibonacci number program is defined in the code file on 28th line in the exact same way it's done by Ben Eater in his video. If you want to change it, open the code file and change the program, otherwise skip this step:

$ vim +28 program.ino

Copy the program to the Arduino sketchbook folder with the following command:

$ mkdir ~/Documents/Arduino/program && cp program.ino ~/Documents/Arduino/program

Then connect Arduino to a computer, open and upload the sketch.

Schema

The wiring schema is illustrated below according to the following matching:

  • A1 — the chip right from run or programming mode switch.
  • A2 — the chip right from writting to memory button.
  • A3 — the chip right from resetting computer button.
  • D2-D9 — the chips right from the DIP switches for memory values.
  • D10-D13 — the chip right from the DIP switches for memory address.

You might also like...
A single file drop-in memory leak tracking solution for C++ on Windows

MemLeakTracker A single file drop-in memory leak tracking solution for C++ on Windows This small piece of code allows for global memory leak tracking

Dump the memory of a PPL with a userland exploit
Dump the memory of a PPL with a userland exploit

PPLdump This tool implements a userland exploit that was initially discussed by James Forshaw (a.k.a. @tiraniddo) - in this blog post - for dumping th

Implementation of System V shared memory (a type of inter process communication) in xv6 operating system.

NOTE: we have stopped maintaining the x86 version of xv6, and switched our efforts to the RISC-V version (https://github.com/mit-pdos/xv6-riscv.git)

An In-memory Embedding of CPython

An In-memory Embedding of CPython This repository contains all the build artifacts necessary to build an embedding of CPython 3.8.2 that can be run en

Execute MachO binaries in memory using CGo

Execute Thin Mach-O Binaries in Memory This is a CGo implementation of the initial technique put forward by Stephanie Archibald in her blog, Running E

Artifacts of that Memory Management Tsoding Session
Artifacts of that Memory Management Tsoding Session

Artifacts of those Memory Management Tsoding Sessions Quick Start $ make $ ./heap Limitations The pointers to the heap can only be located in the heap

PoC for CVE-2021-32537: an out-of-bounds memory access that leads to pool corruption in the Windows kernel.
PoC for CVE-2021-32537: an out-of-bounds memory access that leads to pool corruption in the Windows kernel.

CVE-2021-32537: Out-of-bounds access in RTKVHD64 leading to pool corruption. This is a bug that I reported to Realtek beginning of April 2021. The aff

A simple windows driver that can read and write to process memory from kernel mode

ReadWriteProcessMemoryDriver A simple windows driver that can read and write to process memory from kernel mode This was just a small project for me t

Modern C++ 32bit Windows Process Memory Library.
Modern C++ 32bit Windows Process Memory Library.

basil Simple 32-bit Windows Process Memory Library. Written in Modern C++. JavaScript bindings basil (wilL) be available as bindings for JavaScript. C

Comments
  • Wrong connection for pin D2

    Wrong connection for pin D2

    Hi friend,

    thank you for your project. I built this loader and it is very good - easy, cheap, functional!

    I just noticed an error in the schema. Arduino pin D2 must be connected to pin 11 on the 74LS157 that controls bits 0-3 of RAM data. The schema incorrectly connects D2 to pin 10.

    Edit: I also suggest that it's better to add a note to the readme that all dip-switches should be set to the on/up/open position, in order to avoid that Arduino pins get shorted to ground. It this correct?

    Ciao, Andrea

    opened by andreamazzai 0
Owner
Dmytro Striletskyi
Dmytro Striletskyi
The Hoard Memory Allocator: A Fast, Scalable, and Memory-efficient Malloc for Linux, Windows, and Mac.

The Hoard Memory Allocator Copyright (C) 1998-2020 by Emery Berger The Hoard memory allocator is a fast, scalable, and memory-efficient memory allocat

Emery Berger 920 Nov 20, 2022
Custom memory allocators in C++ to improve the performance of dynamic memory allocation

Table of Contents Introduction Build instructions What's wrong with Malloc? Custom allocators Linear Allocator Stack Allocator Pool Allocator Free lis

Mariano Trebino 1.4k Nov 21, 2022
MMCTX (Memory Management ConTeXualizer), is a tiny (< 300 lines), single header C99 library that allows for easier memory management by implementing contexts that remember allocations for you and provide freeall()-like functionality.

MMCTX (Memory Management ConTeXualizer), is a tiny (< 300 lines), single header C99 library that allows for easier memory management by implementing contexts that remember allocations for you and provide freeall()-like functionality.

A.P. Jo. 4 Oct 2, 2021
Memory-dumper - A tool for dumping files from processes memory

What is memory-dumper memory-dumper is a tool for dumping files from process's memory. The main purpose is to find patterns inside the process's memor

Alexander Nestorov 31 Nov 9, 2022
A memory allocation program, it is used for doing an experiment to find out the detail of Microsoft Windows taskmgr performance information

memory-allocation-test A memory allocation program, it is used for doing an experiment to find out the detail of Microsoft Windows taskmgr performance

Chang Wei 5 Jul 28, 2022
STL compatible C++ memory allocator library using a new RawAllocator concept that is similar to an Allocator but easier to use and write.

memory The C++ STL allocator model has various flaws. For example, they are fixed to a certain type, because they are almost necessarily required to b

Jonathan Müller 1.2k Nov 22, 2022
Public domain cross platform lock free thread caching 16-byte aligned memory allocator implemented in C

rpmalloc - General Purpose Memory Allocator This library provides a public domain cross platform lock free thread caching 16-byte aligned memory alloc

Mattias Jansson 1.7k Nov 22, 2022
OpenXenium JTAG and Flash Memory programmer

OpenXenium JTAG and Flash Memory programmer * Read: "Home Brew" on ORIGINAL XBOX - a detailed article on why and how * The tools in this repo will all

Koos du Preez 29 Oct 23, 2022
manually map driver for a signed driver memory space

smap manually map driver for a signed driver memory space credits https://github.com/btbd/umap tested system Windows 10 Education 20H2 UEFI installati

ekknod 88 Nov 19, 2022
Memory instrumentation tool for android app&game developers.

Overview LoliProfiler is a C/C++ memory profiling tool for Android games and applications. LoliProfiler supports profiling debuggable applications out

Tencent 482 Nov 25, 2022