Software packages for 32000 series

Author: Alexander Voropai alec@sensi.org
Aug 2017
This page was created as a “companion” for this amazing site: http://www.cpu-ns32k.net
For GNU Toolchains for 32000 series see a separate page: ns32ktoolchain

Definicon

Definicon DSI-32 was an “coprocessor” ISA-8 board with NS32032 CPU designed to run a “heavy” match tasks.

https://archive.org/details/BYTE_Vol_10-08_1985-08_The_Amiga
p. 120 The DSI-32 Coprocessor Board. Part 1: The Hardware
https://archive.org/details/byte-magazine-1985-09
p. 116 The DSI-32 Coprocessor Board. Part 2: The Software
http://bitsavers.trailing-edge.com/pdf/microCornucopia/Micro_Cornucopia_%2325_Aug85.pdf
p.52 The Definicon DSI-32 Co-Processor

Interesting issue about “Scienstific coprocessors” for early PC (PC Mag 14 Apr 1987)
https://books.google.ru/books?id=Jr7Bj4Yr0FMC&printsec=frontcover
p.208 “Changing the rules of the game”
DSI-32 and similar boards

Udo Moeller's site:
Hardware: http://cpu-ns32k.net/Defhard.html
Software: http://cpu-ns32k.net/Defsoft.html

NEWS: A blog post about DSI-32 board:
https://virtuallyfun.superglobalmegacorp.com/2017/09/09/definicon-dsi-32-co-processor-emulation/

Software

http://ftp.berklix.org/~dlr/dsi/set021387/
A complete Definicon software set. Includes GreenHills C (K&R only), Fortran and Pascal compilers. Filenames are in mixed case. An assembler is from the Computer Systems Design (Perth, Western Australia). It's quite powerful and supports module concept for the 32000 (unlike many other assemblers including GAS). Also two alternative assemblers included. Object module format is proprietary. Execulables is an a.out variant (loader example is available in the LOAD sources).

CSD-32000 Assembler V1.00a, Computer Systems Design
C-32000 1.6.12 Copyright(c)1985 Green Hills Software, Inc.
Fortran-32000 1.6.12 Copyright(c)1985 Green Hills Software, Inc.
Pascal-32000 1.6.12 Copyright(c)1985 Green Hills Software, Inc.
DSI-32000 Linker V1.03c, Definicon Systems Inc

http://cpu-ns32k.net/files/Def-Soft.zip
More recent assembler. Not full set. Includes 32IO and LOAD sources. Filenames in Uppercase. Also includes some Public Domain utilities.

DSI-32000 Assembler V1.03m, Definicon Systems Inc.
DSI-32000 Linker V1.03d, Definicon Systems Inc

Documentation: http://cpu-ns32k.net/files/docs.zip

C compiler is trying to include a “system” HOST header files in the /usr/include. This does not work because of non-K&R syntax and complexity of the modern headers. Use a “local” header files #include “file.h”.
C Compiler options: dsi32-copt

ln linker uses unusual syntax. It requires a special “defeinition file” (slightly similat to “responce file” for Microsoft's linker). Software distribution provides sample files with def or d32 extension.
LN users manual: http://cpu-ns32k.net/files/LN_user_manual.pdf

Emulator

Definicon software requires a DSI-32 card with real 32000 CPU installed in PC. In 2016 Dave Rand wrote an DSI-32 emulator using a 32016 software emulator from the Acorn 32016 Tube Coprocessor Board project:
https://github.com/hoglet67/PiTubeClient
https://github.com/hoglet67/PiTubeDirect

DSI-32 emulator:
http://ftp.berklix.org/~dlr/dsi/emu32k/

I did a slighly improved version:
- Renamed emulator executable file to “load” to conform DSI-32 name loader
- Added “file normalization” to translate ALL filenames to lowercase.
- Commented on service calls
- Many other small improvements (and new bugs)
http://wiki.sensi.org//download/ns32k/emu32k_load_10a.tgz

With this patch you can use lowercase filenames everywhere. File extensions is unnecessary. All options after -a are passed to the 32000 program (like as real LOAD.EXE).

./load cc -a -O -ge -X88 test.c
./load as -a test
./load ln -a file=test
./load test

A bash command to rename all files in the current directory to lowercase:

for i in *; do mv $i `echo $i | tr [:upper:] [:lower:]`; done

A mon2m is a symbolic debugger. To use a symbolic debugger you have to make a <name>.s32 file with linker directive symbol. Debugger wil load it automatically. Second argument <name>.e32 is a programm to debug. It becames argv[0] argument. Symbolic names must start with . to inform the gebugger that the string is a name and not a haxadecimal input:

./load ln -a file=test map symbol
./load mon2m test
*L._main
Module name = test.c, Symbol name = _main
008000  ENTER   [R3,R4,R5],H'0
008003  ADDR    H'0(SB),TOS
008009  CXP     _printf
00800B  CMPQD   H'0,TOS
00800D  ADDR    H'1C(SB),TOS
008013  CXP     _printf
008015  CMPQD   H'0,TOS
008017  ADDR    @H'7F,TOS
00801B  MOVD    H'DEAD,TOS
008021  ADDR    @H'4D2,TOS
008025  ADDR    H'2E(SB),TOS
00802B  CXP     _printf
*

Trace does not work since not implemented in the 32016 emulator. TODO?

Portable C Compiler

Portable C compiler (pcc) ported to 16032:
http://www.tuhs.org/Archive/Applications/Portable_CC/
Contains a16, cc16 and ld16 sourcecode. Binary format: a.out variant.

Not tested.

TDS

TDS (Tiny Development System) is a software for the National Semiconductor's development boards: DB16000, DB16000A (later renamed to DB32016) and DB32000. It includes simply editor, assembler and debugger.
http://cpu-ns32k.net/National.html
http://bitsavers.trailing-edge.com/components/national/db32016/
https://www.scss.tcd.ie/SCSSTreasuresCatalog/hardware/TCD-SCSS-T.20141120.007/TCD-SCSS-T.20141120.007.pdf

DBMON Reference Manual

Sourcecode: http://wiki.sensi.org/download/ns32k/tds.tgz (may be not complete)

GENIX

GENIX was a National Semiconductor's trademark for the UNIX-class OS for the NS32000 architecture. A significant number of workstations used this OS: i.e. Whitechapel Computer Works, Trinity Workstation and NS SYS32/20. Early GENIX was a 4.xBSD port and later GENIX was a UNIX SYSV port. There were also proprietary 32000 UNIX ports not under GENIX name (i.e. Sequent Balance DYNIX, Encore UMAX, Tektronix UTek e.t.c.)

Documentation

http://bitsavers.trailing-edge.com/components/national/_dataBooks/1983_Development_Systems_Products_Databook.pdf
page 118 (SYS16 system, running early GENIX version based on the 4.1BSD)

http://bitsavers.trailing-edge.com/components/national/_dataBooks/1988_National_Series_32000_Microprocessors_Databook.pdf
section 7-16 (GENIX/V.3 is a port of AT&T's System V, Release 3.0, UNIX operating system for the Series 32000 microprocessor family. )

Since GENIX 2 is based on the AT&T SYSVR2 most of documentation are suitable for GENIX 2 too.
http://bitsavers.trailing-edge.com/pdf/att/unix/System_V_Release_2/

Distributives

http://bitsavers.trailing-edge.com/bits/AmericanInformationSystems/AIS_GENIXsrc_6-20-85.tar.gz
Early GENIX sources (derived from the 4.1BSD) for the DB16000 board. Also includes SNXC (early 32000 crosscompiler) for VAX 4.1BSD. An assembler sourcecode is written in Pascal (sic!). C compiler is PCC. Binary format is a.out (variant).

http://bitsavers.trailing-edge.com/bits/AmericanInformationSystems/AIS_oldUsr_10-3.cpio.gz
/usr cpio archive from a more recent GENIX (seems SYSVR2). Not a full sources. /usr/bin contains binaries in the ns32k COFF format (similar to the Opus binaries, see below). Some binaries are not stripped.

http://wiki.sensi.org/download/ns32k/SysVr2.0_32000.tgz
A full SYSVR2 sources ported for the NS32000 processor for National Semiconductor SYS16/SYS32 machines. Includes assembler, loader and C compiler sources. Sources correspond to the well known SYSVR2 sources for VAX floating around: i.e. sysvr2-vax.cpio

as assembler is written in a “classic” LEX/YACC. Unusually, m4 is used as macro-processor. Unfortunately, this assembler is very “fragile” - it coredumps on a errors in the input file. Object format from this as and ld is COFF (ns32k variant). Assembler has a quite unusual syntax: all numerical constants and variables are treated as “absolute” (even without “@var”). According to some reports, this addressing mode works faster. The syntax for var(pc) (PC-relative) addressing mode is unknown.

Sources may be compiled under any SYSVR2 (i.e. VAX) to make a “crosstool”. It is possible to build it under relative old GCC too (I've successfully built it under GCC 2.7 on a i386 RedHat 2.1 Bluesky ).

http://bitsavers.trailing-edge.com/bits/OpusSystems/Floppies/Opus_Systems_Floppies.zip
Full binary distributive for the Opus5 card ( http://cpu-ns32k.net/Opus.html ). Seems SYSVR2 (or R3 ?). No sourcecode. Binaries are in the ns32k COFF format.

SNX/GNX crosstools

National Semiconductor's SNXC16 (later known as NSX-32 and GNX) was a cross tool including C ans Pascal compilers, linker, assembler and supporting tools. Assembler accepts an “old” or “classic” NS16000/32000 syntax.

- http://bitsavers.trailing-edge.com/components/national/_dataBooks/1983_Development_Systems_Products_Databook.pdf
page 121 (an early XNSC16 version for VAX 4.1BSD. See below how to run it.)
- http://bitsavers.trailing-edge.com/components/national/_dataBooks/1986_National_NS32000_dataBook.pdf
section 9-7 (a newer GNX version for 4.2BSD, I have no this version)
- http://bitsavers.trailing-edge.com/components/national/_dataBooks/1988_National_Series_32000_Microprocessors_Databook.pdf
section 7-3 (GNX Release 2 for VAX 4.2BSD, VAX VMS or Unix SYSVR3. I have no this version)
- http://bitsavers.trailing-edge.com/components/national/_dataBooks/1989_National_Embedded_System_Processor_Databook.pdf
section 5-16 (GNX Version 3 for VAX BSD,VMS and Ultrix or NS Unix SYSVR3 port. I have no this version)

How to run

Early SNXC16 crosstools for VAX 4.1BSD is available at Bitsavers:
http://bitsavers.org/bits/AmericanInformationSystems
AIS_GENIXsrc_6-20-85 contains a SNX16. To run this crosstools binaries you have to have a 4.1BSD or 4.1cBSD on VAX (SNXC16 does not work under 4.2BSD). This archive also contains sourcecode.

NS16032 C compiler release 5.1 9/8/83 (JZ,jima)
NSC 16032 MESA ASSEMBLER Version 3.31    9/19/83

Fortunately, SIMH emulator provides nice VAX emulation. Run a SIMH VAX, create a .tap file and “import” SNXC16 into working 4.1cBSD
http://gunkies.org/wiki/Installing_4.1_BSD_on_SIMH
http://gunkies.org/wiki/Installing_4.1c_BSD_on_SIMH

Network was in the “embrionic” stage in the 4.1BSD. An emulated “tape” may be used to “import” and “export” between emulated OS and host. To extract a .tap SIMH tape image there is a “extracters/rawtap” ulility from the SIMH's utils:
https://github.com/simh/simtools

SNXC16 man pages extracted from this archive: ar.1 as.1 cc.1 ddt.1 ld.1 monitor.3 nm.1 ranlib.1

Output binary file is a.out.5

NSXC16 Assembler Reference Manual