Close
0%
0%

NRI Model 832 Digital Computer Recreation

Created in 1972, the Model 832 was designed as part of a training program to teach both digital electronics and computer operations.

Similar projects worth following
The Model 832 shipped as a kit that contained all the parts necessary to build a working digital computer including; 10 PCBs, 75 7400 series ICs with sockets, 140 slide switches, 4 push buttons, 16 lamps, various discrete components, wire, screws, etc. Included was a "Training Kit Manual" which had full schematics and instructions for assembling the Model 832. The end result was housed in a sturdy case with steel sides and a brushed aluminum front panel.

Focus

I don't want to discount the power of the Model 832 kit for teaching the digital hardware side that makes this and all computers possible. The Training Kit Manual is very thorough with complete assembly instructions and lots of "experiments" to ensure that  you understand what you have just constructed. I would venture to say that a skilled engineer could legitimately reproduce the hardware based on this manual. 

NRI Model 832
Courtesy the Old Computer Museum

My focus however will be on the computing side. I want to make a recreation that clearly looks like a Model 832 and more importantly works just like one. In the absence of all that original hardware I will be using a modern microprocessor to emulate that functionality. 

The Computer

Once the Model 832 is assembled you have a fully functional but simple computer with the following characteristics:

  • 8 bit word size
  • 16 bytes of ROM (128 switches)
  • 16 bytes of RAM
  • 3 working registers (Accumulator, B and E)
  • 3 internal registers (Instruction Register, Memory Address, and Program Counter)
  • 7 memory reference instructions
  • 8 additional operate instructions
  • direct memory addressing

Wow, pretty underwhelming right?  While not much of a computer power wise, I would argue that this simple architecture is perfect for teaching computer concepts. You can easily wrap your head around the whole machine.  

You write programs for the Model 832 by entering them directly into ROM memory, yes by setting the positions of the 128 slider switches into the 1 or 0 (up or down) positions. I think this is brilliant (I have a thing for tactile interfaces). No keyboard required.  To quote from Louis E. Frenzel, designer of the Model 832, "It is amazing what you can program in just 32 words.".

16 lamps provide more than enough information to understand what is going on inside the machine. No monitor required. 

All of the "op codes" available to the machine are printed on the front panel. Additional switches and buttons are clearly labeled and understood. Simple. Straightforward. 

Inspiration

On March 24, 2026 the Computer Museum at the University of Waterloo held an open house. (Full disclosure this is my alma mater, Class of '82, Go Warriors :-)  I had been to the museum before, but in the interim they had replaced a corridor facing wall with glass shelving displaying many of their artifacts. Plus they were introducing some new artifacts that had been recently donated. Very cool. I had to check it out.

While there I met Dr. Scott Campbell, Director of the Centre for Society, Technology and Values (CSTV) and a lecturer at the University of Waterloo. He is also the co-creator and a current curator of the U of W Computer Museum.  I really enjoyed our conversation. It's not that often the I get to "geek out" with someone who is as interested in (and way more knowledgeable of)  "retro" technology as I am. I was also very flattered that he knew who I was having seen some of my projects online.

As part of our conversation I told him that I was always on the lookout for new project ideas and he pointed out the NRI Model 832 they had on display in the aforementioned glass case. I had never encountered one before and their Model 832 is in beautiful condition. Scott mentioned that a summer intern had started work on an 832 emulator, and suggested that having a reproduction that people could actually "play with" might be nice. I don't believe that they have powered up their original artifact yet. 

We left the conversation at that. I don't think Dr. Campbell realized at that point how deeply the "hook" had been set into me. I immediately started researching the NRI Model 832 to determine how best to make a reproduction. 

Motivation

One facet of early "personal" computing that I am especially interested in is the pre-microprocessor era between 1966 when the first "commercial grade" 7400 series logic ICs went on...

Read more »

NRI_832_Reference_Manual.pdf

Overview of the NRI 832 with descriptions of the programming model and opcodes.

Adobe Portable Document Format - 657.81 kB - 08/28/2026 at 14:15

Preview

NRI_832_Cheat_Sheet.pdf

On quick guide to operating and programming the NRI 832 emulator.

Adobe Portable Document Format - 280.16 kB - 08/14/2026 at 15:13

Preview

NRI_832.py

An NRI 832 software emulator written in Python. As far as I know the only dependency is PyGame.

x-python - 559.65 kB - 08/14/2026 at 15:11

Download

TestNRIModel832.ino

A program to test the NRI Model 832 hardware.

ino - 5.38 kB - 07/03/2026 at 22:00

Download

Power Cord Mount.3mf

Cap to hold the power cord securely in a 13 mm hole.

3mf - 194.40 kB - 04/28/2026 at 19:55

Download

View all 12 files

  • 1 × Arduino MEGA 2560 https://a.co/d/0fC9UkPn
  • 16 × E10 Sockets https://a.co/d/004pznyL
  • 16 × LED Flashlight Bulbs https://a.co/d/0bgl0rvr
  • 140 × Mini Panel Slide Switches https://a.co/d/0eNzGF2f
  • 280 × M2.5 x 6 MM Screws https://a.co/d/03KoPm3B

View all 7 components

  • Your First NRI 832 Program

    Michael Gardi08/29/2026 at 19:10 0 comments

    By way of getting started I have written a simple "counting" program to run on the NRI 832.  Here it is:

    00   ADD 02       // Add the contents of memory location 02 to the accumulator.
    01   JMP 00       // Continue execution at memory location 00.
    02   01           // Data: set to the number 1.

     Here are the steps to run this program:

    1. Make sure that the POWER "switch" is ON. All of the switches (0, 1, ↓, ↑) can be toggled by simply clicking on them. NOTE: You can set all of the registers (A, B, E, I, PC) PLUS the RAM memory to zero by toggling POWER OFF then ON.
    2. Convert the program code to binary and enter it into the first 3 ROM memory locations. Remember that for instructions, the first 3 bits represent the opcode, and the remaining 5 bits the address.
    3. You should be able to now "press" (click) the STEP button repeatedly to advance the program 1 instruction for each click. As you do this the ACCUMULATOR lights should show the numbers 0, 1, 2, 3, etc. in order as binary.
    4. When you get tired of pressing STEP, you can change the CLOCK to AUTO by clicking on that switch.
    5. Then press the START button. The instructions will start executing automatically at 2 second intervals.
    6. Finally, if you find the AUTO execution pace too slow, you can switch SPEED to HIGH (about 10 instructions per second). You can pause the execution by clicking START again, and resume with yet another click.

    To "restart" the program, click the RESET button. The the registers (A, B, E, I, PC) will be cleared to zero, but the program and switch settings will remain untouched.

    Here are a few exercises you might want to try.

    • Change the program to count up by 3s.
    • Set the accumulator with a "starting value" before running the program. HINT: Check out the SWITCH REGISTER and LOAD button.
    • Get the following Fibonacci program running.
    // Shows the Fibonacci numbers from 0 to 144 on the ACCUMULATOR lamps.
    //
    00    LDA 0E      // Load the first two numbers in the sequence
    01    STA 10      //  into RAM locations 10 and 11.
    02    LDA 0F      // NOTE: This also "shows" the numbers on the accumulator.
    03    STA 11      // 
    04    ADD 10      // Add the next two numbers.
    05    STA 10      // Save result in RAM 10.
    06    JOM 0B      // Restart series if sequence number goes negative.
    07    ADD 11      // Add the next two numbers.
    08    STA 11      // Save result in RAM 11.
    09    JOM 0B      // Restart series if sequence number goes negative.
    0A    JMP 04      // Keep finding numbers.
    0B    JMP 00      // Restart from first two numbers again.
    0C                // N/A
    0D                // N/A
    OE    00          // First number in Fibonacci sequence.
    0F    01          // Second number in Fibonacci sequence.

  • No Python Required

    Michael Gardi08/28/2026 at 14:11 0 comments

    I have put my NRI Model 832 Digital Computer Emulation up on the Web.

    Check out: https://nri832.loclx.io

    I have posted an NRI 832 Reference Manual and an NRI 832 Cheat Sheet to the Files section above.

  • No Hardware Required

    Michael Gardi08/14/2026 at 14:59 0 comments

    I just finished a software only NRI 832 emulator.  I have posted the Python script and some documentation to the Files section of this project.

    Give it a try. 

    TIP: You have to turn the POWER ON before you can do anything else.

  • Finishing The Hardware

    Michael Gardi04/28/2026 at 21:46 0 comments

    I wrote a test routine that exercised all the hardware and was a bit surprised that everything mostly worked. There were a lot of solder joints I could have messed up. In the end I had to replace three of the push buttons that were a bit flakey.  Not sure what happened to them. I'll keep an eye on the replacements, and a lookout for some better buttons.

    I still wanted to show off "how the sausage was made", but needed  to protect the exposed wiring, so  I attached a clear acrylic laser cut bottom panel.

    Trust me, there is an acrylic panel there ;-)  I printed some "washers" to hold the panel in place without running the risk of cracking the acrylic, and to counter sink the screw heads.  Then I had to add some rubber feet to keep the unit from slipping around on the slick washers. 

    I drilled a 13 mm hole on the side of the case to pass through the USB cable that will be used to program the emulator and for now power the unit.

    Then I printed a "plug" to hold the cable firmly in place.  

    When the programming is done, my plan is to replace the cable and plug with a proper power socket connected to the POWER switch on the console. For now the POWER switch could be used to put the Arduino in "sleep mode" on power OFF, and wake on power ON.


    Update 28/08/2026: In the text above I mentioned that I had replaced some of the push buttons. They were not working reliably. I thought it might have been the “denouncing” code but could not find an issue there. Finally I thought I might have damaged the buttons while soldering on the leads. 

    Well it was pointed out to me that the 3D printed colored “caps” that I added to the buttons were too long and sometimes prevented the button from being fully depressed. Unexpected. 

  • Wiring (Part 3)

    Michael Gardi04/27/2026 at 18:58 0 comments

    Just finished the wiring for the NRI Model 832. In the absence of a any PCBs (other than the Arduino MEGA) that's a lot of wire. Hopefully I haven't messed up too much. Let the testing begin.

  • Rewiring

    Michael Gardi04/26/2026 at 23:38 0 comments

    With the lamps wired I thought I would write a little test program.

    // Test NRI Model 832 Hardware 
    
    #define IR7 21
    #define IR6 20
    #define IR5 19
    #define IR4 18
    #define IR3 17
    #define IR2 16
    #define IR1 15
    #define IR0 14
    
    #define AC7 2
    #define AC6 3
    #define AC5 4
    #define AC4 5
    #define AC3 6
    #define AC2 7
    #define AC1 8
    #define AC0 9
    
    // Array of pins connected to Lamps.
    int lampPins[] = {IR7, IR6, IR5, IR4, IR3, IR2, IR1, IR0, 
                        AC7, AC6, AC5, AC4, AC3, AC2, AC1, AC0}; 
    int pinCount = 16;
    
    void setup() {
      pinMode(AC7, OUTPUT);
      digitalWrite(AC7, HIGH);
        
      // Setup the display lamps as outputs.
      for (int i = 0; i < pinCount; i++) {
       pinMode(lampPins[i], OUTPUT);
       digitalWrite(lampPins[i], LOW);
      }
    }
    
    void loop() {
      while(true) {
        // Show the lamps in order.
        for (int i = 0; i < pinCount; i++) {
        digitalWrite(lampPins[i], HIGH);
        delay(250);
        digitalWrite(lampPins[i], LOW);
       }
      }
    }

    I ran the script and guess what, none of the lamps turned on. A quick check showed that the output pins defined were in fact going HIGH each in turn.  What? 

    It took me a few minutes to realized that the Arduino pins did not have enough Amps to drive the lamps. On closer inspection of the lamp description it turns out the lamps require about 300 mA whereas an Arduino pin only puts out 20-40 mA. I had assumed since they were basically LEDs they would not require so much current. Sigh.

    I considered running the lamps on a separate power supply and using some switching transistors to drive them. I even ordered some 2N2222 NPN transistors. As much as I really liked the look of the old timey lamps, in the end I decided that this just added too much complexity for this version.  It took minimal rework to switch to LEDs.

    I used some Panel Mount LED Sockets that I had designed for another project.

    Here is the rewired panel so far.

    Note that the 470 ohm limiting resistors are just wired inline.

    Now when I run my little test program I get blinkenlights.

  • Wiring (Part 2)

    Michael Gardi04/25/2026 at 20:23 0 comments

    I started wiring the lamps first. There is a wire going from each lamp to a pin on the Arduino MEGA.

    I slid the long pins of some male 90 degree headers into the MAGA's female headers and directly attached the wires to the appropriate pins via the short pin of the header. Also attached were two ground leads. 

  • Wiring (Part 1)

    Michael Gardi04/19/2026 at 19:11 0 comments

    While I waited for my Arduino MEGA 2560 to arrive I decided to get a start on the wiring.  I created a 3D printed holder to mount the Arduino development board and glued it in place.

    Preliminary Wiring Including ROM Switch Matrix

    The biggest part of this job was to create the ROM switch matrix which is basically the same thing that is done to read the switches on a keyboard.

    Original NRI Model 832 Keyboard Schematic

    There is a diode for each switch to prevent "ghosting", a phenomenon where pressing three or more keys simultaneously causes an unintended fourth key to register. (NOTE: My implementation is a little different than the one in the schematic.)

    ROM Matrix Wiring

    The diodes are mounted in such a way as to elevate the common "column" wires safely away from the "row" wires. Looks a little like magnetic core memory to me. I had done something like this for the Core Memory Panel of my Working Digital Computer project.

    The rest of the work was to run a ground wire to each of the remaining switches, bulbs, and buttons.

  • Populating the Front Panel

    Michael Gardi04/18/2026 at 02:05 0 comments

    With the front panel lased, I added the switches, lamps, and buttons.

    Slider switches, all 140 of them, are attached with 280 M2.5 x 6 mm screws. I did these all by hand to ensure that I didn't over drive them and ruin the wood. Lasered starter holes for the screws helped. I panel mounted the 4 push buttons.

    I found some E10 sockets for the lamps that (luckily) fit perfectly into the pre-cut 10 mm holes. The sockets are anchored from below with 3D printed friction fit socket holders.

    Finally I 3D printed and added coloured caps for the switches and buttons.

  • Lazing The Front Panel

    Michael Gardi04/15/2026 at 18:44 0 comments

    No I wasn't being lazy creating the front panel, but lasing the panel from plywood was pretty easy.

    There were some diagrams in the Reference Manual that showed the text and outlines of the front panel that I was able to organize into a layout for the Model 832. 

    I brought the above image into Autodesk Fusion as a "Canvas", basically a background picture. You can "calibrate" the image to be the millimeter size you want in the real world. Then its a matter of "tracing over" the elements with CAD based lines, circles, and text. The result is saved as a DXF file (which I have posted to the Files section above).

    DXF files (sometimes called cut files) can be loaded into the LightBurn Software that drives the 100W laser at Kwartzlab (my local makerspace). The front panel was created in two passes. First the text and outlines were added onto the birch plywood sheet I was using with vector engraving which follows path lines, tracing graphics like a pen to create deeper, faster lines.  On a second pass the holes for the switches, lights, and buttons were cut out using a much higher power. Here is the result.

    Pretty happy with the way that it turned out.

View all 11 project logs

Enjoy this project?

Share

Discussions

Peabody1929 wrote 04/22/2026 at 19:05 point

The Computer HIstory Museum in Mountain View CA has this object in their collection.  You can see it in the catalog.  It is item #102718664.  CHM does allow research projects about items in the collection. 

  Are you sure? yes | no

Michael Gardi wrote 04/22/2026 at 19:29 point

cool. Ya CHM was very helpful when I made inquiries about the DEC Model 30 Display!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates