Data General NOVA ®
CPU Control Instructions
 
This page describes the instructions which are used to control the
internal operation of the CPU and various devices attached to it.
 
Coverage of the Eclipse CPU would be lacking if it left out how the CPU
controls itself and its peripherals through its programming. This page
will set forth the was that this is done.
Program Flow Instructions
Jump (JMP)
I /---------- Displacement ----------\
/ \ / \
+---+---+---+---+---+---+---+---+---+---+----+----+----+----+----+----+
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
+---+---+---+---+---+---+---+---+---+---+----+----+----+----+----+----+
\ / \ /
\ 0 0 0 0 0 / Index
- Function:
- The JMP instruction takes the computed value of "E" and places it in
the Program Counter (PC) causing the flow of the program to resume at
"E". The previous contents of the PC are lost; the carry bit is unchanged.
- Assembler Syntax:
- JMP [@]D[, I]
Jump to Subroutine (JSR)
I /---------- Displacement ----------\
/ \ / \
+---+---+---+---+---+---+---+---+---+---+----+----+----+----+----+----+
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
+---+---+---+---+---+---+---+---+---+---+----+----+----+----+----+----+
\ / \ /
\ 0 0 0 0 1 / Index
- Function:
- The JSR instruction places the 15-bit value in the Program Counter
(PC) plus one and places it in AC3 then takes the computed value
of "E" and places it in the PC causing the flow of the program to resume
at "E". The previous contents of the PC and AC3 are lost; the carry bit is
unchanged.
A return is accomplished via a "JMP 0,3" instruction.
- Assembler Syntax:
- JSR [@]D[, I]
 
These instructions all function as I/O instructions which are targetted
at the CPU, device number 77. Since that's the case, the instruction
format is an I/O one:
0 1 1 Transfer /----- 1 1 1 1 1 1 --------\
/ \ / \ / \
+---+---+---+---+---+---+---+---+---+---+----+----+----+----+----+----+
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
+---+---+---+---+---+---+---+---+---+---+----+----+----+----+----+----+
\ / \ /
AC Control
 
The OPcode of each CPU control instruction is specified by its function
and is defined by the ``Transfer'' and ``Control'' fields above. Instructions
will be shown by their OPcode. It should be noted that these are really
pseudo- operations, as the assembler translates them into the requisite
I/O instructions.
 
On a hardware level, the CPU ``Busy'' flag controls the status of the
interrupt system and the ``Done'' flag is a power- failure indicator.
The Instructions
I/O Reset (IORST)
Equivalent I/O instruction: DICC 0, CPU
- Function:
- The IORST instruction issues an
I/O bus reset which causes all devices attached to the I/O bus to reset. All
devices are left in a predefined, usually a "power-on", condition.
- Assembler Syntax:
- IORST
- Example:
Start: PC=50, I/O bus undefined
Function: IORST
Finish: PC=51, I/O bus reset
HALT (HALT)
Equivalent I/O instruction: DOC 0, CPU
- Function:
- The HALT instruction stops the
computer by turning off the ``RUN ''flag in the processor status logic. The
PC is set to the next sequential instruction. Pressing the ``Continue''
switch on the front panel resumes execution. No ACs or I/O devices are
affected.
- Assembler Syntax:
- HALT
- Example:
Start: PC=505, CPU running
Function: HALT
Finish: PC=506, CPU halted
Read Panel Switches (READS)
Equivalent I/O instruction: DIA AC, CPU
- Function:
- The READS instruction reads the
contents of the front- panel switches and places said data into the
specified AC. The previous contents of the AC are lost.
- Assembler Syntax:
- READS AC
- Example:
Start: Panel Switches=172000, AC1=0, PC=75
Function: READS 1
Finish: AC1=172000, PC=76
Enable I/O Interrupts (INTEN)
Equivalent I/O instruction: NIOS 0, CPU
- Function:
- The INTEN instruction causes the
CPU to enable its interrupt system following the next instruction.
This, in turn, allows I/O devices to interrupt the normal instruction flow
by raising a flag in the CPU.
- Assembler Syntax:
- INTEN
- Example:
Start: PC=3512, Interrupts disabled
Function: INTEN
Finish: PC=3513, Interrupts enabled (at 3514 assuming no jump)
Disable I/O Interrupts (INTDS)
Equivalent I/O instruction: NIOC 0, CPU
- Function:
- The INTDS instruction immediately
disables the I/O interrupt system, thereby preventing devices from
altering the CPU's execution path.
- Assembler Syntax:
- INTDS
- Example:
Start: PC=3176, Interrupts enabled
Function: INTDS
Finish: PC-3177, Interrupts disabled
Set Interrupt Mask (MSKO)
Equivalent I/O instruction: DOB AC, CPU
- Function:
- The MSKO instruction places the
contents of the selected AC into the interrupt mask registers of all the
interrupt- capable devices on the I/O bus. The AC is not altered.
- Assembler Syntax:
- MSKO AC
- Example:
Start: PC=2176, AC2=157200, Interrupt mask=157300
Function: MSKO 2
Finish: PC=2177, AC2=157200, Interrupt mask=157200
Acknowledge Interrupt (INTA)
Equivalent I/O instruction: DIB AC, CPU
- Function:
- The INTA instruction acknowledges
an interrupt by placing the interrupting device's address into the
selected AC. The previous contents of the AC are lost.
- Assembler Syntax:
- INTA AC
- Example:
Start: PC=312, Device 27 interrupting, Interrupts on
Function: INTA 3
Finish: PC=313, AC3=27, Device 27 interrupt active, Interrupts off
 
This page described the Input/Output instructions of the Data General
Nova minicomputer. Other pages describe:
[ Museum Lobby ]
[ Museum Catalogue ]
[ Carl's Homepage ]
Copyright © 1998 - 2003, Carl R. Friend. All rights reserved.
Comments to:
carl.friend@rcsri.org
Last Modified: Sun Sep 13 15:15:46 EDT 1998