To:	Users
From:	Richard Cornwell
Subj:	IBM 701 Simulator Usage
Date:	01-May-2006

			COPYRIGHT NOTICE

The following copyright notice applies to both the SIMH source and binary:

   Original code published in 1993-2007, written by Robert M Supnik
   Copyright (c) 1993-2007, Robert M Supnik
   IBM 701 simulator written by Richard Cornwell

   Permission is hereby granted, free of charge, to any person obtaining a
   copy of this software and associated documentation files (the "Software"),
   to deal in the Software without restriction, including without limitation
   the rights to use, copy, modify, merge, publish, distribute, sublicense,
   and/or sell copies of the Software, and to permit persons to whom the
   Software is furnished to do so, subject to the following conditions:

   The above copyright notice and this permission notice shall be included in
   all copies or substantial portions of the Software.

   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
   ROBERT M SUPNIK OR RICHARD CORNWELL BE LIABLE FOR ANY CLAIM, DAMAGES OR
   OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
   ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
   DEALINGS IN THE SOFTWARE.

   Except as contained in this notice, the name of Robert M Supnik or Richard
   Cornwell shall not be used in advertising or otherwise to promote the sale,
   use or other dealings in this Software without prior written authorization
   from both Robert M Supnik and Richard Cornwell.

This memorandum documents the IBM 701 simulator.

   The IBM 701 also know as "Defense Calculator" was introduced by IBM
   on April 7, 1953. This computer was start of IBM 700 and 7000 line.
   Memory was 2048 36 bit words. Each instruction could be signed plus
   or minus, plus would access memory as 18 bit words, minus as 36 bit
   words. There was a expansion option to add another 2048 words of
   memory, but I can't find documentation on how it worked. Memory cycle
   time was 12 microseconds. The 701 was withdrawn from the market
   October 1, 1954 replaced by 704 and 702. A total of 19 machines were
   installed.                                       

1. Simulator Files

To compile the IBM 701, you must define USE_INT64 and I701 as part of the
compilation command line.

sim/		scp.h
		sim_console.h
		sim_defs.h
		sim_fio.h
		sim_rev.h
		sim_tape.h
		scp.c
		sim_fio.c
		sim_tape.c

sim/i7090/	i7090_defs.h
		i701_cpu.c		701 CPU, Channel, interface
		i7090_chan.c
		i701_sys.c
		i7090_cdr.c		701 specific peripherals
		i7090_cdp.c
		i7090_lpr.c
		i7090_drum.c
		i7000_defs.h		Generic 7000 peripherals.
		i7000_chan.c
		i7000_mt.c

2. IBM 701 Features

The IBM 701 simulator is configured as follows:

device		simulates
name(s)

CPU		701 CPU with 2KW of memory
CH		704 devices.
MT		729 magnetic tape controller, channel A (required)
CR 		711 card reader
CP		721 card punch
LP		716 line printer
DR0		733 drum

The 701 simulator implements several unique stop condition:

	- undefined CPU instruction
	- divide check on a divide and halt instruction
	- write select of a write protected device

The LOAD command will load a card binary image file into memory. An
octal dump file, or a psuedo assembly code.

2.1 CPU

Memory size is 2KW on a standard CPU.

CPU registers include the visible state of the processor as well as the
control registers for the interrupt system.

	name		size	comments

	IC		15	program counter
	AC		38	accumulator
	MQ		36	multiplier-quotient
	SW1..SW6	1	sense switches 1..6
        SW              6       sense switches
	SL1..4		1	sense lights 1..4
	ACOVF		1	AC overflow indicator
	DVC		1	divide check indicator
	IOC		1	I/O check indicator

The CPU can maintain a history of the most recently executed instructions.
This is controlled by the SET CPU HISTORY and SHOW CPU HISTORY commands:

	SET CPU HISTORY		clear history buffer
	SET CPU HISTORY=0	disable history
	SET CPU HISTORY=n	enable history, length = n
	SHOW CPU HISTORY	print CPU history
	SHOW CPU HISTORY=n	print first n entries of CPU history

2.2 I/O Channels (CH)

The channel device on the 701 is only used by simulator, and has no controls
or registers.

2.3 Peripherals

2.3.1 711 Card Reader (CR)

The card reader (CR) reads data from a disk file.  Cards are simulated
as ASCII lines with terminating newlines.  

Card reader files can either be text (one character per column) or
column binary (two characters per column).  The file type can be
specified with a set command:

        SET CR FORMAT=TEXT      sets ascii text mode
        SET CR FORMAT=BINARY    sets for binary card images.
        SET CR FORMAT=BCD       sets for BCD records.
        SET CR FORMAT=CBN       sets for column binary BCD records.
        SET CR FORMAT=AUTO      Automaticly determines format.

or in the ATTACH command:

	ATT CR <file>		attaches a file

The card reader can be booted with the:

	BOOT CR			loads first 3 words of card.

Error handling is as follows:

	error			processed as

	not attached		report error and stop

	end of file		out of cards

	OS I/O error		report error and stop

2.3.2 721 Card Punch (CP)

The card reader (CP) writes data to a disk file.  Cards are simulated
as ASCII lines with terminating newlines. 

Card punch files can either be text (one character per column) or
column binary (two characters per column).  The file type can be
specified with a set command:

        SET CR FORMAT=TEXT      sets ascii text mode
        SET CR FORMAT=BINARY    sets for binary card images.
        SET CR FORMAT=BCD       sets for BCD records.
        SET CR FORMAT=CBN       sets for column binary BCD records.
        SET CR FORMAT=AUTO      Automaticly determines format.

or in the ATTACH command:

	ATT CP <file>		attaches a file

Error handling is as follows:

	error			processed as

	not attached		report error and stop

	OS I/O error		report error and stop

2.3.3 716 Line Printer (LP)

The line printer (LP) writes data to a disk file as ASCII text with
terminating newlines. Currently set to handle standard signals to 
control paper advance.

	SET LP NO/ECHO		Sets echoing to console of lineprinter output.

Error handling is as follows:

	error			processed as

	not attached		report error and stop

	OS I/O error		report error and stop

The Printer supports the following SPRA n selection pulses for controlling
spacing (spacing occurs before the line is printed):

	SPRA	2		Single space.
	SPRA	1		To top of form.
	SPRA	3		Double space.
	SPRA	4		Triple space.
	SPRA	9		Suppress linefeed after print.

	SPT			Will skip if any printer line has been pulsed.

	Defualt with no SPRA is to single space before printing.


2.3.4 729 Magnetic Tape (MTA)

There are 10 tape devices.

Each individual tape drive support several options: MTA used as an example.

        SET MTn ONLINE         Sets the mag tape drive online.
        SET MTn OFFLINE        Sets the mag tape drive offline and not ready.
        SET MTn REWIND         Sets the mag tape to the load point.
        SET MTn LOCKED         Sets the mag tape to be read only.
        SET MTn WRITEENABLE    Sets the mag tape to be writeable.
        SET MTn LOW            Sets mag tape to low density.
        SET MTn HIGH           Sets mag tape to high density.

Options: Density LOW/HIGH does not change format of how tapes are written. And
is only for informational purposes only.

Tape drives can be booted with:
	BOOT MTn

2.3.4 733 Drum (DR)

Up to 16 units can be attached to the CPU. Each drum is 2048K words in size.
They are all stored in one file.

       SET DR0 UNITS=n

Drum unit 0 can be booted with:

       BOOT DR0

2.6 Symbolic Display and Input

The IBM 701 simulator implements symbolic display and input.  Display is
controlled by command line switches:

	-c			display as BCD character
	-m			display instruction mnemonics

Input parsing is controlled by the first character typed in or by command
line switches:

	' or -c			BCD character
	" or -s			BCD string
	alphabetic		instruction mnemonic
	numeric			octal number

Instruction input uses standard 701 assembler syntax.  There is one
basic instruction classes, memory reference.

	opcode address
