# Nicolet 1080

The Nicolet 1080 computer was the successor of the Nicolet 1070/PDP-8 computer, released in 1971 by Nicolet Instrument Corporation, which operated between 1966 and 1992 in Madison, Wisconsin. As a part of a data processing mainframe, model 1080 allowed NMR spectrum analysis by the use of fast Fourier transform (FFT) algorithms. The processing of big amounts of data at a fast rate (it was possible to compute the FFT of 32000 points in just 100 seconds) was possible thanks to the uncommon 20-bit architecture, which was a significant performance advantage over other systems based on 8 and 16 bits architectures.

## Technical specifications
### Architecture

The computer was formed by dozens of integrated circuits containing simple logic gates (AND, NAND, OR, NOT, etc.), transistors, diodes, and passive electronic components like resistors, capacitors and coils. The analog-to-digital converter (ADC) had a sample rate of 100 kHz, allowing the measure of 50 kHz signals (see Nyquist frequency). Beside this, digitalized signals could be averaged "by hardware", which increased signal to noise ratio (SNR) improving processed data quality. Computer clock frequency was 2 MHz, and some complex functions like multiplication and division between 20 and 40 bits registers could be performed in one instruction cycle thanks to the complexity of the arithmetic module, in a similar way to the more recent ALUs. The standard instruction set could address a 1K page in direct mode. Program code outside the current page was reachable in indirect mode, using pointers. Program code used to process digitized data points always had to use pointers.
The 1080 computer did not have a stack. When executing a subroutine, the return address was stored in the first location of the subroutine.

### Exotic Instructions

The NIC 1080 had an instruction called BITINV to reverse bits in the accumulator, swapping the most significant bit with the least significant and so on. There was also a special shift instruction (VDLSH), where the number of shifts was taken from a rotary switch on the front panel, instead of from the instruction code. This was used to change the vertical scale during data display.

### Memory

The Nicolet 1080's main memory was a magnetic-core memory, with 1 to 10 modules with 4K 20-bit words per module, for a maximum of 40K words. This would be, in modern terms, between 10 and 100 kilobytes of memory (8 bits/byte). The memory was divided into a 4K stack intended to store software, and a data block starting at an address offset of 32K. One program memory stack plus two data memory stacks of 4K could be installed inside the main chassis.

### Peripheral

The computer included a Teletype Model 33 ASR, used for entering or modifying programs, as well as reading memory contents. Two RS-232 serial ports allowed, on the other hand, the use of devices such as dot matrix printers. Although the second serial port (RS232-B) didn't have assigned functions on the original system, it could be used to achieve connectivity with other computers. The 1080 could also support hard drives, such as the Diablo Series 30, and NIC 298 8" floppy disk drive. The default media for program loading was, however, paper tape. Standard system and FFT programs were included on paper tape format.
Instead of today's mouse control, the computer was equipped with two 10-turn potentiometers where the actual voltage could be digitized, and the value used as parameter in the software.
The 1080 could drive a voltage-controlled XY pen plotter. Two digital-to-analog converters (DAC) were normally connected to an XY oscilloscope for data display. The same DAC's could be connected to the pen plotter, using a software controlled relay.

### Front panel

The front panel had three rows of red LEDs, displaying the contents of the accumulator, instruction register, and program counter (PC). A group of twenty switches and buttons were used to read or modify any selected register. Some of the Nicolet 1080 computers were sold as part of Bruker NMR Spectrometers, and hence labeled BNC 12.

### Specific programming techniques

The 1080 computer operated only on integer numbers. Floating point arithmetic was possible using a software package, and hence slow.
For fast fourier transform, the sin and cos functions were realized by table lookup, not by direct computation. The value of the trigonometric functions was represented as binary fraction, i.e. a value of 1.0 was represented as the largest positive number in a 20-bit word, assuming a decimal point "left" of the number.
When data points became too large to be represented in 20 bits during transform, the whole data set was scaled down by a factor of 2 in order to prevent overflow.