Nord Programming Language (NPL), is a
procedural programming language by the Norwegian
minicomputer
A minicomputer, or colloquially mini, is a class of smaller general purpose computers that developed in the mid-1960s and sold at a much lower price than mainframe and mid-size computers from IBM and its direct competitors. In a 1970 survey, ...
manufacturer
Norsk Data. It shipped as a standard component of the
operating system Sintran III
Sintran III is a real-time, multitasking, multi-user operating system used with Norsk Data minicomputers from 1974. Unlike its predecessors Sintran I and II, it was written entirely by Norsk Data, in Nord Programming Language (Nord PL, NPL), ...
.
The language was also used to implement Sintran III: the core and
file system
In computing, file system or filesystem (often abbreviated to fs) is a method and data structure that the operating system uses to control how data is stored and retrieved. Without a file system, data placed in a storage medium would be one larg ...
of which are written in NPL, as was the NPL
compiler, and some core applications early on, until the release of
high-level programming language named
PLANC
PLANC (Programming LAnguage for Nd Computers, pronounced as ''plank'') is a high-level programming language.
Compilers were developed by Norsk Data for several architectures, including the Motorola 68000, 88000, Intel x86, and the Norsk Data Nor ...
. Then, the
linker and other software were rewritten in PLANC.
The NPL compiler was also special in that it did not emit
object code as most compilers do. Instead it emitted an
intermediate representation, in the form of
assembly language
In computer programming, assembly language (or assembler language, or symbolic machine code), often referred to simply as Assembly and commonly abbreviated as ASM or asm, is any low-level programming language with a very strong correspondence be ...
code, which then had to be assembled using the
Norsk Data Assembler.
The registers of the CPU were available in NPL as predefined
variables. Thus could be written:
X + T =: A
and the compiler would emit:
COPY SX DA
RADD ST DA
Functions could be declared with multiple
entry points:
FUNC FUN1, FUN2
FUN1: T := 1
FUN2:
code here
END
FUN1
could be called to set
T
to
1
before falling into
FUN2
or
T
could be set to something else and call
FUN2
. If
T
register specified which file handle to write to, then either
FUN1
could be called to always output to terminal or
T
could be specified to handle a file in
T
and call
FUN2
to output to that file.
{{Norsk Data
Procedural programming languages
Norsk Data software