o
odinpkg.dev
packages / library / nord-10

nord-10

fb3be89library

Nord 10 assembler and emulator (toy project, no full instruction set support)

No license · updated 5 months ago

Nord 10 assembler and emulator

This repository contains documentation and code for an assembler and an emulator of a subset of the instruction set of the 16-bit minicomputer NORD-10 produced by Norsk Data in 1973.

Nord-10/S Documentation

ND-06.009.01.md contains a markdown formatted version of parts of the NORD-10/S Functional Description (See references).

Usage:

Clone the repo and cd into the folder:

git clone https://github.com/albertaillet/nord-10
cd nord-10

The assembler is written in Python (version 3.13.5 for development, version 3.10 or higher should work).

./assembler.py --help

The emulator is written in the Odin (version dev-2026-02:b942f72cb for development) programming language.

odin run emulator.odin -file -- <path_to_assembled_program>

The tests for the assembler are written in Python and can be run with

./test.py

To assemble a file and then run it:

./assembler.py examples/arg_instructions.asm -o a.out && odin run emulator.odin -file -- a.out
# Or if you want to run the assembled program with input from stdin:
echo " STZ -127" | ./assembler.py | odin run emulator.odin -file

Or compile the emulator first and then run with these commands:

odin build emulator.odin -file

./assembler.py examples/arg_instructions.asm -o a.out && ./emulator a.out

The tests for the emulator are written in Odin and can be run with

odin test .

References

List of scanned documents available at datormuseum.se as of 21/07/2025

ND-06.009.01 NORD-10/S Functional Description
ND-06.010.01 NORD-10/S MICROPROGRAM
ND-06.012.01 NORD-10/S Input/Output System
ND-06.013.01 NORD-10/S General Description
ND-11.009.01 HAWK Disk System
ND-11.010.01 NORD-10 Hawk Disk Controller
ND-11.012.01 Floppy Disk System
ND-30.004.02 NORD-10/S Hardware Maintenance Manual
ND-60.044.01 SINTRAN II OPERATOR'S GUIDE
ND-12.008.01 NORD 10/HP 7970 Mag Tape interace

Worklog / Notes

Questions

How it is possible that LDT and MIN has the same code (040000)? Same question for SSO and SSQ (000040)? I think it must be a typo and should be LDT:050000 and SSO:000050.

Why does Robert use XOR instead of OR to combine the different 16 bits to the instruction in the Livecode program?

Notes for later

See USE OF THE PVL REGISTER to get an example of how to use ,X