06 Jan 2026
In my previous post, I announced that build of Ben Eater’s 8-bit
Computer is done. That means it is now time to put it
through its paces!
My goal is to develop a sequence of programs that will test every opcode that
is available to us in the basic instruction set.
The total instruction set includes:
-
LDI x: Load the value x directly into the A-register
-
LDA x: Load the value specified at address x into the A-Register
-
STA x: Store the value in the A-register into memory location x
-
HLT: Stops program execution
-
OUT: Prints the value in the A-register to the display
-
ADD x: Adds the value stored in memory location x to the value in the
A-Register and store the result in the A-register.
-
SUB x: Subtracts the value tored in memory location x from the value in
the A-Register and store the result in the A-register.
-
JMP x: Continue program execution at address x.
-
JZ x: Continue program execution at address x if the Zero-bit is set in the flags.
-
JC x: Continue program execution at address x if the Carry-bit is set in the flags.
Program 1
0: LDA [14]
1: ADD [15]
2: OUT
3: HLT
14: #28
15: #14
This program test: LDA, ADD, OUT, and HLT. If you enter the program and get
the value 42 printed on the display when you run it, those instructions work.
This is the program that Ben uses in his videos.
Program 2
0: LDI #1 ; 0101 0001
1: OUT ; 1110 0001
2: ADD [15] ; 0010 1111
3: JMP 1 ; 0110 0001
15: 0000 0001
Start counting at 1 and increment the counter each time the program loops.
This program adds tests for LDI and JMP. If your program starts counting at 1, shows the
value on the display, and then continues to the next number, the instructions
work.
Program 3
0: LDI #15 ; 0101 1111
1: OUT ; 1110 0001
2: SUB [15] ; 0011 1111
3: JZ 0 ; 1000 0000
4: JMP 1 ; 0110 0001
15: 0000 0001
Start counting at 15 and count down to 0. When the counter reaches 0, start
back at 15. After each counter update, show the result on the display.
This program adds tests for SUB and JZ. The expected behavior is that
you’ll see the counter count down from 15 to 0 (inclusive) and then restart at
Program 4
0: LDI #10 ; 0101 1010
1: STA #15 ; 0100 1111
2: LDI #5 ; 0101 0101
3: LDA #15 ; 0001 1111
4: OUT ; 1110 1111
5: HLT ; 1111 1111
I couldn’t really come up with a fancy one, so I kept it simple. This programs
loads the value 10 into the A-register, and the stores it at memory address 15.
It then changes the A-register to 5, followed by retrieving address 15 and
storing it into the A-register. Lastly, the program ends.
This program adds tests for STA. If the display shows the number 5, there is
a problem. If it shows the number 10, we’re all good to go.
UPDATE: I forgot to check for JC. To be continued!
03 Jan 2026
It is alive!
The 8-bit computer works! Well– in any case: some parts of it do.
The program that Ben uses in his videos works! It outputs 42 (as it should)
0: LDA [14]
1: ADD [15]
2: OUT
3: HLT
14: #28
15: #14
That means that the commands: LDA, ADD, OUT, HLT are implemented correctly!
In addition to my previous lessons-learned, here are some more insights:
-
Build using the schematics. Using the videos is fine as reference, but they
should not lead.
-
Redraw the schematics if you make changes to the circuits. For example, you
want to do this if you switch out components. I used KiCad.
-
Don’t be afraid to mark up schematics. I marked them quite a bit. Sometimes
with ‘L’ and ‘R’ to denote components (left or right), or with arrows to
denote direction of data flow. It helps understand what’s actually going on,
which is necessary to troubleshoot.
For example:


-
Pull all unused inputs high or low so that the corresponding output is high.
I used 10k resistors.
-
Pull all outputs on the microcode EEPROMs high or low. Active low control
signals get pulled high; active high control signals get pulled low. I used
10k resistors.
-
Add current-limiting resistors to all LEDs. I forgot the program counter
ones, which caused their 74LS245 to not behave nicely. This does mean that
you’ll have to move stuff around on the board; there simply isn’t enough
space to put LEDs with the current-limiting resistors to keep them where Ben
has them in his videos.

-
Don’t skip any wires ;) It took quite a bit of troubleshooting to realize
that I never connected the 74LS283s in the ALU to the A-register. Oops.
-
When you get to the stage that you have all of the boards in use, hot-glue
them to a piece of 1/8” plywood. That allows you to move your project
without worrying that things are going to shift. I made mine to be the
height of the computer, but gave myself about 10” in either side (left,
right) so I can move my pliers, multimeter, etc. with the project.
What’s next?
Write code to test all the instructions! I’ll post updates about that too.
22 Dec 2025
I have decided to build Ben Eater’s 8-bit Computer
during Winter break. The initial wiring is done. Of course, that didn’t go
without issues.
-
I ran out of wire. That’s my own fault; I changed the layout of the board
and made some miscuts. I had other colored wire laying around, but that
was not single-core. You’ll see some of the green stuff in the
bottom-left (see below). Since it is not solid core, it also doesn’t hold
shape as well.
-
I fried a ton of LEDs in the process. So, despite reading Helpful Tips
and Recommendations for Ben Eater’s 8-Bit Computer
Project
and not using current-limiting resistors everywhere, I went ahead and did
that.
This also solved the problem of low voltages, causing inputs not to reach
TTL levels.
LEDs were easy to get on Amazon.
-
I must have also killed some other components along the way. I know of at
least one 74LS245 and one 74LS04. Amazon to the rescue again for a set of
various
components and for a bunch of new
inverters.
-
The DIP switches just didn’t want to stay in the board, so I ended up
having to solder some header pins to them. That fixed the issue
completely.
-
One of my memory chips was bad. Reddit to the rescue. Thanks to
The8BitEnthusiast on the r/beneater subreddit, I found an updated
schema using a newer memory chip in the r/beneater Subreddit.
Right now, I’m troubleshooting. It seems that the 47LS173 in the instruction
register is getting all the correct input voltages, but doesn’t actually
output the bus signal to the output pins.
When I remove the chip from the board and test it in isolation, it does
work, however.

13 Nov 2025
ChatGPT, Gemini, CoPilot, etc. are all excellent tools to support learning.
However, as these technologies are starting to become more easily available,
we’re right back to the discussion about whether or not math teachers should
allow calculators in the classroom.
Of course these tools are here to stay.
Yes, their environmental impact is huge. Yes, in a real way, they displace
learning. Yes, their owners are sometimes using questionable data sets to train
the models. Yes, we are handing control of our learning (and thinking) to a
very small group of for-profit companies. But, in the end, it doesn’t matter.
People will use the tools that are made available to them.
For the past few years, we’ve seen these tools becoming more and more powerful.
And, for the same amount of time, we’re seeing students use them to replace
learning. And that should be cause for concern. IBM figured out a long time ago
that computers cannot be held accountable, and, therefore, should not be
empower to autonomously make decisions. That is true for learning as well. It
only takes a few generations for human knowledge to be lost, and AI is rapidly
sending us in that direction. Are we really moving to a future where AI is too
advanced for human oversight? Some thing we’re already there.
What does that mean for me, as an instructor?
I have three types of students:
-
Students who are very motivated to learn, and who are willing and able to
put effort towards doing so. They will benefit from AI tools hugely. Using
the tool as a sparring budy rather than as a substitute will enable to them
go far beyond students that had to learn “just” from textbooks and lectures.
This portion is typically about 25% of the overall population. As course
levels go up, this fraction increases.
-
Student’s who don’t care about learning and just want to check a box. In the
U.S. system of higher private education, they’ll make it through with
minimal effort. Their transcripts often contain lots of withdrawn courses
and low grades (Ds and Cs), with an occasional higher grade, but they’ll
earn their degree. AI won’t make it better for them, but it also won’t make
it worse. This portion is generally about 20% of the overall population. As
course levels go up, this fraction decreases.
-
The group in the middle. Those who probably want to learn and are able and
willing to put some effort to that. This is the group that can go either
way. If they choose to use AI to support learning, they’ll benefit from it.
If they choose AI to replace learing, they’ll go straight in with group 2.
This is typically 50%–60% of the class size and it is pretty stable.
Observing this has led me to an important realization: “A professor’s job is
to encourage and support learning.”
The emphasis is on “support learning.” I cannot learn the materials for the
students so they don’t have to. I also cannot force students to learn. Learning
is much like therapy. It only works when you are open to it.
At best, I can force students to hand in homework. However, while most will do
that, a good portion will not do the work themselves. Instead, they’ll turn to
ChatGPT and friends to do the work for them, tweak it a bit, and hand that in.
That sounds adversarial, and that is not my intention. It is just the
experience of seeing the reality of the world. Academics would consider that an
integrity violation, but that seems to be an outdated concept. Sometimes that
lack of effort is a motivation issue; sometimes it is an economic issues, and
sometimes it is a social issue. Many students work full-time to survive, or
have significant family obligations. Learning takes a lot of time, and that
isn’t always readily available!
As an instructor, I am expected to provide detailed and timely feedback on all
work handed in by students. In reality, I often end up grading homework
generated by AI sources. Again: that’s not true for all students! There is a
core of motivated strong students whose goal is to learn and who are able and
willing to put effort towards reaching that goal.
Effective this semester, I made a few changes:
-
I expect each student to hand in an annotated outline of the topics we
discussed in class. These outlines must be annotated with references to
external sources, like a textbook. Each week’s content must fit on two
pages. These notes can be brought to quizzes and exams. Notes are grades
pass/fail/missing. Since they are primarily meant as student’s learning
aides, I’ll provide feedback when asked. Otherwise, the only thing that’s
assessed is effort. The quality of the notes will become evident during
exams and quizzes.
-
I will administer short quizzes every other week, or every third week.
They’ll factor into the grade, but they’re really meant for students to
understand to what extent they meet my expectations of learning. A typical
quiz consists of 3–5 multiple choice questions to test knowledge (or
quality of notes) and two or three short-answer questions to test
understanding and application of concepts.
-
There will be a written final exam or a proctored coding activity in a
controlled environment when appropriate.
-
There will be NO OTHER REQUIRED HOMEWORK. However, I will provide weekly
exercises that are fully optional to complete. If students to hand in their
solutions, I’ll provide them with timely feedback. If they don’t, that’s
fine too. For the exercises, I encourage people to use any tool to support
their learning. AI is included in that.
I justify this approach in a few ways:
-
It enables students take ownership of their learning. Those who choose to
maximize their learning will have the benefit of my expertise and
experience.
-
It reduces stress and anxiety associated with unnecessary deadlines. This is
true for students, but also for me.
-
It reduces the time that I spend on grading AI-generated homework, allowing
me to maximize my time with students who really want to learn.
In the end, I’m going to be curious to see what the results are, and how they
compare to previous years. We’re now about three-quarters through the semester,
and I feel pretty good about them. The amount of “stupid” work for me has been
drastically reduced, and the outcomes seem to be pretty similar to previous
years.
26 Jun 2025
I’m currently visiting the German National Research Centre for Artificial Intelligence Research (DFKI) in beautiful Kaiserslautern, Germany. I am here to participate in the 24th European Conference on Cyber Warfare and Security. The conference is in full swing, and I am presenting “Supporting Cyber Intelligence Analysts With Enterprise Security Modeling”, which was developed together with Sung Kim and Chris Benson.
Although it is still early in the conference, I have noticed that sovereignty is a recurring theme. A tremendous amount of effort is being channeled into mimizing reliance of the European nation-states on non-EU entities. And it seems to be yielding results! Most of the research that is presented here is relevant, captivating, and advanced.
So much, in fact, that it may actually be that the EU is ahead of the USA when it comes to securing its digital footprint. Whether it is discussions about resilient computing, measuring the effectiveness of the use of CTI, or a view at what’s next after CVSS, the work presented here is spot-on.
Oh; and that’s just before lunch!