With the introduction of systems without the familiar blinking lights and toggle switches, Data General had to create an alternative method of data entry and interrogation of data and registers that the traditional physical consoles offered and this was achieved by the creation of the Virtual Console (VC).
The VC allows you to interact with the computer through the system terminal connected to the CPU’s on-board asynchronous communications interface. Simple commands which you enter on the terminal keyboard allow you to examine and/or modify processor registers or memory locations; start, stop, and continue program execution; and, initiate a program load from a selected device.
On power up, the computer performs a self-test. After a successful completion of the self-test, the following message appears on the system terminal:
OK !000000 !
OK followed by !000000 indicates that the self-test ran successfully. The digits following the ! are the contents of the program counter; on power-up, they are all zeroes. The next ! is the VC prompt; it tells you that the virtual console is ready to accept input.
In addition to power-up, the VC is entered when one of the following occurs:
- A HALT instruction is executed.
- The RESET switch on the front console is pressed and the front console is unlocked.
- The BREAK key on the system terminal is pressed, the front console is unlocked, and the CPU is not in a microcode loop.
Under these conditions, the incremented contents of the program counter are typed when the VC is entered. These are followed by the ! VC prompt. For example, if the program counter was at location 2077 when the VC is entered, the following would be typed:
The VC operates on ‘cells’. A cell is either a memory location (memory cell) or an internal register (internal cell) such as an accumulator. Each internal register that the VC can access has an internal cell number and these are:
In order to examine or modify any cell, you must ‘open’ it. Opening a cell causes its contents to be printed, in octal, on the terminal. To open a cell, use one of the commands listed in the table below. The VC will respond only to octal numbers and upper case letters.
NOTE: In the above table, the term ‘current cell’ means the last cell that you opened.
When you open a memory cell, the VC interprets the address as a 19-bit physical address. You do not have to type leading zeroes. All you have to type is the physical address in octal representation. For example, if you want to open location 5, type 5/. If you want to examine the top location of a system which contains 1Mbyte of memory type 1777777/.
Once you have opened a cell, you may change its contents by simply typing (in octal) the number whose value is to be placed in the cell. Terminate the expression with a Carriage Return, Line Feed or New Line. Note that if you type Carriage Return the next cell will also be opened. This is convenient when you need to enter data into several consecutive locations.
The VC has the following function commands. All commands must be typed in octal numbers and upper case letters:
The VC uses two commands to start program execution. Typing P starts program execution at the location specified by internal cell number 4 (the return address). You can also start program execution by typing nR. In this case, the CPU issues an I/O Reset command, clears the MMPU, and starts program execution at the location specified by the octal number n.
Typing I causes the CPU to issue an I/O Reset command and clear the MMPU.
Type n\. to program load from an I/O device, where n is the device code, in octal, of the I/O device to be used. Bit 0 of n should be a 1 if the I/O device is high-speed, and 0 if the I/O device is low-speed. For example, if the program load device is a high-speed 6060 disc drive whose device code is 27, you would type the following:
This is the same as entering 100027 on the front panel switches (of say a Nova 3) and toggling the Program Load switch.
You can perform a Data General Field Service cassette bootstrap load by typing F.
Virtual Console Errors
If you type a character that the VC does not recognize, it will print a ? followed by a New Line. If you wish to cancel an entire line you just entered, type a K. In this case the VC will respond with a ? followed by a New Line.
If you attempt to open a non-existent memory cell, the 16-bit contents of the cell printed in octal on the terminal will be all 1’s. You can verify that this location does not exist by entering a new value containing 0’s in the cell and then re-opening it. If it still contains all 1’s, the location is non-existent.
If you attempt to open a non-existent internal cell, the terminal will print random and meaningless data.
A CPU may fail its power on tests, if these are not terminal (in the sense that the CPU is able to execute microcode and the asynchronous interface is as least able to transmit data) then you may receive a partial response from the self-test, for example just the O. In most cases you can halt the self-test and receive a VC prompt by pressing RESET on the front panel – with a bit of luck you will get a VC ! prompt.
You can then start to use the VC for fault diagnosis – for example you can use the VC to look at the memory contents as well as write a value into memory and read it back if you suspect that a memory fault was encountered.