Skip to content

Compiler Commands Reference

Complete command reference for NPL, MAC, and NORD-500 Assembler

Version: 1.1
Date: October 18, 2025
Source: Official manuals and source code analysis


Table of Contents

  1. NPL Compiler Commands
  2. MAC Assembler Commands
  3. NORD-500 Assembler Commands
  4. NRL Linker Commands
  5. BRF-EDITOR Commands
  6. Quick Reference Tables

NPL Compiler Commands

Starting the NPL Compiler

@NPL [source-file][:NPL] [,list-file] [,list-file]

Parameters: - source-file - Input NPL source file - :NPL - Optional extension (default) - list-file - Optional listing output

Examples:

@NPL HELLO:NPL              # Compile HELLO:NPL to HELLO:MAC
@NPL MYPROG,LIST,LIST       # Compile with listing to LIST:LIST
@NPL SOURCE:NPL             # Simple compilation

NPL Compiler Directives (Inside Source)

These directives appear inside NPL source files:

@DEV - Device/File Specification (Batch Mode)

Syntax:

@DEV device-name,line-count,line-count

Purpose: Redirect output to different device/file (used in master source files for batch compilation)

Example:

@DEV ABSTR,1,1     % Output to ABSTR:MAC

Note: Used in SINTRAN master source files when compiling multiple modules from one source.


MAC Assembler Commands

Starting the MAC Assembler

@MAC [source-file][:MAC]

Interactive Mode:

@MAC
*[commands]
*EXIT

Examples:

@MAC HELLO:MAC              # Assemble HELLO:MAC to HELLO:BRF
@MAC MYPROG                 # Assemble MYPROG:MAC

MAC Assembler Directives

All MAC directives start with ) and appear in MAC source files.

)FILL - Fill Memory

Syntax:

)FILL [count]

Purpose: Reserve space, fill to boundary

Examples:

)FILL          % Fill to next location
)FILL 10       % Reserve 10 words
RBUS           % Reserve bus word (same as )FILL)

)KILL - Remove Symbols

Syntax:

)KILL symbol1 symbol2 ...
)KILL symbol1,symbol2,...

Purpose: Remove symbols from symbol table (clean up after use)

Examples:

)KILL TEMP1 TEMP2      % Remove TEMP1 and TEMP2
)KILL L1,L2,L3         % Remove multiple labels
)KILL BRG L2           % Clean up temporary symbols

Common Pattern:

L2=*
    LDA I (HSTAT
    ...
)KILL L2               % Remove after use

)ZERO - Zero Fill

Syntax:

)ZERO count

Purpose: Fill with zero values

Example:

)ZERO 100      % Reserve 100 words of zeros

)PCL - Set Location Counter (Print Control Line)

Syntax:

)PCL octal-address

Purpose: Set assembly location counter

Example:

)PCL 1000      % Set location to octal 1000

)LINE - Include Source Line

Syntax:

)LINE

Purpose: Include a line in the listing (for debugging/documentation)

Example:

)LINE          % This line will appear in listing

)9SLPL - Set Listing Options (9-track Symbolic List Print Line)

Syntax:

)9SLPL

Purpose: Control listing format for symbolic output

Example:

)9SLPL         % Enable symbolic listing

)9ASSM - Assemble with Options

Syntax:

)9ASSM line-count,list-file,output-file

Purpose: Assemble with specific options

Example:

)9ASSM 100,LIST-FILE,(OTS-CRS-BRF-1)IDB-VIA-MONC-OPR

)9TSS - TSS System Directive

Syntax:

)9TSS

Purpose: Indicate TSS (Timesharing System) compatibility mode

Example:

)9TSS          % TSS mode

Conditional Assembly

Quote Blocks - Conditional Code

Syntax:

" condition
    [code if true]
"

Purpose: Conditional assembly based on symbol definition

Example:

" ND100         % If ND100 is defined
    LDA 100
" ND500         % If ND500 is defined  
    LDWB R1,100
"               % End conditional


NORD-500 Assembler Commands

Starting the NORD-500 Assembler

The NORD-500 Assembler is a cross-assembler that runs on the NORD-100 CPU under SINTRAN III and produces NRF (NORD Relocatable Format) object files for the NORD-500 CPU.

@NORD-500-ASSEMBLER [source-file][:SYMB] [,list-file][:LST] [,object-file][:NRF]

Alternative command names:

@N500ASM
@ND500ASM

Parameters: - source-file - Input NORD-500 assembly source file (default extension: :SYMB or :ASM) - list-file - Optional assembly listing output (default extension: :LST) - object-file - Output NRF object file (default extension: :NRF)

Examples:

@NORD-500-ASSEMBLER PROGRAM:SYMB
@N500ASM PROGRAM:SYMB,PROGRAM:LST,PROGRAM:NRF
@ND500ASM MODULE1:ASM

NORD-500 Assembler Commands (Interactive)

ASSEMBLE - Assemble Source File

Syntax:

ASSEMBLE filename[:SYMB]

Purpose: Assemble a NORD-500 source file

Example:

ASSEMBLE PROGRAM:SYMB
ASSEMBLE MODULE1:ASM

LIST / NO-LIST - Control Listing Output

Syntax:

LIST
NO-LIST

Purpose: Enable or disable assembly listing generation

Example:

LIST                    % Generate listing
NO-LIST                 % Skip listing (faster)

LINES - Set Lines Per Page

Syntax:

LINES line-count

Purpose: Set number of lines per page in listing

Example:

LINES 60               % 60 lines per page
LINES 66               % Standard page size

EXIT - Exit Assembler

Syntax:

EXIT

Purpose: Exit the NORD-500 assembler

NORD-500 Source Directives

These directives appear inside NORD-500 assembly source files. See NORD-500-ASSEMBLER-DEVELOPER-GUIDE.md for complete directive reference.

$MACRO / $ENDMACRO - Define Macro

Syntax:

$MACRO macro-name [parameter, ...]
    [macro body]
$ENDMACRO

Purpose: Define reusable code macro

Example:

$MACRO PUSH reg
    W1 SUB 4
    reg DATA IND(W1)
$ENDMACRO

$IF / $ELSIF / $ELSE / $ENDIF - Conditional Assembly

Syntax:

$IF expression
    [code if true]
$ELSIF expression
    [code if elsif true]
$ELSE
    [code if false]
$ENDIF

Purpose: Conditional assembly based on expressions

Example:

$IF DEBUG
    W1 := 1               % Debug mode
$ELSE
    W1 := 0               % Production mode
$ENDIF

$INCLUDE - Include Source File

Syntax:

$INCLUDE filename

Purpose: Insert contents of another file

Example:

$INCLUDE DEFINES:SYMB
$INCLUDE MACROS:SYMB

$LIST / $NOLIST - Control Listing

Syntax:

$LIST
$NOLIST

Purpose: Control listing output within source

Example:

$NOLIST               % Don't list following code
$INCLUDE STDMACROS:SYMB
$LIST                 % Resume listing

$TITLE - Set Listing Title

Syntax:

$TITLE "title-string"

Purpose: Set title for listing page headers

Example:

$TITLE "NORD-500 Main Program - Version 1.0"

$EJECT - Page Break

Syntax:

$EJECT

Purpose: Force new page in listing

Example:

$EJECT                % Start new page
% New section begins here

NORD-500 Module Structure Directives

MODULE / ENDMODULE - Define Module

Syntax:

MODULE [module-name [',' priority [',' language-code]]]
    [module code]
ENDMODULE [module-name]

Purpose: Delimit an assembly program module

Example:

MODULE MYPROG, 100, 0     % Priority 100, language 0 (assembly)
    [code]
ENDMODULE MYPROG

ROUTINE / ENDROUTINE - Define Routine

Syntax:

ROUTINE entry-point [, entry-point ...]
    [routine code]
ENDROUTINE

Purpose: Define a subroutine with entry points

Example:

ROUTINE MY_SUB, ALT_ENTRY
    [subroutine code]
    RET
ENDROUTINE

IMPORT-P / IMPORT-D - Import Symbols

Syntax:

IMPORT-P symbol [, symbol ...]    % Import program addresses
IMPORT-D symbol [, symbol ...]    % Import data addresses

Purpose: Import external program or data symbols

Example:

IMPORT-P EXT_ROUTINE, HELPER_FUNC
IMPORT-D GLOBAL_VAR, SHARED_DATA

EXPORT - Export Symbols

Syntax:

EXPORT symbol [, symbol ...]

Purpose: Make symbols accessible to other modules

Example:

EXPORT MY_FUNC, SHARED_VAR

MAIN - Specify Main Entry Point

Syntax:

MAIN entry-label

Purpose: Specify the main program entry point

Example:

MAIN START_PROGRAM

NORD-500 Loader Commands

The NORD-500 loader links NRF files into executable programs.

@NORD-500-LOADER

Interactive Commands:

LOAD - Load NRF File

Syntax:

LOAD filename[:NRF]

Purpose: Load NORD-500 relocatable object file

Example:

LOAD PROGRAM:NRF
LOAD MODULE1:NRF

LIBRARY - Load Library

Syntax:

LIBRARY library-name[:NRF]

Purpose: Load NORD-500 library for conditional linking

Example:

LIBRARY N500LIB:NRF
LIBRARY MATHLIB:NRF

PSEG - Specify Program Segment Output

Syntax:

PSEG filename[:PSEG]

Purpose: Specify program segment output file

Example:

PSEG PROGRAM:PSEG

DSEG - Specify Data Segment Output

Syntax:

DSEG filename[:DSEG]

Purpose: Specify data segment output file

Example:

DSEG PROGRAM:DSEG

Syntax:

LINK filename[:LINK]

Purpose: Specify link information file

Example:

LINK PROGRAM:LINK

MAP - Generate Memory Map

Syntax:

MAP

Purpose: Generate and display memory map of linked program

Example:

MAP                    % Show memory layout

EXIT - Exit Loader

Syntax:

EXIT

Purpose: Exit the NORD-500 loader


NRL Linker Commands

Starting NRL

@NRL

NRL Commands (Interactive)

IMAGE - Specify Target CPU

Syntax:

*IMAGE cpu-type

Parameters: - 100 - ND-100 target - 500 - ND-500 target

Example:

*IMAGE 100

PROG-FILE - Specify Output File

Syntax:

*PROG-FILE "filename"

Purpose: Specify name of output executable

Example:

*PROG-FILE "HELLO"
*PROG-FILE "MYPROG"

LOAD - Load Object File

Syntax:

*LOAD filename

Purpose: Load BRF (object) file into link

Examples:

*LOAD HELLO           % Load HELLO:BRF
*LOAD CC-2HEADER      % Load C runtime header
*LOAD MYPROG          % Load MYPROG:BRF

START - Set Entry Point

Syntax:

*START symbol
*START address

Purpose: Specify program entry point

Example:

*START MAIN           % Start at MAIN symbol
*START 0              % Start at address 0

MAP - Generate Memory Map

Syntax:

*MAP

Purpose: Display memory allocation map

Example:

*MAP                  % Show memory layout

EXIT - Exit Linker

Syntax:

*EXIT

Purpose: Exit NRL and write output file

Example:

*EXIT                 % Save and exit

NRL Output Messages

FREE: 000706-177777 ....        # Free memory range
FREE DATA AREA: 000202-177777   # Free data area

BRF-EDITOR Commands

Starting BRF-EDITOR

@BRF-EDITOR

BRF-EDITOR Commands (Interactive)

RENAME-SYMBOL - Rename Symbol

Syntax:

RENAME-SYMBOL old-name new-name

Purpose: Rename a symbol in BRF file

Example:

RENAME-SYMBOL RI1F RIDB1F
RENAME-SYMBOL RINF RIDBNF

Common Use: Avoid symbol conflicts when linking multiple modules

CHANGE-FILE - Select File

Syntax:

CHANGE-FILE filename

Purpose: Select which BRF file to edit

Example:

CHANGE-FILE (OTS-CRS-BRF-1)IDB-VIA-MONC-OPR

MAKE-LIBRARY-UNITS - Create Library

Syntax:

MAKE-LIBRARY-UNITS filename

Purpose: Convert BRF to library format

Example:

MAKE-LIBRARY-UNITS (OTS-CRS-BRF-1)IDB-VIA-MONC-OPR

Use Case: Create reusable library from object files

EXIT - Exit BRF-EDITOR

Syntax:

EXIT

Purpose: Save changes and exit

Example:

EXIT              % Save and quit


Quick Reference Tables

NPL Compiler Quick Reference

Command Purpose Example
@NPL file:NPL Compile NPL to MAC @NPL HELLO:NPL
@NPL file,list,list Compile with listing @NPL PROG,OUT,OUT

MAC Assembler Quick Reference

Directive Purpose Example
)FILL Reserve space )FILL 10
)KILL Remove symbols )KILL TEMP
)ZERO Zero fill )ZERO 100
)PCL Set location )PCL 1000
)LINE Include line )LINE
)9SLPL Listing options )9SLPL
)9ASSM Assemble options )9ASSM 100,LIST,OUT
)9TSS TSS mode )9TSS
" Conditional block " ND100 ... "
RBUS Reserve bus word RBUS

NRL Linker Quick Reference

Command Purpose Example
*IMAGE Set target CPU *IMAGE 100
*PROG-FILE Output filename *PROG-FILE "HELLO"
*LOAD Load object file *LOAD HELLO
*START Set entry point *START MAIN
*MAP Show memory map *MAP
*EXIT Save and exit *EXIT

BRF-EDITOR Quick Reference

Command Purpose Example
RENAME-SYMBOL Rename symbol RENAME-SYMBOL OLD NEW
CHANGE-FILE Select file CHANGE-FILE file
MAKE-LIBRARY-UNITS Create library MAKE-LIBRARY-UNITS file
EXIT Save and exit EXIT

Common Command Sequences

Build NPL Program

@NPL HELLO:NPL              # 1. Compile
@MAC HELLO:MAC              # 2. Assemble
@NRL                        # 3. Link
*IMAGE 100
*PROG-FILE "HELLO"
*LOAD HELLO
*EXIT
@HELLO                      # 4. Run

Build C Program

@CC-100 HELLO:C             # 1. Compile C to BRF
@NRL                        # 2. Link with runtime
*IMAGE 100
*PROG-FILE "HELLO"
*LOAD CC-2HEADER            # C runtime header
*LOAD HELLO                 # Your program
*LOAD CC-2BANK              # C library
*LOAD CC-2TRAILER           # C runtime trailer
*EXIT
@HELLO                      # 3. Run

Build NORD-500 Program

@NORD-500-ASSEMBLER PROGRAM:SYMB  # 1. Assemble to NRF
@NORD-500-LOADER                  # 2. Link
LOAD PROGRAM:NRF
PSEG PROGRAM:PSEG
DSEG PROGRAM:DSEG
LINK PROGRAM:LINK
MAP
EXIT
# 3. Load and run on NORD-500 CPU

Build Multi-Module NORD-500 Program

@N500ASM MODULE1:SYMB       # 1. Assemble module 1
@N500ASM MODULE2:SYMB       # 2. Assemble module 2
@N500ASM MODULE3:SYMB       # 3. Assemble module 3
@NORD-500-LOADER            # 4. Link all modules
LOAD MODULE1:NRF
LOAD MODULE2:NRF
LOAD MODULE3:NRF
LIBRARY N500LIB:NRF         # Include library
PSEG PROJECT:PSEG
DSEG PROJECT:DSEG
LINK PROJECT:LINK
MAP
EXIT

Rename Symbols for Library

@BRF-EDITOR
RENAME-SYMBOL RI1F RIDB1F
RENAME-SYMBOL RINF RIDBNF
RENAME-SYMBOL WI1F WIDB1F
RENAME-SYMBOL WINF WIDBNF
CHANGE-FILE module:BRF
MAKE-LIBRARY-UNITS module:BRF
EXIT

Command Categories

Compilation Phase

Tool Input Output Command
NPL .NPL .MAC @NPL source:NPL
CC-100 .C .BRF @CC-100 source:C
PLANC :SYMB/:PLNC .BRF @PLANC-100

Assembly Phase

Tool Input Output Command
MAC .MAC .BRF @MAC source:MAC
NORD-500 ASM .SYMB/.ASM .NRF @NORD-500-ASSEMBLER source:SYMB

Linking Phase

Tool Input Output Command Target CPU
NRL .BRF .PROG @NRL + commands ND-100
NORD-500 Loader .NRF .PSEG/.DSEG @NORD-500-LOADER + commands ND-500

Post-Processing

Tool Input Output Command
BRF-EDITOR .BRF .BRF @BRF-EDITOR + commands

Error Messages

NPL Compiler Errors

END OF COMPILATION - X ERRORS DETECTED

Meaning: X syntax/semantic errors found during compilation

Action: Check listing for error details

MAC Assembler Errors

PHASE ERROR

Meaning: Symbol value changed between assembly passes

Action: Check forward references, ensure symbols defined before use

UNDEFINED SYMBOL: symbolname

Meaning: Symbol used but not defined

Action: Define symbol or check spelling

NRL Linker Errors

UNDEFINED SYMBOL: symbolname

Meaning: External symbol not found in loaded modules

Action: Load missing module containing symbol

FILE ALREADY EXISTS

Meaning: Output PROG file already exists

Action: Delete old file or use different name


Command-Line Patterns

Single-File Build

@NPL prog:NPL && @MAC prog:MAC && @NRL

Multi-Module Build

@NPL mod1:NPL
@MAC mod1:MAC
@NPL mod2:NPL
@MAC mod2:MAC
@NRL
*LOAD mod1
*LOAD mod2
*PROG-FILE "combined"
*EXIT

Build with Libraries

@NRL
*LOAD main
*LOAD mylib
*LOAD systemlib
*PROG-FILE "app"
*EXIT

Special Symbols

MAC Assembler Special Symbols

Symbol Meaning Example
* Location counter LABEL=*
I Indirect addressing LDA I (ADDR
,X Indexed addressing LDA ,X OFFSET
,0 Label reference JMP ,label

Documentation References

NPL

MAC

NRL

BRF-EDITOR


Notes

Command Syntax

  • @ - SINTRAN command prefix
  • * - NRL/interactive tool prompt
  • : - File extension separator
  • , - Parameter separator
  • % - NPL/MAC comment

File Extensions

  • .NPL - NPL source
  • .MAC - MAC assembly source
  • .BRF - Binary Relocatable Format (object)
  • .PROG - Executable program
  • .C - C source
  • .PLANC - PLANC source

Case Sensitivity

  • Commands are case-insensitive
  • Filenames follow SINTRAN conventions
  • Symbols are case-sensitive in some contexts

Version: 1.0
Last Updated: October 17, 2025
Status: Complete
Source: Official manuals, source code analysis, verified examples

See Also: - QUICK-START-EXAMPLES.md - Working examples - MAC-DEVELOPER-GUIDE.md - Complete MAC guide - LINKING-GUIDE.md - Complete linking guide - SINTRAN-DEVELOPER-GUIDE.md - Master guide