.;10-NOV-74
.;03,04-NOV-74
.;02-NOV-74
.;01-NOV-74
.;31-OCT-74 -- ERG
.FLAGS ALL
.FLAGS CAPITALIZE [		;WE NEED "<" AND ">" TOO MUCH.
.FLAGS INDEX ]
.PAGE SIZE 60,70
.TITLE ^^S1401\\
.SPACING 1
.PARAGRAPH 0
.BLANK 10
.CENTER
^^S1401\\
.CENTER
^^1401 SIMULATOR (RSTS VERSION)\\
.CENTER
^AUTHOR: ^E. ^GIEGLER
.CENTER
^DATE: ^JANUARY 1975
.CENTER
^PROGRAM ^VERSION: [05B-4
.SKIP 5
.LEFT MARGIN +15
.RIGHT MARGIN -15
[NOTICE: ^THIS MEMORANDUM DESCRIBES A PROGRAM WHICH
IS SUPPLIED BY
^CARLETON ^COLLEGE
WITHOUT ANY COMMITMENT FOR FUTURE SUPPORT OR MAINTENANCE.
.LEFT MARGIN -15
.RIGHT MARGIN +15

.PAGE
.CENTER
^^TABLE OF CONTENTS\\
.SKIP 2
.TAB STOPS 14,65
.NOFILL
		^PAGE
.SKIP
^CHAPTER 1	^INTRODUCTION	3
.SKIP
^CHAPTER 2	^START UP PROCEDURES	7
2.1	^NORMAL ENTRY	7
2.2	^ADDING ^S1401 TO A [RSTS SYSTEM	8
.SKIP
^CHAPTER 3	^S1401 ^SUPERVISOR	10
3.1	^INTRODUCTION	10
3.2	^KEYBOARD INPUT	10
3.3	^SUPERVISOR COMMANDS	11
3.4	^SINGLE CHARACTER COMMANDS	11
3.5	^ADDRESS REGISTER MANIPULATION	29
3.6	1401 CORE MODIFICATION	30
.SKIP
^CHAPTER 4	^S1401 ^RUN-^TIME ^INTERPRETER	31
4.1	^INTRODUCTION	31
4.2	1401 [CPU SIMULATION	32
4.3	1402 CARD READER/PUNCH SIMULATION	35
4.4	1403 PRINTER SIMULATION	37
4.5	1407 CONSOLE INQUIRY STATION SIMULATION	37
4.6	1311 DISK SIMULATION	38
.SKIP
^CHAPTER 5	^ERROR ^MESSAGES AND ^RECOVERY	42
5.1	"!!! -" MESSAGES	42
5.2	[RSTS ERROR MESSAGES	45
.SKIP
^APPENDIX ^A	^INTERNAL INDICATORS	46
^APPENDIX ^B	^1401 OP-CODES AND LENGTHS	47
^APPENDIX ^C	^S1401 SUPERVISOR COMMAND SUMMARY	49
^APPENDIX ^D	^S1401 AND 1401 CHARACTER CODES	50
^APPENDIX ^E	^DETAILS ON [ASTAR AND [BSTAR IN ^S1401	52
^APPENDIX ^F	^CONDENSED ^DISK ^DUMP AND ^LOAD	53
^APPENDIX ^G	^MODIFYING [RSTS FOR PERMANENT ^S1401	55
^APPENDIX ^H	"^AUTOMATIC ^DATE" ROUTINE	56
^APPENDIX ^I	^EXPANDING ^S1401	57
^APPENDIX ^J	^ASSEMBLING ^S1401 FROM SOURCE MODULES	59
.SKIP
^INDEX		60
.FILL
.TAB STOPS 8,16,24,32,40,48,56,64

.SUBTITLE ^CHAPTER 1 -- ^INTRODUCTION
.PAGE
.CENTER
^CHAPTER 1
.SKIP
.CENTER
[INTRODUCTION
.SKIP 2
.PARA
^THE 1401 ^SIMULATOR (^S1401) RUNS 1401 PROGRAMS ON THE [PDP-11
UNDER [RSTS, THE ^RESOURCE ^SHARING ^TIME-SHARING ^SYSTEM.
.INDEX ^MEMORY REQUIREMENTS
^IT REQUIRES 18^K WORDS OF MEMORY IN ADDITION TO THE
REQUIREMENTS OF [RSTS AND [BASIC-PLUS.
^OF THIS 18^K, 6^K IS USED BY THE ^S1401 "RUN-TIME-SYSTEM", AND
THE OTHER 12^K IS "USER AREA".
^WHEN YOU RUN MULTIPLE ^S1401 JOBS, THE "RUN-TIME-SYSTEM" IS
SHARED BY ALL JOBS.
^THE "USER AREAS" ARE SWAPPED IN AND OUT BY [RSTS, BUT THE
"RUN-TIME-SYSTEM" REMAINS IN MEMORY AS LONG AS ANY [RSTS JOB IS
USING IT.
.PARA
^THE MAXIMUM 1401 MACHINE CONFIGURATION THAT [S1401-V05B CAN
SIMULATE IS:
.SKIP
.TEST PAGE 10
.NO FILL
	16^K 1401 WITH THE FOLLOWING SPECIAL FEATURES:
.INDEX ^SPECIAL FEATURES
		^SENSE SWITCHES ^B-^G
		^HIGH-LOW-EQUAL COMPARE
		^INDEXING
		^MODIFY ADDRESS ([MA)
		^STORE ^A-ADDRESS REGISTER ([SAR)
		^STORE ^B-ADDRESS REGISTER ([SBR)
		^MOVE CHARACTERS TO RECORD MARK OR [GMWM ([MCM)
		^SCAN DISK INSTRUCTION
		^DIRECT DISK SEEK
	1402 CARD READER/PUNCH
	1403 LINE PRINTER
	1407 CONSOLE INQUIRY STATION
	1311 DISK DRIVES (UP TO 5)
.SKIP
.FILL
^AMONG THE 1401 SPECIAL FEATURES NOT IMPLEMENTED IN [S1401-V05B ARE THE FOLLOWING:
.SKIP
.TESTPAGE 7
.NOFILL
	^HARDWARE MULTIPLY-DIVIDE
	^BRANCH IF ^BIT ^EQUAL INSTRUCTION
	^MOVE AND ^INSERT ^ZEROS INSTRUCTION
	^START ^READ ^FEED INSTRUCTION
	^START ^PUNCH ^FEED INSTRUCTION
	1311 DISK ^TRACK-^RECORD INSTRUCTIONS
	^MAGTAPE CAPABILITY
.FILL
.PARA
^S1401 IS DESIGNED TO KEEP THE CONVERSION EFFORT AND OPERATOR
RETRAINING TO A MINIMUM.
^FOR EXAMPLE, IF YOU HAVE A 1401 PROGRAM OBJECT DECK ON CARDS,
YOU CAN SIMPLY ENTER THE CARDS IN THE [PDP-11 CARD READER, AND
TYPE THE QUOTED PARTS OF THE FOLLOWING DIALOGUE:
.NOFILL
.SKIP
.TESTPAGE 9
.UPPER CASE
	"RUN $S1401"		    (C\\OMMAND TO ^^RSTS)
.SKIP
	S1401 V05B-3
	1403 PRINTER IS "LP:"	    (I\\F THE PROGRAM USES THE PRINTER)^^
	1402 CARD READER IS "CR:"   (A\\SSIGN THE READER)^^
.SKIP
	*"L"			    \\(^LOAD COMMAND)
.FILL
.SKIP
^THE PROGRAM OBJECT DECK WILL BE LOADED AND EXECUTED!
.PARA
^PROGRAMS INVOLVING SIMULATED PUNCHED CARD OUTPUT
AND SIMULATED DISK [I/O
ARE ONLY SLIGHTLY MORE COMPLEX.
^THE TRICKIEST CONVERSION FROM THE 1401 TO ^S1401 IS TRANSFERING
DATA FROM 1401 DISKS (1311'S) TO ^S1401 DISKS ([RK03'S OR [RK05'S).
^THESE CONVERSIONS ARE DISCUSSED ON THE FOLLOWING PAGES.
.SKIP 2
.PARA


^&1402 CARD INPUT\& CAN BE SIMULATED BY ANY [RSTS INPUT DEVICE,
.INDEX 1402 SIMULATION
SUCH AS:
.BR
.TESTPAGE 4
.NOFILL
		[CR11 CARD READER
		^D^E^CTAPE FILE
		^DISK FILE
		[PC11 PAPER TAPE READER
.FILL
.SKIP
^EVEN THE KEYBOARD MAY BE USED, ALTHOUGH IT MIGHT NOT ECHO PROPERLY.
^ONLY ONE INPUT DEVICE CAN BE USED AT A TIME, SINCE THE 1401 HAS
ONLY ONE CARD READER.
^EACH TIME A 1401 READ INSTRUCTION IS EXECUTED, ONE CARD OR CARD
IMAGE IS READ FROM THE SELECTED DEVICE INTO SIMULATED 1401 MEMORY
LOCATIONS 1 THRU 80.
.PARA
^THE USER SELECTS THE INPUT DEVICE WITH THE SUPERVISOR "^C" COMMAND
(SEE SECTION 3.4.3).
.SKIP 2
.PARA


^&1402 CARD OUTPUT\& IS SIMULATED BY ANY [RSTS OUTPUT DEVICE,
SUCH AS:
.BR
.TESTPAGE 3
.NOFILL
		^D^E^CTAPE FILES
		^DISK FILES
		[PC11 PAPER TAPE PUNCH
.FILL
.SKIP
^EVEN THE [LP11 PRINTER OR A KEYBOARD COULD BE USED FOR OUTPUT OF
80 COLUMN CARD IMAGES.
^UP TO 6 OUTPUT DEVICES CAN BE SELECTED BY THE USER.
^WHERE DO THESE SIX OUTPUT CARD FILES ORIGINATE?
^ALTHOUGH THE 1401 HAS ONLY ONE CARD PUNCH, THERE ARE 3 OUTPUT STACKERS
AND 3 INPUT STACKERS.
.INDEX ^STACKERS
^EACH STACKER CAN BE USED TO CREATE A SEPARATE CARD FILE.
(^THE OVERLAPPED STACKER - 8/2 - IS SEPARATED INTO TWO STACKERS IN
^S1401.)
^BY USING THE "^K" COMMAND, THE USER CAN DIRECT THE CARD IMAGES FROM
ANY STACKER OR COMBINATION OF STACKERS TO ONE OF THE [RSTS OUTPUT
DEVICES OR CAN CAUSE THE OUTPUT TO A STACKER OR SET OF STACKERS TO
"VANISH".
.PARA
.TESTPAGE 3
^FOR EXAMPLE, SUPPOSE YOU WISH TO TRANSFER A CARD DECK TO A ^D^E^CTAPE
FILE.
^HERE IS ONE QUICK WAY TO DO THIS:
.LEFT MARG +8
.SKIP
.TESTPAGE 5
^KEY IN THIS ONE INSTRUCTION 1401 PROGRAM THAT SIMPLY READS CARDS
(SEE SECTION 3.6)...
.SKIP
	*500= XX:_^1500_^.<[CR>
.SKIP
^SPECIFY THE [NR STACKER TO BE OUTPUT TO THE DESIRED ^D^E^CTAPE FILE
(WE'LL USE "[TEST" AS THE FILE NAME).
^USE THE "^K" COMMAND TO DO THIS:
.SKIP
.TESTPAGE 7
.NOFILL
.UPPER CASE
	*K<CR>
	NR STACKER IS DT2:TEST<CR>	(D\\RIVE^^ 2)
	1 STACKER IS <CR>
	2 STACKER IS <CR>
	NP STACKER IS <CR>
	4 STACKER IS <CR>
	8 STACKER IS <CR>
.LOWER CASE
.FILL
.SKIP
^AND RUN THE PROGRAM.
(^SET [ISTAR TO 500, AND ^START):
.SKIP
.TESTPAGE 3
.NOFILL
	*^I=XXX NNNNN  500<[CR>
.SKIP
	*[S<CR>
.SKIP
.FILL
^WHEN THE PROGRAM STOPS, CLOSE THE ^D^E^CTAPE FILE WITH THE "^E"
COMMAND.
.LEFT MARG -8
.SKIP 2
.PARA


^&1403 PRINTER OUTPUT\& IS NORMALLY SIMULATED ON A 132 COLUMN [LP11
LINE PRINTER.
.INDEX 1403 SIMULATION
^IT MAY ALSO BE WRITTEN ONTO A DISK OR ^D^E^CTAPE FILE FOR LATER
PRINTING.
.PARA
^THE 1403 CARRIAGE CONTROL TAPE IS FULLY SIMULATED BY ^S1401.
^ALL 12 CHANNELS MAY BE SET AT ANY LINE, AND THE FORM LENGTH
MAY BE SET BY THE USER (MAXIMUM FORM LENGTH IS 132 LINES).
^SEE THE "^P" COMMAND FOR DETAILS.
.PARA
^THE CHARACTER SET ON ^L^P11'S IS SLIGHTLY DIFFERENT FROM THE 1403.
1401 PROGRAMS USING SPECIAL CHARACTERS MAY REQUIRE SLIGHT MODIFICATION.
^SEE ^APPENDIX ^D FOR A COMPARISON OF 1403 AND [LP11 CHARACTERS.
.PARA
.TEST PAGE 3
^S1401 HAS SEVERAL BUILT IN OPTIONS FOR THE PRINTER:
.BR
	^PRINT ZERO AS THE LETTER ^O (FOR SLASHED ZEROS).
.BR
	^SLOW ^PRINT AND ^SINGLE-CYCLE-PRINT FOR FORMS ADJUSTMENT.
.SKIP 2

.PARA
^&1407 CONSOLE INQUIRY STATION\& IS SIMULATED BY THE CONSOLE
KEYBOARD.
.INDEX 1407 SIMULATION
.TESTPAGE 6
^THE 1407 SPECIAL FUNCTION KEYS:
.SKIP
.NO FILL
.UPPER CASE
	REQUEST/ENTER		CLEAR
	RESPOND/TYPEOUT		WORD MARK
.LOWER CASE
.FILL
.SKIP
ARE SIMULATED AS DESCRIBED IN SECTION 4.5.
.SKIP 2
.PARA


^&1311 DISK PACKS\& ARE SIMULATED ON [RK03 (OR [RK05) DISK CARTRIDGES.
.INDEX 1311 SIMULATION
^EACH [RK03 CARTRIDGE SIMULATES AN ENTIRE 1311 DISK PACK.
^THESE [RK03 DISKS ARE NOT STANDARD [RSTS DISKS, AND CANNOT BE USED FOR STORAGE
OF [RSTS FILES.
.PARA
^CONVERSION FROM 1311 DISK PACKS TO [RK03 DISKS IS THE BIGGEST HEADACHE
OF THE CONVERSION PROCESS.
^THE DATA MUST BE TRANSFERRED VIA CARDS.
^TWO 1401 PROGRAMS ARE INCLUDED IN THIS PACKAGE TO ASSIST THE USER WITH
THIS PROCESS:
.SKIP
^^	CONDENSED DISK DUMP
.BR
	CONDENSED DISK LOAD
\\
.SKIP
^THEY OPTIMIZE CARD USAGE BY SQUEEZING OUT STRINGS OF BLANKS.
(^SEE ^APPENDIX ^F FOR DETAILS.)
.SKIP 2
.PARA


^&^TIMINGS: (^S1401#VS.#1401)\&
.INDEX TIMINGS (COMPARISON)
.PARA
^PROCESSING TIMES FOR ^S1401 VARY FROM THE SLOW ARITHMETIC OPERATIONS
([ADD AND [SUB FOR EXAMPLE, ARE 2 TIMES SLOWER THAN THE 1401)
TO THE FAST MOVE OPERATIONS
([LCA IS TWICE AS FAST).
.PARA
^INPUT/OUTPUT TIMES VARY DEPENDING ON THE DEVICE AND THE [RSTS SYSTEM
LOAD, BUT ALL [I/O IS BLOCKED AND BUFFERED TO ACHEIVE MAXIMUM SPEED.
^OF COURSE, IF CARD [I/O IS PERFORMED WITH DISK FILES, ^S1401 WILL
OUT RUN THE 1401 BY A MAGNITUDE OR TWO.
.PARA
^DISK TIMING IS DIFFICULT TO COMPARE.
^BOTH THE 1401 AND [PDP-11 DISKS SPIN AT THE SAME RATE.
^THE "SEEK" (ARM MOVEMENT) OF THE [PDP-11 IS MUCH FASTER THAN
THE 1401 "SEEK".
^THE ACTUAL DISK READ OPERATION MAY BE SLOWER IN ^S1401, BUT THIS
IS USUALLY OFFSET BY THE FASTER SEEK TIME.
.PARA
^SAMPLE RUNS INDICATE THAT ^S1401 "AVERAGE" RUN TIME IS WITHIN
10% OF THE 1401.
^THESE TIMING COMPARISONS ARE FOR SINGLE JOBS.
.PARA
^WHEN YOU TIME-SHARE TWO OR MORE ^S1401 JOBS, YOU WILL RECOVER MUCH
OF THE TIME THAT IS NORMALLY LOST WAITING FOR ^INPUT/^OUTPUT.
(^WHEN ONE JOB IS WAITING FOR [I/O, THE OTHER JOB(S) CAN BE RUNNING.)
^THEREFORE, THE TOTAL THROUGHPUT PER UNIT TIME WILL BE INCREASED.
^AND, OF COURSE, YOU CAN BE RUNNING [BASIC-PLUS JOBS UNDER [RSTS AT
THE SAME TIME.

.SUBTITLE ^CHAPTER 2 -- ^START-UP ^PROCEDURES
.PAGE
.CENTER
^CHAPTER 2
.SKIP
.CENTER
^^S1401 STARTUP PROCEDURES\\
.SKIP 3


^&2.1###^NORMAL#ENTRY\&
.PARA
^TO RUN ^S1401 UNDER [RSTS [V05B-24, TYPE:
.SKIP
	^^RUN $S1401<CR>
\\
.SKIP
OR, IF YOU HAVE MADE THE APPROPRIATE CHANGES TO THE [CCL FILE, TYPE:
.SKIP
	^^S1401<CR>\\
.SKIP
^S1401 IDENTIFIES ITSELF AND ASKS FOR PRINTER AND READER ASSIGNMENTS.
^YOU MAY ENTER DATASET SPECIFICATIONS (SEE "^C" AND "^P" COMMANDS)
OR RESPOND WITH [<CR> TO BYPASS ASSIGNMENT.
.SKIP
.TEST PAGE 8
	^S1401 VERSION-NUMBER
.SKIP
	^^1403 PRINTER IS
.BR
	1402 CARD READER IS\\
.SKIP
	^^!!! - DEAD START\\
.SKIP
	*
.SKIP
^S1401 IS NOW READY TO ACCEPT ^SUPERVISOR COMMANDS.
(^SEE ^CHAPTER 3)
.PARA
^IF YOU GET ERRORS BEFORE ^S1401 IDENTIFIES ITSELF, THE ^S1401
"RUN-TIME-SYSTEM" IS NOT PROPERLY SET UP.
^THE PROPER SET UP PROCEDURES ARE DESCRIBED IN THE FOLLOWING
SECTIONS OF THIS CHAPTER.
^IF YOU GET ERRORS DURING ASSIGNMENT OF READER OR PRINTER, REFER
TO THE APPROPRIATE ERROR MESSAGE IN ^CHAPTER 5 AND THE
DESCRIPTIONS OF THE "^C" AND "^P" COMMANDS IN ^CHAPTER 3.

.PAGE
^&2.2###^ADDING#^S1401#TO#YOUR#^^RSTS\\#^SYSTEM#(FOR#THE#^SYSTEM#^MANAGER)
\&
.PARA
^THE INITIAL BUILD PROCEDURE HAS FIVE STEPS:
.LEFT MARG +8
.PARA -4
1.##^BRING UP ^^RSTS (V05B-24)\\.
.BR
^LOGIN UNDER A PRIVILEGED ACCOUNT.
.BR
^MOUNT THE ^D^E^CTAPE CONTAINING THE FOLLOWING FILES ON DRIVE 0
(WRITE LOCKED):
.SKIP
.NOFILL
^^
	S1401.LDA		RTSBLD.BAS
	POV.LDA			POVBLD.BAS
	S1401.BAS		RTSNAM.BAS
	ADDRTS.BAS
\\
.FILL
.PARA
2.##^BUILD THE ^S1401 RUN-TIME SYSTEM.
.BR
^DELETE ANY ["_[0,1_]S1401.*" FILES.
.BR
^START THE BUILDING PROGRAMS:
.SKIP
	^^RUN DT0:RTSBLD\\
.SKIP
^THIS PROCESS TAKES ABOUT FIVE MINUTES, AND TYPES ["READY"
WHEN DONE.
^NO ERRORS SHOULD OCCUR.
.BR
^IF YOU GET A ["NO#ROOM" MESSAGE, YOU MUST RESTRUCTURE YOUR SYSTEM
DISK TO PROVIDE A CONTIGUOUS AREA OF 32. BLOCKS.
.PARA
3.##^CREATE THE RUN-TIME SYSTEM LOADING PROGRAM FROM THE MODEL
SUPPLIED:
.SKIP
.TEST PAGE 2
	^^OLD DT\\N^^:S1401.BAS\\
.BR
	^^LIST\\
.SKIP
^ALTER LINE 20 AS SUITS YOUR SYSTEM.
^YOU MUST KNOW WHAT THE FIRST FREE 1^K MEMORY BANK IS.
^YOU GET THIS INFORMATION FROM LISTING THE MEMORY ALLOCATION MAP
AT [RSTS START-UP TIME.
^THE 1^K BLOCKS ARE NUMBERED FROM 0% UPWARDS.
.NOFILL
.TEST PAGE 4
	  ^L%=0%	=> ^START LOADING AT 000000
	  ^L%=1%	=> ^START LOADING AT 004000
	  ^L%=2%	=> ^START LOADING AT 010000
	  ETC.
.FILL
.SKIP
THEN SAVE THE COMPILED PROGRAM:
.NOFILL
.SKIP
.TESTPAGE 2
	^^COMPILE $S1401\\
	^^NAME "$S1401.BAC" AS "$S1401.BAC<232>"\\
.FILL
.PARA
4.##^PUT THE PROGRAM ^^ADDRTS.BAC\\ ON ACCOUNT 1,2:
.NOFILL
.SKIP
.TESTPAGE 2
	^^OLD DT\\N^^:ADDRTS\\
	^^COMPILE $ADDRTS\\
.FILL
.PARA
5.##(^OPTIONAL) -- ^MODIFY [START.CTL, [CRASH.CTL, AND [SHUTUP TO PROVIDE
AUTOMATIC ADDITION AND REMOVAL OF THE ^S1401 RUN-TIME SYSTEM
TO [RSTS.
^SEE APPENDIX ^G FOR SUGGESTED PATCHES FOR THIS.
.SKIP 2
.LEFT MARGIN -8
.PARA 0
^IF YOU DO NOT MODIFY [START.CTL AND [SHUTUP, YOU MUST ADD AND REMOVE
THE ^S1401 RUN-TIME SYSTEM MANUALLY.
^TO ADD IT:
.SKIP
.TEST PAGE 2
	^^RUN $ADDRTS\\
.BR
	^^NAME OF RUN-TIME SYSTEM?  S1401\\
.SKIP
^TO REMOVE IT:
.SKIP
.TEST PAGE 2
	^^RUN $ADDRTS\\
.BR
	^^NAME OF RUN-TIME SYSTEM?  S1401/REMOVE\\
.SKIP
.PARA
^IF YOU DON'T REMOVE IT BEFORE ATTEMPTININTO RUN [SHUTUP,
THE FOLLOWING ERROR WILL BE TYPED JUST BEFORE FINAL SHUTDOWN:
.SKIP
	^^ILLEGAL SYS() USAGE\\
.SKIP
^TO RECOVER, USE [$ADDRTS TO REMOVE ^S1401 AND RERUN [SHUTUP.

.SUBTITLE ^CHAPTER 3 -- ^S1401 ^SUPERVISOR
.PAGE
.CENTER
^CHAPTER 3
.SKIP
.CENTER
^^S1401 SUPERVISOR\\
.SKIP 3


^&3.1###^INTRODUCTION\&
.PARA
^THERE ARE TWO ^S1401 MODES:
.SKIP
	^SUPERVISOR MODE
.BR
	^RUN-TIME INTERPRETER MODE
.PARA
^THE ^SUPERVISOR SIMULATES THE IDLE 1401.
^IT ACCEPTS COMMANDS FROM THE USER FOR SETTING UP [I/O DEVICES;
MANIPULATING 1401 CORE, ADDRESS REGISTERS, AND INDICATORS;
AND SIMULATING VARIOUS KEYS OF THE 1401.
.PARA
^THE ^RUN-TIME INTERPRETER SIMULATES THE ACTIVE 1401.
^IT FETCHES 1401 INSTRUCTIONS FROM SIMULATED 1401 CORE,
INTERPRETS THEM, AND PERFORMS THE APPROPRIATE LOGICAL
AND ARITHMETIC OPERATIONS ON SIMULATED 1401 CORE.
^SIMULATED INPUT AND OUTPUT ARE ALSO CONTROLLED
BY THE ^RUN-TIME INTERPRETER.
^CHAPTER 4 DESCRIBES THESE OPERATIONS IN DETAIL.
.SKIP 3


^&3.2###^KEYBOARD#INPUT#TO#THE#^S1401#^SUPERVISOR\&
.PARA
^THE CONSOLE KEYBOARD HAS TWO DISTINCT USES IN ^S1401:
.LEFT MARGIN +15
.PARA -4
1.##^IT IS USED TO INPUT COMMANDS AND SPECIFICATIONS TO THE
^S1401 ^SUPERVISOR (AS DESCRIBED BELOW).
.PARA
2.##^IT SIMULATES THE 1407 CONSOLE INQUIRY STATION WHEN
A 1401 PROGRAM IS BEING RUN BY THE ^RUN-TIME INTERPRETER
(DESCRIBED IN SECTION 4.5).
.LEFT MARGIN -15
.PARA 0
^TO DISTINGUISH BETWEEN THE TWO, THE ^SUPERVISOR TYPES A
PROMPTING ASTERISK (*) WHENEVER IT IS WAITING FOR A COMMAND FROM
THE USER.
.PARA
^[<RUBOUT> AND ^CONTROL/^U MAY BE USED TO DELETE CHARACTERS AND
ENTIRE LINES, BUT SOMETIMES [<RUBOUT> ACTS LIKE ^CONTROL/^U.
(^FOR EXAMPLE, IMMEDIATELY AFTER THE ASTERISK.)
^IF YOU TYPE A BAD CHARACTER YOU WILL GET THE MESSAGE:
.SKIP
	^^INVALID RESPONSE\\
.SKIP
AND ^S1401 WILL WAIT FOR RE-ENTRY OF THE LINE.

.PAGE
^&3.3###^SUPERVISOR#^COMMANDS\&
.INDEX ^SUPERVISOR COMMANDS
.PARAGRAPH 0
^WHEN THE S1401 ^SUPERVISOR IS WAITING FOR A COMMAND IT TYPES AN
ASTERISK (*).  ^THE USER MAY NOW TYPE ONE OF THE FOLLOWING:
.SKIP
	^ONE OF THE 24. SINGLE CHARACTER COMMANDS.
.BR
	^AN ADDRESS-REGISTER EXAMINE/CHANGE REQUEST.
.BR
	^A 1401-CORE EXAMINE/CHANGE REQUEST.
.SKIP 3


^&3.4###^SINGLE#CHARACTER#COMMANDS\&
.INDEX ^SINGLE CHARACTER COMMANDS
.PARA
^THESE COMMANDS MUST CONTAIN ONE AND ONLY ONE CHARACTER FOLLOWED
BY A CARRIAGE RETURN.  ^THE FOLLOWING FIVE COMMANDS PASS CONTROL
TO THE ^S1401 ^RUN-^TIME-^INTERPRETER:
.NO FILL
	^G	^GO (^START AND ^DETACH)
	^L	^LOAD
	^S	^START
	^X	^START IN SINGLE-STEP MODE
	^Y	^START IN ADDRESS-STOP MODE
.FILL
^THE LATTER 4 COMMANDS SIMULATE 1401 KEYS OR COMBINATIONS OF 1401 KEYS.
.SKIP 1
^THE FOLLOWING 7 COMMANDS ALSO SIMULATE COMBINATIONS OF KEYS ON THE 1401.
.NO FILL
	^A	1311 DISK ^^ADDRESS-WRITE\\ SWITCH
	^D	^DUMP 1401 CORE (^STORAGE PRINT OUT)
	^E	^END OUTPUT FILES (^NON-PROCESS RUN-OUT)
	^Q	^RESTORE PRINTER CARRIAGE
	^R	^RESET (^START-^RESET KEY)
	^V	^VERIFY 1401 CORE (^^ALTER\\ AND ^^RESPOND/TYPEOUT\\)
	^Z	^ZERO 1401 CORE
.SKIP 1
THE REMAINING COMMANDS ARE:
	^B	^BACK TO ^^BASIC-PLUS\\ ^RUN-^TIME-^SYSTEM
	^C	^CARD READER (SIMULATED 1402) ASSIGNMENT
	^I	^INDICATOR EXAMINE (1401 INTERNAL INDICATORS)
	^J	^SET 1401 ^SENSE ^SWITCHES ("^JIGGLE")
	^K	^STACKER (SIMULATED 1402) ASSIGNMENTS
	^M	^MOUNT A SIMULATED 1311 DISK
	^O	^OPTIONS FOR SIMULATED PRINTER
	^P	^PRINTER (SIMULATED 1403) ASSIGNMENT AND SET-UP
	^T	^EMERGENCY TERMINATION
	^U	^UNMOUNT A SIMULATED 1311 DISK
	^W	^WRAP CHECK SWITCH
.SKIP 1
.FILL
THE FOLLOWING PAGES DESCRIBE THESE SINGLE CHARACTER ^SUPERVISOR
COMMANDS.

.PAGE
^&3.4.1###^A#^COMMAND#--#1311#DISK#^^WRITE-ADDRESS\\#^SWITCH
\&
.INDEX 1311 SIMULATION
.PARA
^TYPING THE "^A" COMMAND SIMULATES PRESSING THE ^^1311 WRITE-ADDRESS\\
KEY ONCE.  ^THE FIRST TIME THIS COMMAND IS TYPED, ^S1401 RESPONDS
WITH:
.SKIP
	^^WRITE ADDRESS SWITCH IS ON\\
.SKIP
^THE NEXT TIME THE "^A" COMMAND IS TYPED, ^S1401 RESPONDS:
.SKIP
	^^WRITE ADDRESS SWITCH IS OFF\\
.SKIP
^AND SO FORTH.
.PARA
^WHEN THE SWITCH IS OFF (NORMAL), THE ^S1401 INSTRUCTIONS
"^READ/^WRITE ^TRACK ^SECTORS WITH ^ADDRESSES"
ARE NOT PERMITTED.  ^THESE INSTRUCTIONS ARE:
.SKIP
^^
.CENTER
M%F6...R########M%F6...W
.CENTER
L%F6...R########L%F6...W
\\
.SKIP
^IF THE 1401 PROGRAM ATTEMPTS TO EXECUTE ONE OF THESE INSTRUCTIONS
WHILE THE SWITCH IS OFF, ^S1401 TYPES:
.SKIP
.CENTER
^^!!! - DISK ADDR. R/W ERROR\\
.SKIP
AND THE 1401 PROGRAM IS STOPPED.
^SINCE THE "^READ/^WRITE WITH ^ADDRESSES" INSTRUCTIONS ARE USED
MAINLY FOR INITIALIZING 1311 DISK PACKS, RECOVERY FROM THIS ERROR
NORMALLY INVOLVES RELOADING THE INITIALIZATION PROGRAM.
^THEREFORE, NO ^^RETRY\\ OPTION IS IMPLEMENTED IN ^S1401.
.PARA
^WHEN THE SWITCH IS ON, THE 4 SPECIAL INSTRUCTIONS LISTED ABOVE
ARE PERMITTED  TO EXECUTE.
.LEFT MARGIN +15
.RIGHT MARGIN -15
^WHEN THIS SWITCH IS ON, NORMAL WRITES (WITHOUT ADDRESSES)
CAN BE PERFORMED ON ^S1401.  ^THIS IS NOT TRUE OF THE 1401!!
.INDEX ^DIFFERENCES BETWEEN 1401 AND ^S1401
.LEFT MARGIN -15
.RIGHT MARGIN +15
.SKIP
.SKIP
^NO ERRORS WILL OCCUR WHEN TYPING THE "^A" COMMAND.
.FOOTNOTE 3
-----------
.BR
^^NOTE ..\\
^THIS SWITCH IS TURNED OFF WHEN ^S1401 IS INITIALIZED
^^(DEAD START)\\,
AND BY THE "^R" COMMAND (^RESET).
!

.PAGE
^&3.4.2###^B#^COMMAND#--#^BACK#TO#^^BASIC-PLUS\\\&
.INDEX ^EXIT TO [RSTS
.PARA
^WHEN YOU ARE FINISHED WITH THE 1401 SIMULATOR, YOU MUST RETURN TO
THE DEFAULT RUN-TIME-SYSTEM (CURRENTLY ^^BASIC-PLUS\\) IN ORDER TO
LOG OUT.  ^THE ^S1401 "^B" COMMAND IS THE NORMAL WAY TO DO THIS.
^THIS COMMAND FIRST CLOSES ALL OUTPUT FILES PROPERLY (STACKERS AND
PRINTER CHANNELS).
^THEN THE READER CHANNEL IS CLOSED.
^FINALLY, CONTROL IS PASSED TO THE DEFAULT RUN-TIME-SYSTEM.
.PARA
^IF ERRORS OCCUR WHEN CLOSING THE OUTPUT FILES, A MESSAGE WILL BE
TYPED, AND CONTROL WILL RETURN TO THE ^S1401 ^SUPERVISOR.
.SKIP 1
"^^ERROR#CLOSING#PRINTER#CHANNEL#--#<RSTS ERROR>\\"
REFERS TO THE 1403 PRINTER DEVICE OR FILE.
.SKIP 1
^ANY OTHER ERROR MESSAGES REFER TO THE CLOSING OF STACKER FILES.
.PARA
^YOU MUST CONFIRM THIS COMMAND BY TYPING "^Y" WHEN ^S1401 ASKS
FOR CONFIRMATION.

.PAGE
^&3.4.3###^C#^COMMAND#--#^CARD#^READER#(^SIMULATED#1402)#^ASSIGNMENT\&
.INDEX 1402 SIMULATION
.PARA
^THIS COMMAND IS USED TO ASSIGN A ^^RSTS\\ DEVICE TO THE SIMULATED
1402 CARD READER.  ^AFTER A VALID ASSIGNMENT, ANY 1401 ^READ OPERATION
(OR ^LOAD COMMAND) GETS A CARD IMAGE FROM THE SELECTED DEVICE OR FILE.
.PARA
^WHEN THE USER TYPES THE "^C" COMMAND, ^S1401 RESPONDS:
.SKIP 1
	^^1402 CARD READER IS\\
.SKIP 1
AND WAITS FOR A USER RESPONSE.  ^YOU TYPE A DATASET SPECIFICATION
IN STANDARD ^^RSTS\\ NOTATION.
^HOWEVER, ACCOUNT NUMBERS AND PROTECTION CODES MAY ^^NOT\\ BE USED
IN THE SPECIFICATION.
^YOU MUST FOLLOW YOUR RESPONSE WITH A CARRIAGE RETURN.
^TYPE <[CR> ONLY TO CLOSE THE OLD FILE (RELEASE OLD DEVICE).
^SOME POSSIBLE RESPONSES ARE:
.SKIP 1
.NO FILL
		[CR:			CARD READER = CARD READER
		[FILNAM.EXT
		[DT1:DSKDMP.OBJ
.FILL
.PARA
^THE USER MAY SPECIFY THE "CONTINUATION" OPTION BY FOLLOWING THE
DATASET SPECIFICATION WITH "/^C".
(1)
.FOOTNOTE 20
-----------
.PARA 0
(1) /^C OPTION FOR "CONTINUATION FILES".
.INDEX /^C OPTION
.BR
"^DEVICE ^FULL" OUTPUT ERRORS ARE HANDLED BY ^S1401, SO YOU NEED NOT WORRY
ABOUT RUNNING OUT OF ROOM ON A DISK OR ^D^E^CTAPE.  ^IF AND WHEN YOU
RUN OUT OF ROOM, YOU ARE ASKED TO TYPE A NEW FILE SPECIFICATION.
(SEE SECTION 4.3 FOR FURTHER INFO.)
^BECAUSE OF A PECULIARITY OF ^^RSTS\\, THE SPLIT FILES RESULTING FROM
THIS PROCEDURE WILL NOT BE READ PROPERLY UNDER NORMAL CIRCUMSTANCES.
^THE LAST CARD IMAGE ON THE FIRST HALF OF THE BROKEN FILE IS ONLY
A PARTIAL CARD IMAGE.
^IT WILL BE LOST ON NORMAL INPUT.
^SO........WHEN YOU READ FILES THAT HAVE BEEN BROKEN ON OUTPUT,
YOU MUST TYPE "/^C" AFTER THE FILE NAME FOR ALL FILES BUT THE
LAST ONE.
^THE "/^C" TELLS ^S1401 THAT THIS FILE IS TO BE CONTINUED.
^THE NORMAL 1401 "LAST CARD" FUNCTION IS INHIBITED, AND ^S1401
ALWAYS ASKS FOR A NEW FILE SPECIFICATION.
.PARA
^AS A BYPRODUCT OF THIS NECESSITY, YOU NEED NOT TURN OFF ^SENSE ^SWITCH
^A TO AVOID GETTING "LAST CARD" INDICATIONS.  ^JUST USE THE "/^C"
OPTION ON APPROPRIATE INPUT SPECS.
^EVEN FOR THE "^^CR:\\" DEVICE!
!
.PARA
^SEVERAL ERRORS CAN OCCUR ON THIS COMMAND.  ^THEY ARE:
.SKIP 1
.NO FILL
	^^INVALID RESPONSE\\	^SYNTAX ERROR
.SKIP 1
	^VARIOUS ^^RSTS\\ ERRORS	^ERROR ON OPEN.
.FILL
.PARA
^IF YOU ABORT FROM ANY HARD ERROR, ^S1401 WILL BE UNSTABLE.
^YOU SHOULD IMMEDIATELY CLEAR UP THE PROBLEM BY REASSIGNING THE
1402 CARD READER.
^IF YOU DO NOT WISH TO ASSIGN A READER DEVICE, RESPOND WITH 
CARRIAGE RETURN ONLY.
^THIS WILL RESET ANY BAD POINTERS AND INDICATORS.

.PAGE
^&3.4.4###^D#^COMMAND#-#^DUMP#1401#^CORE#ON#THE#^SIMULATED#1403#^PRINTER\&
.INDEX 1403 SIMULATION
.PARA
^THIS COMMAND IS SIMILAR TO THE ^^1401-STORAGE-PRINT-OUT\\
(USING THE 1401 ^^MODE\\ SWITCH).
^WORD MARKS ARE PRINTED AS 1'S IMMEDIATELY BELOW THE APPROPRIATE
CHARACTERS.
^100 CHARACTERS ARE PRINTED PER LINE.
.PARA
^THE DIFFERENCES ARE:
.NOFILL
	^THE USER CAN DUMP SELECTED AREAS OF CORE.
	^THE STARTING CORE ADDRESS IS PRINTED AT THE LEFT OF EACH LINE.
	^THE CARRIAGE IS RESTORED BEFORE AND AFTER THE DUMP.
.FILL
.PARA
^WHEN THE USER TYPES THE "^D" COMMAND, ^S1401 REPLIES WITH:
.SKIP 1
	^^LOW LIMIT:\\
.SKIP 1
^THE USER THEN TYPES THE LOWEST CORE LOCATION TO BE DUMPED.
^THE ADDRESS MAY BE TYPED AS A NUMBER (LESS THAN 16000),
OR AS A THREE-CHARACTER 1401 ADDRESS.
^S1401 THEN TYPES:
.SKIP 1
	^^HIGH LIMIT:\\
.SKIP 1
^THE USER TYPES THE HIGHEST CORE LOCATION TO BE DUMPED.
^THE DUMP COMMENCES.
^CONTROL IS RETURNED TO THE USER WHEN THE DUMP IS COMPLETED.
.PARA
^NO DUMP IS PERFORMED IF THE HIGH LIMIT IS BELOW THE LOW LIMIT.
.PARA
^^!!! - ADDRESSING ERROR\\ WILL BE TYPED IF YOU TYPE A BAD ADDRESS.
.PARA
^^RSTS\\ DEVICE ERRORS MAY BE REPORTED IF, FOR EXAMPLE, THE ^^LP:\\
IS OFF LINE.
^YOU SHOULD ATTEMPT TO RECOVER FROM THESE ERRORS.
^IF YOU ABORT DURING A DUMP (FOR ANY REASON), THE ^S1401 PRINTER
ROUTINES WILL BE UNSTABLE.
^SPECIFICALLY, 1401 GROUP MARKS WILL BE PRINTED ON FUTURE OUTPUT,
ZEROS WILL PRINT AS ZEROS (ZERO AS O OPTION DISABLED),
AND THE ^B-^STORAGE-^ADDRESS-^REGISTER (][BSTAR) WILL BE ALTERED.
^YOU CAN EASILY FIX THE FIRST TWO ITEMS BY USING THE "^O" COMMAND
- OPTION 0 ONCE OR TWICE.
.PARA
^IF NO PRINTER DEVICE HAS BEEN ASSIGNED, ^S1401 WILL TYPE:
.SKIP
	^^NEED 1403 PRINTER ASSIGNMENT\\
.BR
	^^1403 PRINTER IS\\
.SKIP
^RESPOND AS IN THE "^P" COMMAND.
^HOWEVER, YOU CANNOT ENTER A NEW CARRIAGE CONTROL TAPE AT THIS TIME.

.PAGE
^&3.4.5###^E#^COMMAND#-#^END#^STACKER#^FILES#(^^NON-PROCESS#RUN-OUT\\)\&
.INDEX 1402 SIMULATION
.PARA

^THIS COMMAND IS SIMILAR TO PRESSING THE ^^NON-PROCESS RUN-OUT\\ KEY
ON THE 1402.
^S1401 OUTPUTS ANY CARD IMAGES WAITING FOR STACKER SELECTION
(ON THE "READ SIDE" AND THE "PUNCH SIDE" OF THE SIMULATED 1402)
TO THE [NR STACKER AND THE [NP STACKER.
^THEN, ^S1401 CLOSES ALL STACKER OUTPUT CHANNELS.
^FOR MOST FILES, THIS INVOLVES WRITING THE LAST DATA BLOCK AND CLOSING
THE FILE.
^THE USER SHOULD ALWAYS USE THIS COMMAND (OR THE "^B" COMMAND) TO ENSURE
THAT ALL OUTPUT DATA IS CORRECTLY WRITTEN.
.PARA
^WHENEVER A ^^PROGRAM HALT, MANUAL STOP\\, OTHER STOP, OR ABORTED ERROR
OCCURS, ^S1401 CHECKS FOR ANY OPEN STACKER FILES.
^IF ANY EXIST, THE FOLLOWING REMINDER IS TYPED:
.SKIP 1
.CENTER
^^STACKER FILES OPEN\\
.SKIP 1
^THIS WARNS THE USER THAT THE "^E" COMMAND SHOULD BE TYPED IF THIS
IS THE END OF THE PROGRAM.
(^S1401 DOES NOT END FILES AUTOMATICALLY ON ^^PROGRAM HALT\\S
BECAUSE MANY 1401 PROGRAMS USE HALTS FOR INFORMATIONAL PURPOSES.)
.PARA
^THE "^E" COMMAND DOES NOT AFFECT THE 1402 CARD READER SIMULATION
EXCEPT TO OUTPUT THE LAST CARD TO THE [NR STACKER
(IF THERE WAS A CARD WAITING FOR STACKING).
^TO REPEAT -- ^THE INPUT FILE IS STILL AVAILABLE FOR PROCESSING.
.PARA
^IF ^S1401 FAILS TO CLOSE A FILE, THE ERROR IS REPORTED AND THE REMAINING
STACKER CHANNELS ARE CLOSED.
^UNPREDICTABLE RESULTS OCCUR WHEN A CLOSE FAILURE OCCURS.
^SOMETIMES THE FILE DISAPPEARS, SOMETIMES NOT.
^IN SOME CASES, FUTURE ATTEMPTS TO USE THE "^E" COMMAND
OR THE "^B" COMMAND
RESULT IN REPEATED ERRORS.
^WHEN THIS HAPPENS, USE THE "^T" COMMAND TO EXIT FROM ^S1401

(THE "PANIC" EXIT).
.PARA
^WHEN THE LAST BLOCK IS WRITTEN, A RECOVERABLE ERROR MAY OCCUR.
^TRY TO RECOVER.
^IF YOU ABORT, YOU WILL HAVE A NON-CLOSEABLE FILE, AND BE FORCED
TO TERMINATE ABNORMALLY ("^T" COMMAND).

.PAGE
^&3.4.6###^F#^COMMAND#--#^RESERVED#FOR#LATER#USE\&

.SKIP 8
^&3.4.7###^G#^COMMAND#--#^GO#--#^START#AND#^DETACH\&
.PARA
^USE THIS COMMAND WHEN YOU HAVE A LONG ^S1401 JOB AND YOU WISH TO USE
THE TERMINAL FOR OTHER PURPOSES.
^IT IS SIMILAR TO THE "^S" COMMAND (^START) EXCEPT THAT THE JOB DETACHES.
^YOU MAY NEED TO STOP A PROGRAM FIRST, THEN TYPE THE "^G" COMMAND.
^BECAUSE OF THE POTENTIAL FOR TROUBLE, ^S1401 ASKS FOR CONFIRMATION.
^TYPE ^Y TO CONTINUE EXECUTION.
^S1401 THEN TYPES "^^JOB\\ _#N ^^DETACHING\\".
.PARA
^WHEN YOUR JOB DETACHES, YOU ARE IMMEDIATELY FREE TO USE THE TERMINAL.
^THE JOB CONTINUES TO RUN UNTIL KEYBOARD INPUT/OUTPUT IS NEEDED
(LIKE A ^^PROGRAM HALT\\ MESSAGE).
^AT THIS TIME, THE JOB ENTERS A [HIBERNATE STATE.
^IT WILL REMAIN IN THIS STATE UNTIL A KEYBOARD IS ATTACHED TO IT.
^YOU CAN USE [SYSTAT OR [VT5DPY TO CHECK FOR JOBS IN THE [HIBERNATE
OR [HB STATE.
.PARA
^IF THE 1401 PROGRAM STARTS LOOPING ON A "[BIN#Q" INSTRUCTION
(E.G., PRECEDING AN "[RCP" INSTRUCTION), IT WILL BE IN THE
[RUN STATE ([RN), BUT WILL NOT BE USING ANY [CPU TIME.
^YOU SHOULD ATTACH TO THESE JOBS ALSO.
.PARA
^TO ATTACH, USE [HELLO OR [ATTACH.
^YOU NEED TO KNOW THE JOB'S NUMBER OR ACCOUNT TO DO THIS.
^FOR EXAMPLE, TO ATTACH TO JOB NUMBER 3, ACCOUNT _[45,67_], TYPE ONE OF
THE FOLLOWING:
.SKIP 1
	[ATTACH 3
.BR
	[HELLO 45,67
.SKIP 1
^YOU WILL BE ASKED FOR THE PASSWORD IF YOU ARE NOT LOGGED IN UNDER THAT
ACCOUNT.


.SKIP 8
^&3.4.8###^H#^COMMAND#--#^RESERVED#FOR#FUTURE#USE\&

.PAGE
^&3.4.9###^I#^COMMAND#--#^INDICATOR#^EXAMINE#(1401#^INTERNAL#^INDICATORS)\&
.PARA
^THE "^I" COMMAND PROVIDES AN EASY WAY FOR THE USER TO EXAMINE
THE STATE OF THE INTERNAL 1401 MACHINE INDICATORS.

(^THE 1401 HAS NO SUCH EXAMINATION DEVICE FOR INDICATORS.)
^S1401 TYPES:
.SKIP 1
	[INDICATOR
.SKIP 1
^THE USER RESPONDS BY TYPING THE ONE-CHARACTER NAME OF THE
INDICATOR, FOLLOWED BY A CARRIAGE RETURN.
([RUBOUT AND ^CONTROL/^U MAY BE USED TO CORRECT TYPING ERRORS.)
^S1401 TELLS YOU WHETHER THE INDICATOR IS OFF OR ON.
^SEE ^APPENDIX ^A FOR THE LIST OF 1401 INDICATORS THAT HAVE BEEN
IMPLEMENTED IN ^S1401.
.PARA
^ANY BAD RESPONSES ARE SIMPLY IGNORED.
.PARA
^INDICATOR ^A (^LAST CARD INDICATOR) REFERS TO A COMBINATION OF
^SENSE ^SWITCH ^A AND THE 1402 ^READER ^END-OF-FILE CONDITION.
^IF YOU WISH TO DETERMINE THE POSITION OF ^SENSE ^SWITCH ^A,
USE THE "^J" COMMAND.


.SKIP 8
^&3.4.10###^J#^COMMAND#--#^SET#1401#^SENSE#^SWITCHES#("^JIGGLE")\&
.PARA
^USE THIS COMMAND TO SET THE SENSE SWITCHES ^A THRU ^G.
^S1401 TYPES THE CURRENT POSITION OF EACH SWITCH,
AND YOU TYPE EITHER THE NEW POSITION OR JUST CARRIAGE RETURN FOR NO CHANGE.
^THE ONLY VALID NEW POSITIONS ARE:
.SKIP 1
	[ON
.BR
	[OFF
.SKIP 1
^ANY BAD RESPONSES CAUSE THE MESSAGE ^^INVALID#RESPONSE\\,
AND THE SAME SWITCH IS AGAIN REQUESTED.
.PARA
^NOTE THAT THE POSITION OF ^SWITCH ^A IS NOT NECESSARILY THE VALUE
OF ^INDICATOR ^A.

.PAGE
^&3.4.11###^K#^COMMAND#--#^STACKER#(^SIMULATED#1402)#^ASSIGNMENTS\&
.INDEX 1402 SIMULATION
.PARA
^ALL CARDS FALLING INTO 1402 STACKERS ARE CONSIDERED BY ^S1401 TO BE
OUTPUT.
^THERE ARE FIVE STACKERS ON THE 1402, BUT THE CENTER ONE HAS TWO SOURCES.
^THEREFORE, ^S1401 ALLOWS SIX "OUTPUT STACKERS".
^ANY OR ALL OF THESE STACKERS CAN BE ASSIGNED TO AN OUTPUT FILE OR DEVICE.
^IN ADDITION, ANY COMBINATION OF THESE SIX STACKERS CAN BE "MERGED" INTO
THE SAME OUTPUT DATASET.
^MOST OF THIS MERGING WILL BE ALL READER-SIDE OR ALL PUNCH-SIDE STACKERS,
BUT EXOTIC COMBINATIONS ARE POSSIBLE. (1)###
.FOOTNOTE 5
-----------
.BR
(1)##^IF YOU TRY MERGING READER AND PUNCH STACKERS,
YOU MUST EXPERIMENT TO DETERMINE WHEN
THE "STACKED CARDS" ARE ACTUALLY OUTPUT.  ^S1401 DOES NOT WORK EXACTLY
LIKE THE 1401 IN THIS RESPECT.
!
.PARA
^THERE ARE SEVERAL POSSIBLE RESPONSES TO EACH STACKER ASSIGNMENT REQUEST.
.SKIP 1
.NO FILL
	DEV:FILNAM<[CR>	^CARDS FALLING INTO THIS STACKER WILL BE
			WRITTEN ONTO THE FILE OR DEVICE SPECIFIED.
.SKIP 1
	<[CR>		^CARDS FALLING INTO THIS STACKER WILL "VANISH"
			(NO OUTPUT).
.SKIP 1
	<[ALT>		^NO CHANGE.  ^THE LAST SPECIFICATION REMAINS
			IN EFFECT.
.SKIP 1
	STRING<[ALT>	WHERE STRING IS A STACKER NAME (E.G., [NR, 1,
			ETC.)  ^MERGE THIS STACKER WITH SPECIFIED
			STACKER.
.SKIP 1
.FILL
^AN EXAMPLE MAY HELP TO CLARIFY THIS.
^SUPPOSE THAT YOU WISH TO OUTPUT ALL CARD IMAGES FALLING INTO THE
"READ-SIDE" STACKERS ([NR, 1, 2) TO A ^^DEC\\TAPE FILE CALLED
^^SOURCE.AUT\\ ON DRIVE 0.
^ALSO, YOU WANT ALL CARD IMAGES FALLING INTO PUNCH STACKER #4 TO
BE WRITTEN TO A DISK FILE CALLED ^^TEST.OBJ\\ ON DRIVE 1.
^FINALLY, YOU WISH TO IGNORE ANY CARDS FALLING INTO STACKERS [NP AND 8.
^HERE IS THE DIALOGUE YOU WOULD FOLLOW:
.SKIP 1
.TEST PAGE 8
.NO FILL
.UPPER CASE
.TEST PAGE 8
	*K<CR>
	NR STACKER IS DT0:SOURCE.AUT<CR>
	1 STACKER IS NR<ALT>
	2 STACKER IS NR<ALT>
	NP STACKER IS <CR>
	4 STACKER IS DK1:TEST.OBJ<CR>
	8 STACKER IS <CR>
	*
.LOWER CASE
.FILL
.PARA
^THE MOST COMMON MISTAKE IS TO TYPE A <[CR> INSTEAD OF AN <[ALT>
AFTER A MERGE SPECIFICATION.
^THIS USUALLY RESULTS IN FILES ON THE SYSTEM DISK CALLED "[NR" AND "[NP".
.PARA
^IN ALL RESPONSES EXCEPT <[ALT>, ^S1401 FIRST CLOSES ANY CURRENT FILE
WHICH IS OPEN FOR THIS STACKER.
^ERRORS CAN OCCUR ON THIS "CLOSE" OR ON THE "OPEN" WHICH FOLLOWS.
^THE APPROPRIATE [RSTS ERROR IS REPORTED AND THE STACKER REQUEST IS
AGAIN MADE.

^IF YOU GET CAUGHT IN A LOOP, TYPE ^CONTROL/^C.
^ERRORS IN SYNTAX CAUSE AN "^^INVALID#RESPONSE\\" MESSAGE, AND A REPEAT
REQUEST.
.PARA
[RUBOUT AND ^CONTROL/^U MAY BE USED TO CORRECT TYPING ERRORS.
^YOU MUST RESPOND TO ALL SIX STACKER ASSIGNMENT REQUESTS.


.SKIP 8
^&3.4.12###^L#^COMMAND#--#^LOAD\&
.PARA
^THE "^L" COMMAND SIMULATES THE 1401 [LOAD KEY.
^IT PERFORMS THE FOLLOWING SEQUENCE:
.SKIP 1
.NO FILL
	1.  ^CLEARS 1401 CORE LOCATIONS 0 THRU 80.
	2.  ^SETS A WORD MARK AT 1401 CORE LOCATION 1.
	3.  ^READS A CARD FROM THE 1402 ^SIMULATED ^READER.
	4.  ^BRANCHES TO 1401 CORE LOCATION 1.
.SKIP 1

.FILL
^THE ONLY POSSIBLE ERRORS ARE DEVICE ERRORS WHICH WILL OCCUR IF
THE ^SIMULATED 1402 ^CARD ^READER WAS NOT PROPERLY ASSIGNED
OR SET UP.
^OF COURSE, A 1401 PROGRAM ERROR MIGHT OCCUR IMMEDIATELY AFTER LOADING
THE FIRST CARD.

.PAGE
^&3.4.13###^M#^COMMAND#--#^MOUNT#A#^SIMULATED#1311#^DISK\&
.INDEX 1311 SIMULATION
.PARA
^THIS COMMAND IS USED TO MOUNT A "NON-FILE-STRUCTURED" ^S1401 DISK.
^FIRST, READY THE DESIRED DISK PACK ON ANY [RSTS [RK11 DRIVE.
^S1401 TYPES:
.SKIP 1
	1401 [DRIVE _#
.SKIP 1
^AND YOU RESPOND WITH THE 1401 DRIVE NUMBER THAT YOUR 1401 PROGRAM
USES FOR THIS DISK.
^THIS MUST BE ONE OF THE FOLLOWING:  0, 2, 4, 6, OR 8.
^S1401 THEN TYPES:
.SKIP 1
	[RSTS [DRIVE _#
.SKIP 1
AND YOU REPLY WITH THE ACTUAL [RK11 DRIVE NUMBER THAT THIS DISK IS ON.
^S1401 THEN ATTEMPTS TO "MOUNT" THIS DISK.
^IF IT IS SUCCESSFUL, IT TYPES "[MOUNT#OK".
.PARA
^SEVERAL ERRORS CAN OCCUR DURING THE ^MOUNT COMMAND.
^A SYNTAX ERROR OR INVALID DRIVE NUMBER WILL SIMPLY CAUSE
"^^INVALID#RESPONSE\\" AND A REPEATED REQUEST.
^IF THE 1401 DRIVE YOU SPECIFIED IS ALREADY MOUNTED, ^S1401 WILL TYPE
"[DISK#ALREADY#MOUNTED".
^IF THE DISK IS NOT READY OR DID NOT [OPEN CORRECTLY (1),
.FOOTNOTE 4
-----------
.BR
(1)###^MOUNTING A "^NON-^FILE-^STRUCTURED" DISK IN [RSTS IS REALLY
OPENING THAT DISK AS A FILE.
!
THE APPROPRIATE [RSTS ERROR MESSAGE WILL BE TYPED.
["***WARNING*** [READ-ONLY [DISK" MEANS THAT THIS DISK IS ALREADY
OPENED FOR OUTPUT BY ANOTHER USER.
^IF THE DISK IS NOT A SIMULATED 1311 DISK COMPATABLE WITH
^^S1401-V05B\\,
THE MESSAGE "[WRONG#DISK#-#RETRY?" WILL BE TYPED.
^RESPOND AS YOU WISH.

^FINALLY, A SYSTEM ERROR MIGHT APPEAR - ^^DOUBLE ERROR IN MOUNT --\\.
^THIS OCCURS WHEN ^S1401 IS TRYING TO CLOSE A DISK THAT WAS OPENED
PROPERLY BUT WAS INVALID FOR SOME REASON (LIKE ^ ^RONG DISK\\).
^BEST TO LEAVE ^S1401 ENTIRELY, AND RESTART IT FROM THE TOP IF THIS
HAPPENS.


.SKIP 6
^&3.4.14###^N ^COMMAND -- ^R^K11#^HARDWARE#^DISK#^WRITE-^CHECK#^SWITCH\&
.INDEX 1311 SIMULATION
.PARA
*****^THIS COMMAND IS NOT IMPLEMENTED AT THIS TIME.*****
.PARA
^IT WILL BE USED TO PERFORM HARDWARE ^WRITE-^CHECKS WHEN WRITING ON
SIMULATED 1311 DISKS.
^THIS WILL BE DONE TO INSURE THE INTEGRITY OF THE DATA.
^IT IS NOT YET IMPLEMENTED BECAUSE CHANGES MUST BE MADE TO THE [RSTS
^MONITOR.

.PAGE
^&3.4.15###^O#^COMMAND#--#^OPTIONS#FOR#^PRINTER\&
.INDEX 1403 SIMULATION
.PARA
^FOUR OPTIONS ARE AVAILABLE AT THE PRESENT TIME.
^S1401 ASKS YOU FOR AN OPTION NUMBER, AND YOU TYPE ONE OF THE FOLLOWING
(TYPE [ONLY ONE!):
.NO FILL
.SKIP 1
		0 - ^ZERO TO ^O SWITCH
.INDEX ^ZERO TO ^O SWITCH
		1 - ^SLOW ^PRINT SWITCH
.INDEX ^SLOW ^PRINT SWITCH
		2 - ^SINGLE ^CYCLE ^PRINT SWITCH
.INDEX ^SINGLE-CYCLE-PRINT SWITCH
		3 - ^FAST ^CHANNEL 1 ^SKIP SWITCH
.FILL
.LEFT MARGIN +10
.PARA -4
0)##^SOME PRINTERS HAVE A SLASHED ZERO.
^IT MAY BE DESIRABLE TO PRINT THE LETTER ^O INSTEAD OF ZERO.
^THIS SWITCH ALLOWS SUCH A CONVERSION.
^AS WITH ALL OF THESE OPTION SWITCHES, THE FIRST TIME IT IS SPECIFIED,
THE SWITCH IS TURNED ON.
^THE NEXT TIME, IT IS TURNED OFF.
^S1401 INFORMS YOU OF THE CURRENT POSITION (AFTER SWITCHING).
.PARA
1)##^SLOW ^PRINT IS USEFUL FOR FORMS ALIGNMENT AND NON-STANDARD FORMS.
^IT CAUSES AN AVERAGE PRINT SPEED OF ONE LINE PER SECOND.
^YOU CAN DISABLE THIS SWITCH BY TYPING "^X" WHEN RUNNING A 1401 PROGRAM
(IN ADDITION TO RESPECIFYING THIS OPTION).
.PARA
2)##^SINGLE ^CYCLE ^PRINT IS USEFUL FOR CRITICAL FORMS ALIGNMENT.
^IT CAUSES A PROGRAM HALT AFTER EACH LINE IS PRINTED.
^YOU MUST RESTART THE 1401 PROGRAM WITH THE "^S" COMMAND.
^AND TO FINALLY DISABLE THIS SWITCH, YOU MUST RESPECIFY THIS OPTION!
.PARA
3)##^"^FAST ^CHANNEL 1 ^SKIP" CAUSES A FORM FEED CHARACTER TO BE SENT
.INDEX ^CARRIAGE CONTROL TAPE
TO THE PRINTER (FILE) WHENEVER A "^SKIP TO ^CHANNEL 1" INSTRUCTION
IS EXECUTED.
^NORMALLY, ^S1401 SENDS A SERIES OF LINE-FEED CHARACTERS TO MOVE THE
FORMS.
^BUT WHEN YOU USE STANDARD FORMS, IT IS QUICKER TO USE A FORM-FEED.#(1)
.LEFT MARGIN -10
.PARA 0
.FOOTNOTE 9
.NO FILL
-----------
(1)##^WHEN CAN YOU USE THIS OPTION??  ^CONSIDER THE FOLLOWING ITEMS:
	^THE LENGTH OF THE PHYSICAL CARRIAGE TAPE.
	^THE ^CHANNEL 1 PUNCH ON THE PHYSICAL CARRIAGE TAPE.
	^THE LENGTH OF THE FORMS.
	^THE LENGTH OF THE SIMULATED CARRIAGE TAPE.
	^THE ^CHANNEL 1 PUNCH ON THE SIMULATED CARRIAGE TAPE.
#####^IF THEY MATCH, THEN YOU COULD, AND SHOULD, USE OPTION _#3.
.FILL
!

.PAGE
^&3.4.16###^P#^COMMAND#--#1403#^PRINTER#^ASSIGNMENT#AND#^SET-UP\&
.INDEX 1403 SIMULATION
.PARA
^USE THIS TO ASSIGN THE PRINTER OUTPUT DEVICE OR FILE.
^S1401 TYPES:
.SKIP 1
	^^1403 PRINTER IS\\
.SKIP 1
^YOU RESPOND WITH ONE OF THE FOLLOWING:
.SKIP 1
.NO FILL
	DEV:FILNAM<[CR>	^CLOSES ANY OLD FILE, OPENS SPECIFIED FILE.
	<[CR>		^CLOSES ANY OLD FILE.
	<[ALT>		^NO CHANGE.  ^USE THIS FOR CHANGING THE
			CARRIAGE TAPE WITHOUT CHANGING THE DATASET.
.FILL
.SKIP 1
^S1401 THEN ASKS IF YOU WISH TO CHANGE THE CARRIAGE TAPE.
.INDEX ^CARRIAGE CONTROL TAPE
^ANSWER "^Y" OR "^N" ONLY.
.PARA
^THE 1403 PRINTER HAS A CARRIAGE CONTROL TAPE.
^THIS TAPE MUST BE SIMULATED IN ^S1401.
^IT IS INITIALIZED ON ^^DEAD#START\\ TO:
.SKIP 1
.NO FILL
	^FORM LENGTH:  66.
	^CHANNEL 1 AT LINE 1.
	^CHANNEL 12 AT LINE 61.
.FILL
.SKIP 1
^IF YOU ANSWER "^Y" TO THE "^^CARRIAGE TAPE CHANGE?\\" QUESTION, YOU
CAN CHANGE THESE DEFAULTS.
^FIRST QUERY IS:
.SKIP 1
	^^FORM LENGTH =\\
.SKIP 1
^ANSWER WITH THE NUMBER OF LINES ON YOUR FORM (NO DECIMAL POINT),
OR JUST TYPE CARRIAGE RETURN TO RETAIN THE OLD FORM LENGTH.
^S1401 THEN ASKS:
.SKIP 1
	##^^CHANNEL\\
.SKIP 1
^ANSWER WITH A CHANNEL NUMBER (1 TO 12).
^OR JUST TYPE CARRIAGE RETURN TO EXIT FROM THE "^P" COMMAND.
^IF YOU TYPE A VALID CHANNEL NUMBER, ^S1401 ASKS:
.SKIP 1
	###^^AT LINE\\
.SKIP 1
^ANSWER WITH THE LINE NUMBER WHERE YOU WANT THE SPECIFIED CHANNEL
TO BE SET.
^OR JUST TYPE CARRIAGE RETURN IF YOU MADE A MISTAKE WHEN TYPING THE
CHANNEL NUMBER. (^NO CHANNEL WILL BE SET.)
.BR
^THE TWO QUESTIONS ([CHANNEL AND [AT#LINE) ARE REPEATED UNTIL YOU EXIT
BY TYPING A CARRIAGE RETURN AFTER [CHANNEL.
.PARA
[IMPORTANT [NOTES:  ^WHEN YOU CHANGE THE SIMULATED CARRIAGE TAPE,
ALL PREVIOUS CHANNEL SETTINGS ARE ERASED WITH THE EXCEPTION OF
^CHANNEL 1 AT LINE 1.
^AFTER YOU FINISH CHANGING THE CARRIAGE TAPE, YOU MUST MANUALLY
POSITION THE PAPER AT TOP-OF-FORMS, AND READY THE PRINTER.
.PARA
^^DELAYED ASSIGNMENT:\\
^YOU MAY DELAY ASSIGNMENT OF THE 1403 PRINTER IF YOU WISH.
^S1401 WILL REQUEST THE ASSIGNMENT WHEN THE FIRST "WRITE" IS
ATTEMPTED.

.PAGE
^&3.4.17###^Q#^COMMAND#--#^RESTORE#^PRINTER#^CARRIAGE\&
.INDEX 1403 SIMULATION
.INDEX ^CARRIAGE CONTROL TAPE
.PARA
^THE "^Q" COMMAND MOVES THE PRINTER CARRIAGE AND THE SIMULATED CARRIAGE
CONTROL TAPE UNTIL CHANNEL 1 IS SENSED.
.PARA
^BECAUSE ^S1401 USES A SIMULATED CARRIAGE CONTROL TAPE,
THE USER SHOULD NOT USE THE ^^TOP-OF-FORMS\\ SWITCH ON THE
[LP11 LINE PRINTER.
^IF YOU DO, THE PRINTER CARRIAGE AND THE SIMULATED CARRIAGE CONTROL
TAPE WILL GET "OUT OF SYNC".
(1)
.FOOTNOTE 4
-----------
.BR
(1)##^YOU CAN GET BACK IN "SYNC" BY TYPING THE "^Q" COMMAND; THEN MANUALLY
POSITIONING THE PAPER AT ^TOP-OF-FORMS.
!
.PARA
^STANDARD [RSTS DEVICE ERRORS MAY OCCUR DURING THE "^Q" COMMAND IF THE
PRINTER (OR SPECIFIED DEVICE) IS NOT READY.
^THESE ARE RECOVERABLE.

.SKIP 8
^&3.4.18###^R#^COMMAND#--#^RESET#(^START-RESET#KEY)\&
.PARA
^THIS COMMAND PERFORMS THE SAME FUNCTIONS AS THE 1401 START-RESET KEY,
AND A FEW OTHER THINGS AS DESCRIBED BELOW.
.PARA
^RESETS ALL INTERNAL MACHINE INDICATORS (SEE ^APPENDIX ^A).
.PARA
^RESETS THE "^HALT AND ^BRANCH" INDICATOR.
.LEFT MARG +15
.RIGHT MARG -15
^SOME 1401 PROGRAMS USE THE START-RESET KEY AS A SWITCH.
^WHEN THE MACHINE HALTS, THE OPERATOR CAN EITHER HIT [START, OR HIT
[START-RESET THEN [START.
^YOU CAN DO THIS ON ^S1401 TOO.
.LEFT MARG -15
.RIGHT MARG +15
.PARA
^TURNS THE 1311 DISK ^^WRITE-ADDRESS\\ SWITCH OFF IF IT IS ON.***
.PARA
^RESETS THE ^LAST ^CARD INDICATOR.
.PARA
^RESETS THE PRINTER "SKIP AFTER PRINT" INDICATOR.
.PARA
^RESETS THE DISK "MUST HAVE A WRITE-CHECK OP NEXT" INDICATOR.
.PARA
^RESETS THE ^S1401 DISK BUFFERS.***
.FOOTNOTE 3
.SKIP
***##^INDICATES FUNCTIONS NOT PERFORMED ON THE 1401.
!
.PARA
^RESETS THE "DELAYED 1403 PRINTER ASSIGNMENT" MESSAGE INDICATOR.

.PAGE
^&3.4.19###^S#^COMMAND#--#^START
\&
.PARA
^THE "^S" COMMAND SIMULATES THE 1401 ^START KEY.
.PARA
^IT STARTS PROGRAM EXECUTION AT THE ADDRESS SPECIFIED BY THE
^I-^STORAGE-^ADDRESS-^REGISTER (][ISTAR).
.PARA
^NO ERRORS ARE POSSIBLE, ALTHOUGH 1401 PROGRAM ERRORS MIGHT OCCUR
IMMEDIATELY.



.SKIP 8
^&3.4.20###^T#^COMMAND#--#^TERMINATE#ABNORMALLY\&
.INDEX ^EXIT TO [RSTS
.PARA
^THIS IS THE PANIC EXIT FROM ^S1401 TO [BASIC-PLUS.
^IF YOU CANNOT EXIT WITH THE "^B" COMMAND BECAUSE OF FILES THAT CANNOT
BE CLOSED, USE THIS COMMAND.
.PARA
*****[WARNING*****# ^WHEN YOU USE THIS COMMAND, OUTPUT FILES WILL NOT
BE PROPERLY CLOSED.  ^DATA WILL BE LOST.
.PARA
^BECAUSE OF ITS POTENTIALLY DAMAGING RESULTS, THIS COMMAND MUST BE
CONFIRMED (WITH A ^Y) BEFORE IT WILL EXECUTE.



.SKIP 8
^&3.4.21###^U#^COMMAND#--#^UNMOUNT#A#^SIMULATED#1311#^DISK\&
.INDEX 1311 SIMULATION
.PARA
^USE THIS COMMAND TO UNMOUNT A DISK THAT HAS BEEN MOUNTED WITH THE
"^M" COMMAND.
^S1401 ASKS FOR THE ^^1401 DRIVE _#\\.
^YOU REPLY WITH 0, 2, 4, 6, OR 8.
^THIS IS [NOT THE [RSTS DRIVE NUMBER!
.PARA
^NOTE -- ^THIS MOUNT AND UNMOUNT PROCEDURE IS NOT THE SAME AS THE
[RSTS [MOUNT AND [DISMOUNT.  ^YOU CANNOT MOUNT [RSTS DISKS FROM ^S1401,
AND YOU CANNOT MOUNT ^S1401 DISKS FROM [BASIC-PLUS.
.PARA
^AN ALTERNATIVE TO THIS COMMAND IS THE "^B" COMMAND, WHICH UNMOUNTS
ALL CURRENTLY MOUNTED ^S1401 DISKS BEFORE EXITING TO [BASIC-PLUS.

.PAGE
^&3.4.22###^V#^COMMAND#--#^VERIFY#1401#^CORE\&
.PARA
^THE "^V" COMMAND PROVIDES THE CAPABILITY OF IMMEDIATE CORE
VERIFICATION WITHOUT USING THE LINE PRINTER.
^IT SIMULATES THE ^^ALTER-RESPOND/TYPEOUT\\ MODE OF THE 1407
CONSOLE INQUIRY STATION.
.INDEX 1407 SIMULATION
.PARA
^IF YOU WISH TO VERIFY 1401 CORE BEGINNING AT LOCATION 101, USE
THE FOLLOWING DIALOGUE:
.SKIP 1
.NO FILL
^^
	*V
	LOW LIMIT: 101<CR>
\\
.SKIP 1
.FILL
^S1401 IMMEDIATELY STARTS SPEWING OUT CORE:
.SKIP 1
	^^1234567890_^ABCDE_^FGHIJ....\\
.SKIP 1
^THE DUMP CONTINUES UNTIL YOU TYPE ^CONTROL/^C OR UNTIL THE END OF
CORE IS REACHED.
.PARA
^WORD MARKS ARE PRINTED AS PRECEDING _^'S.
^THERE IS SOME CONFUSION BECAUSE THAT CHARACTER IS ALSO USED TO
REPRESENT THE INTERNAL 1401 CHARACTER CONSISTING OF JUST THE ^A-BIT
(^SOMETIMES CALLED "^ALT ^BLANK").
^BUT SINCE THIS CHARACTER IS RARELY USED, THE CONFUSION SHOULD BE SLIGHT.
^AND YOU COULD ALWAYS GET A LINE PRINTER DUMP (^D COMMAND) TO DOUBLE
CHECK.
.PARA
^IF YOU TYPE AN INVALID LOW LIMIT, ^S1401 TYPES:
.SKIP 1
	!!! - ^^ADDRESSING ERROR\\
.SKIP 1
AND ABORTS.

.PAGE
^&3.4.23###^W#^COMMAND#--#^WRAP#^CHECK#^SWITCH\&
.PARA
^THIS COMMAND OPERATES A SWITCH THAT DETERMINES WHETHER A
WRAP-AROUND CHECK IS MADE AT EACH INSTRUCTION CYCLE.
^IN ^WRAP ^CHECK MODE, ][ASTAR AND ][BSTAR
(^A-^STORAGE-^ADDRESS-^REGISTER AND ^B-^STORAGE-^ADDRESS-^REGISTER)
ARE CONSTANTLY MONITORED TO SEE IF THEY ARE REFERENCING 1401 CORE
OUTSIDE OF THE [16K AVAILABLE.
^SUCH A REFERENCE CAN OCCUR, FOR EXAMPLE, IF A HIGH-ORDER WORD MARK
IS MISSING FROM THE ^A-FIELD ON AN [LCA INSTRUCTION.
^IF THIS ERROR OCCURS, THE MESSAGE
.SKIP 1
	!!! - ^^ADDRESSING ERROR#####IREG = \\XXXXX
.SKIP 1
IS TYPED, AND THE ^S1401 ^SUPERVISOR TAKES CONTROL.
^THIS ACTION IS SIMILAR TO THE 1401 ^^CHECK STOP\\ ERROR THAT OCCURS
ON A MEMORY WRAP.
.PARA
^THE FIRST TIME A PROGRAM IS RUN ON ^S1401, ^WRAP ^CHECK MODE
SHOULD BE USED.
^THE OVERHEAD INVOLVED IS SOMEWHERE IN THE RANGE OF 5% TO 10%.
.PARA
^AFTER A PROGRAM HAS RUN SUCCESSFULLY ON ^S1401, NO WRAP CHECK NEED
BE USED.
^BUT SHOULD A WRAP CHECK OCCUR WHEN THIS SWITCH IS OFF, THE RESULTS
ARE HIGHLY UNPREDICTABLE.
^SO IF YOU NOTICE STRANGE THINGS HAPPENING WHEN ^S1401 IS RUNNING A
PROGRAM, YOU SHOULD CONSIDER USING ^WRAP ^CHECK MODE FOR A WHILE.
.FOOTNOTE 5
-----------
.BR
NOTE ON WRAPPING -- ^THE 1401 ^CLEAR ^STORAGE INSTRUCTION OPERATING
ON THE LOWEST 100 CORE LOCATIONS CORRECTLY WRAPS [BSTAR TO THE
HIGHEST CORE LOCATION WITH NO ERROR.
!
.PARA
^THE DEFAULT MODE IS [NO ^WRAP ^CHECK.
^TYPE THE "^W" COMMAND ONCE TO TURN IT ON, AGAIN TO TURN IT OFF, ETC.
.PARA
^NO ERRORS CAN OCCUR WHEN TYPING THIS COMMAND.

.PAGE
^&3.4.24###^X#^COMMAND#--#^START#IN#^SINGLE-^STEP#^MODE\&
.PARA
^THE "^X" COMMAND CAUSES EXACTLY ONE 1401 INSTRUCTION TO BE EXECUTED.
^WHEN THE INSTRUCTION IS COMPLETED, ^S1401 TYPES:
.SKIP 1
	!!! - ^^SINGLE STEP DONE##I-REG = \\NNNNN
.SKIP 1
AND THE ^S1401 ^SUPERVISOR AGAIN HAS CONTROL.
.PARA
^THIS COMMAND IS SIMILAR TO THE 1401 ^^I/EX\\ MODE, BUT PERFORMS BOTH
^I-CYCLES AND ^E-CYCLES BEFORE STOPPING.
.PARA
^USE THIS INSTRUCTION FOR DEBUGGING.
.PARA
^NO ERRORS POSSIBLE, ALTHOUGH 1401 PROGRAMMING ERRORS MAY OCCUR.



.SKIP 5
^&3.4.25###^Y#^COMMAND#--#^START#IN#^ADDRESS-^STOP#^MODE\&
.PARA
^THE 1401 PROGRAM IS STARTED AS IN THE "^S" COMMAND.
^AFTER EACH INSTRUCTION IS COMPLETED, THE ^RUN-^TIME-^INTERPRETER
COMPARES ][ISTAR TO ][YSTAR (^S1401'S SPECIAL ^ADDRESS-^STOP REGISTER).
^IF THEY ARE EQUAL, ^S1401 TYPES:
.SKIP 1
	!!! - ^^ADDRESS STOP##IREG = \\NNNNN
.SKIP 1
AND CONTROL IS RETURNED TO THE ^S1401 ^SUPERVISOR.
.PARA
^THIS IS ALSO A DEBUGGING TOOL.
^NO ERRORS POSSIBLE, ALTHOUGH 1401 PROGRAMMING ERRORS MAY OCCUR.
.PARA
^THIS COMMAND IS SIMILAR TO THE 1401 ^ADDRESS ^STOP FEATURE, BUT AN
IMPORTANT DIFFERENCE SHOULD BE NOTED BY THOSE WHO ARE FAMILIAR WITH
THE 1401 ^ADDRESS-^STOP MODE.
^S1401 ONLY STOPS IF [YSTAR EQUALS THE ADDRESS OF THE INSTRUCTION
ABOUT TO BE PERFORMED.
^THERE IS NO WAY TO ^ADDRESS-^STOP ON A PIECE OF DATA THAT HAS BEEN
ACCESSED!



.SKIP 5
^&3.4.26###^Z#^COMMAND#--#^ZERO#1401#^CORE\&
.PARA
^SETS ALL OF THE 1401 CORE TO BLANKS, WHICH CAN BE HELPFUL WHEN
DEBUGGING 1401 PROGRAMS.
.PARA
^NO ERRORS CAN OCCUR WHEN EXECUTING THE "^Z" COMMAND.

.PAGE
^&3.5###^ADDRESS#^REGISTER#^MANIPULATION\&
.PARA
^S1401 HAS FOUR ADDRESS REGISTERS:
.SKIP 1
	][ASTAR - ^A STORAGE ADDRESS REGISTER
.SKIP 1
	][BSTAR - ^B STORAGE ADDRESS REGISTER
.SKIP 1
	][ISTAR - ^I STORAGE ADDRESS REGISTER
.SKIP 1
	][YSTAR - ADDRESS-STOP ADDRESS REGISTER
.SKIP 1
^THE FIRST THREE ARE IDENTICAL TO THEIR COUNTERPARTS ON THE 1401.
[YSTAR IS BEST THOUGHT OF AS THE DIAL-AN-ADDRESS FEATURE ON THE 1401
WHEN THE 1401 IS RUNNING IN THE ADDRESS-STOP MODE.
^TO RUN ^S1401 UNDER ADDRESS-STOP-MODE, FIRST SET [YSTAR TO THE
STOP-ADDRESS (MUST BE THE ADDRESS OF AN INSTRUCTION),
AND THEN START THE PROGRAM WITH THE "^Y" COMMAND.
.PARA
^TO EXAMINE OR CHANGE AN ADDRESS REGISTER, TYPE ONE OF THE FOLLOWING
TO THE ^S1401 ^SUPERVISOR:
.SKIP 1
^^
.CENTER
A=##########B=##########I=##########Y=
\\
.SKIP 1
^S1401 WILL TYPE THE CURRENT CONTENTS OF THE REGISTER (OR _#_#_##_#_#_#_#_# IF THEY ARE BAD),
AND WAIT FOR ONE OF THE FOLLOWING REPLIES:
.SKIP 1
	1. ^CARRIAGE RETURN FOR NO CHANGE.
.SKIP 1
	2. ^NEW CONTENTS FOLLOWED BY A CARRIAGE RETURN.
.SKIP 1
^THE NEW CONTENTS MUST BE AN INTEGER BETWEEN 0 AND 15999, OR A
THREE-CHARACTER ALPHA-NUMERIC 1401 ADDRESS CODE.
[RUBOUT AND ^CONTROL/^U WILL DELETE ERRORS.

.PAGE
^&3.6###1401#^CORE#^MODIFICATION#(^SUPERVISOR#MODE)\&
.PARA
^TO MODIFY CORE, TYPE THE DESIRED 1401 CORE ADDRESS
(EITHER AN INTEGER FROM 0 TO 15999 OR A 3-CHARACTER 1401 ADDRESS CODE)
FOLLOWED BY AN EQUAL SIGN <=>.
^S1401 WILL TYPE THE CHARACTER CURRENTLY IN THAT CORE LOCATION.
^A WORD MARK IS INDICATED BY A PRECEDING <_^>.
^THE USER NOW HAS FOUR POSSIBLE RESPONSES:
.LEFT MARG +10
.RIGHT MARG -10
.PARA -4
1.##<[CR> FOR NO CHANGE.  (^EXITS TO THE ^SUPERVISOR'S ASTERISK (*).)
.PARA
2.##<[LF> FOR NO CHANGE, BUT AUTOMATICALLY EXAMINE THE NEXT CORE
LOCATION.
.PARA
3.##<[RUBOUT> FOR NO CHANGE, BUT AUTOMATICALLY EXAMINE THE PREVIOUS
CORE LOCATION.
.PARA
4.##^A CHARACTER OR STRING OF CHARACTERS.
^THESE ENTER 1401 CORE AS THE USER TYPES THEM.
^ANY NUMBER OF CHARACTERS CAN BE ENTERED.
^AUTOMATIC CARRIAGE RETURNS WILL BE GENERATED BY ^S1401 WHEN NECESSARY,
BUT HAVE NO EFFECT ON THE DATA.
^THE USER CAN ENTER CHARACTERS UNTIL CORE LOCATION 15999 IS REACHED,
AND AFTER THAT LOCATION IS FILLED, AN AUTOMATIC EXIT IS PERFORMED.
.BR
^TO ENTER A CHARACTER WITH A WORD MARK, FIRST TYPE THE SIMULATED
^WORD ^MARK KEY <[TAB>, THEN TYPE THE CHARACTER.
^THE ^WORD ^MARK KEY WILL ECHO AS <_^>.
.BR
^YOU END THE STRING WITH <[CR>, <[LF>, OR <[RUBOUT>, WHICH OPERATE
AS ABOVE.
.BR
^IF YOU TYPE AN INVALID CHARACTER, OR A BAD COMBINATION OF CHARACTERS
(E.G. TWO WORD MARKS IN A ROW), AN AUTOMATIC <[RUBOUT> IS PERFORMED.
.LEFT MARG -10
.RIGHT MARG +10
.PARAGRAPH 0
^EACH TIME <[LF>, <[RUBOUT>, OR ERROR OCCURS, THE APPROPRIATE CORE
ADDRESS AND CONTENTS ARE TYPED AT THE LEFT MARGIN.
.PARA
^TO VERIFY WHAT YOU HAVE MODIFIED, USE THE ^V COMMAND.

.SUBTITLE ^CHAPTER 4 -- ^S1401 ^RUN-^TIME ^INTERPRETER
.PAGE
.CENTER
^CHAPTER 4
.SKIP
.CENTER
^^S1401 RUN-TIME INTERPRETER\\
.SKIP
.CENTER
WITH NOTES ON
.SKIP
.CENTER
THE DIFFERENCES BETWEEN THE 1401 AND ^S1401
.SKIP 3
^&4.1###^INTRODUCTION\&
.PARA
^AS PREVIOUSLY MENTIONED, ^S1401 RUNS IN TWO MODES:
.SKIP
	^SUPERVISOR MODE
.BR
	^RUN-^TIME ^INTERPRETER MODE
.SKIP
^TRANSFER OF CONTROL FROM THE ^SUPERVISOR TO THE ^RUN-^TIME
^INTERPRETER OCCURS WHEN THE USER TYPES ONE OF THE FOLLOWING
^SUPERVISOR COMMANDS:
.SKIP
.NOFILL
	^S	^START
	^G	^GO (^START AND ^DETACH)
	^L	^LOAD
	^X	^SINGLE STEP EXECUTE
	^Y	^START IN ADDRESS-STOP MODE
.FILL
.SKIP
^CONTROL TRANSFERS FROM THE ^RUN-^TIME ^INTERPRETER TO THE
^SUPERVISOR ON:
.SKIP
.NOFILL
.UPPER CASE
	!!! - PROGRAM HALT
	!!! - MANUAL STOP
	!!! - SINGLE STEP DONE
	!!! - ADDRESS STOP
	!!! - SINGLE CYCLE PRINT
	!!! - \\ERROR (UNLESS RECOVERY IS ATTEMPTED)
.LOWER CASE
.FILL
.SKIP
.PARA
^THIS CHAPTER EXPLAINS HOW THE ^RUN-^TIME ^INTERPRETER SIMULATES
THE COMPONENTS OF THE 1401 SYSTEM:
.SKIP
.NOFILL
	1401 SIMULATION		SECTION 4.2
	1402 SIMULATION		SECTION 4.3
	1403 SIMULATION		SECTION 4.4
	1407 SIMULATION		SECTION 4.5
	1311 SIMULATION		SECTION 4.6
.FILL

.PAGE
^&4.2###1401#^C^P^U#^SIMULATION\&
.SKIP 1


^&4.2.1###^THE#1401#^^STOP\\#KEY\&
.PARA
^THE 1401 [STOP KEY IS SIMULATED BY THE ^S KEY ON THE CONSOLE
KEYBOARD WHEN ^S1401 IS IN "^RUN-^TIME ^INTERPRETER" MODE.
^HOWEVER, ^S1401 OPERATION DIFFERS FROM THE 1401.
.INDEX ^DIFFERENCES BETWEEN ^S1401 AND 1401
^BECAUSE CHECKING THE KEYBOARD BETWEEN EACH 1401 INSTRUCTION IS TOO TIME
CONSUMING,
^S1401 RECOGNIZES THE ^S (^STOP) KEY DURING THE FOLLOWING
INSTRUCTIONS ONLY:
[BIN#Q, [BIN#*, AND ALL [I/O INSTRUCTIONS EXCEPT [RCP AND [WCP.
^WHENEVER YOU TYPE THE ^S KEY, IT REMAINS IN THE [RSTS BUFFER
UNTIL ONE OF THE ABOVE 1401 INSTRUCTIONS IS EXECUTED.
^THAT INSTRUCTION CONTINUES TO COMPLETION.
^THE MESSAGE:
.SKIP
	^^!!! - MANUAL STOP\\
.SKIP
IS THEN TYPED, AND CONTROL PASSES TO THE ^SUPERVISOR.
.PARA
^IF A PROGRAM DOES NOT RESPOND TO THE ^S KEY AFTER A MODEST WAIT,
YOU MUST USE ^CONTROL/^C TO HALT IT.
^^YOU CANNOT RESTART AFTER TYPING CONTROL/C!!!\\
.SKIP 3


^&4.2.2###1401#^SENSE#^SWITCHES#^A-^G\&
.PARA
^THE 1401 SENSE SWITCHES ARE SIMULATED BY THE "^J" COMMAND.
(SEE SECTION 3.4.10)
.PARA
^ONE PROBLEM THAT OCCURS IS THAT THE SENSE SWITCHES CANNOT
BE CHANGED WHEN YOU ARE IN ^RUN-^TIME ^INTERPRETER MODE.
^FOR EXAMPLE, IF YOU RUN OUT OF INPUT AND GET THE MESSAGE
ASKING FOR ANOTHER DEVICE ASSIGNMENT, YOU CANNOT TURN ON
SENSE SWITCH ^A!
^YOU MUST START RUNNING, THEN [STOP (^S KEY), AND THEN USE THE "^J" COMMAND.



.SKIP 3
^&4.2.3###1401#CORE#MEMORY\&
.PARA
^SIMULATED 1401 MEMORY IS A 16000. BYTE IMAGE OF 1401 CORE.
^EACH BYTE IN THE [PDP-11 HAS THE FOLLOWING BIT-FORMAT:
.SKIP
.NOFILL
.CENTER
^^MM#BA8#421\\
.SKIP
	WHERE:	[MM=11 INDICATES A WORD MARK
		[MM=00 INDICATES NO WORD MARK
		THE OTHER BITS ARE THE IMAGE OF 1401 CORE BITS
.FILL
.SKIP
^NO CHECK BIT IS NECESSARY BECAUSE THE [PDP-11 DOES ITS OWN
PARITY CHECKING.

.PAGE
^&4.2.4###^BASIC#OPERATION\&
.PARA
^THE ^RUN-^TIME ^INTERPRETER OPERATES ON SIMULATED 1401 CORE AS
FOLLOWS:
.SKIP
^&1401 ^I-CYCLES\&
.BR
1.##][ISTAR IS CHECKED FOR THE CORE ADDRESS OF THE NEXT INSTRUCTION.
.BR
2.##^THE OP CODE IS FETCHED FROM MEMORY.
.BR
3.##^THE ^A-ADDRESS AND ^B-ADDRESS ARE FETCHED (IF THEY EXIST),
CONVERTED TO POINT TO THE PROPER [PDP-11 BYTE,
AND LOADED INTO ][ASTAR AND ][BSTAR.
.BR
4.##^ANY D-CHARACTER IS FETCHED.
.SKIP
^&1401 ^E-CYCLES\&
.BR
^THE APPROPRIATE OP CODE ROUTINE IS EXECUTED.
^THESE OP CODE ROUTINES PERFORM THE APPROPRIATE ARITHMETIC,
LOGICAL, OR [I/O OPERATIONS.
^THEY HAVE BEEN DESIGNED TO OPERATE EXACTLY LIKE THE 1401.
^EXCEPTIONS ARE NOTED IN THIS CHAPTER.
.SKIP
^&^STOP CHECKS ARE MADE\&
.BR
^MANUAL STOP (^S), SINGLE STEP MODE, ADDRESS-STOP, SINGLE CYCLE PRINT.
.SKIP
^THE ABOVE STEPS ARE REPEATED UNTIL A HALT IS ENCOUNTERED.
.SKIP 3


^&4.2.5###^INSTRUCTION#LENGTHS\&
.PARA
^THE 1401 DOES NOT CHECK FOR VALID INSTRUCTION LENGTHS OF THE VARIOUS
OP CODES, EXCEPT FOR LENGTH 3 AND 6 (BOTH INVALID AND CAUSE CHECK
STOPS).
^INSTRUCTIONS USING BOTH ^A AND ^B ADDRESSES WILL CAUSE CHECK STOPS
IF THE INSTRUCTION LENGTH IS 2 OR 5, BUT THIS ERROR IS DETECTED AS
AN INVALID ADDRESS, SINCE [ASTAR OF [BSTAR WILL CONTAIN A BLANK
CHARACTER.
^INSTRUCTIONS USING D-CHARACTERS SIMPLY PICK UP THE LAST CHARACTER
OF THE INSTRUCTIONS AS THE D-CHARACTER.
^IT IS POSSIBLE, THEREFORE, TO EXECUTE MEANINGLESS INSTRUCTIONS ON THE
1401 (FOR EXAMPLE, A 7-CHARACTER BRANCH INSTRUCTION).
^A NOTABLE EXAMPLE WAS DETECTED BY ^S1401 IN THE 1401
DIAGNOSTIC TEST FOR THE [MA INSTRUCTION.
^THE 1401 USED THE UNITS CHARACTER OF THE ^B ADDRESS AS THE D-CHARACTER,
AND NEVER BRANCHED!
.PARA
^S1401 CHECKS ALL INSTRUCTIONS FOR VALID INSTRUCTION LENGTHS,
AND MAY THEREFORE REPORT PROGRAMMING BUGS THAT WERE NEVER DISCOVERED.

.PAGE
^&4.2.6###^STORAGE#ADDRESS#REGISTERS:##^^ISTAR,#ASTAR,#BSTAR\\\&
.PARA
][ISTAR HAS IDENTICAL OPERATION IN ^S1401 AND 1401.
.PARA
][ASTAR AND ][BSTAR ARE HANDLED SLIGHTLY DIFFERENTLY IN ^S1401.
^A COMPLETE DESCRIPTION IS CONTAINED IN ^APPENDIX ^E.
^THE FOLLOWING SPECIAL RULES APPLY TO ^S1401 (NOT THE 1401):
.LEFT MARGIN +10
.PARA -4
.INDEX ^DIFFERENCES BETWEEN 1401 AND ^S1401
1.##^CHAINING FROM A [NOP INSTRUCTION DOES NOT WORK.
^NO ERROR IS REPORTED, BUT BAD RESULTS OCCUR!
.PARA
2.##^USING [SAR OR [SBR TO STORE A 3-CHARACTER FIELD WHICH IS NOT A VALID
1401 ADDRESS WILL NOT WORK.
^THE ERROR MESSAGE ^^!!! - ADDRESSING ERROR\\ WILL BE TYPED.
.PARA
3.##^ATTEMPTING TO USE [ASTAR AFTER A ^MOVE-UNIT OR ^LOAD-UNIT
INSTRUCTION (CHAINING OR [SAR) DOES NOT WORK.
^NO ERROR IS REPORTED, JUST BAD RESULTS!!
.LEFT MARG -10
.PARA 0
^ADDRESS MANIPULATION DURING INDEXING AND MODIFY ADDRESS ([MA)
OPERATIONS USE THE ADD CIRCUITRY ON THE 1401.
^BLANKS AND OTHER INVALID ADDRESS CHARACTERS DON'T CAUSE ERRORS,
BECAUSE THEY ARE CHANGED TO DIGITS DURING THE ADD.
^S1401 HANDLES THIS EXACTLY LIKE THE 1401.
(^SEE NEXT SECTION FOR CONVERSION EXPLANATION.)
.SKIP 3


^&4.2.7###^ARITHMETIC\&
.PARA
^THE 1401 ADDS ANYTHING.
^BLANKS BECOME ZEROS AS MENTIONED IN THE 1401 MANUALS.
^WHAT THEY DON'T TELL YOU IS THAT "_#" BECOMES A "3",
"@" BECOMES A "4", ETC.
(^THE 8-BIT IS DROPPED.)
.NOFILL
.SKIP
^&	1401 CHAR	^VALUE USED\&
	BLANK		0
	_# (8-2-1)	3
	@ (8-4)		4
	: (8-4-1)	5
	##(8-4-2)	6
	##(8-4-2-1)	7
.FILL
.PARA
^S1401 IS COMPATIBLE WITH 1401 ARITHMETIC CONVENTIONS.
^IN AN ATTEMPT TO KEEP THE RUN TIME REASONABLE, THE ^S1401 USES A
TABLE-ORIENTED ARITHMETIC PACKAGE; SO IF YOUR 1401 DOES ARITHMETIC
DIFFERENTLY, CHANGE THE 3 ARITHMETIC TABLES IN THE ^S1401 SOURCE CODE.
^COMPLEMENTING, RECOMPLEMENTING, SIGN CONTROL, ARITHMETIC OVERFLOW,
AND ZONE BIT OVERFLOW (HIGH ORDER) ARE ALL HANDLED BY ^S1401
AS IN THE 1401.



.PAGE
^&4.2.8###^INTERNAL#INDICATORS\&
.PARA
^S1401 CONTAINS A TABLE OF 64 INTERNAL INDICATORS FOR QUICK ACCESS.
(^MOST OF THEM ARE NOT USED.)
^THEY ARE ALL OFF INITIALLY, EXCEPT FOR THE "BLANK" INDICATOR
WHICH IS ALWAYS ON.
^THE ^SUPERVISOR "^R" COMMAND (^RESET) RESTORES THEM ALL TO THEIR
INITIAL STATE.
^INDICATORS ARE SET OR RESET AS ON THE 1401 WITH A FEW EXCEPTIONS:
.LEFT MARG +8
.PARA -4
1.##^MOST [I/O ERROR INDICATORS ARE NOT USED.
[I/O IS ALL BUFFERED, AND IT WOULD BE DIFFICULT TO REMEDY ANY
ERROR THRU 1401 PROGRAM CONTROL.
[I/O ERRORS ARE REPORTED BY ^S1401, AND A RECOVERY ATTEMPT IS ALLOWED
AS EXPLAINED IN ^CHAPTER 5.
.PARA
2.##^THE DISK PARITY-ERROR INDICATOR (^V) IS NOT SET WHEN A 1401
.INDEX 1311 SIMULATION
PROGRAM ATTEMPTS TO READ A SECTOR OR SECTORS IN THE WRONG MODE
(E.G., ^MOVE-MODE INSTEAD OF ^LOAD-MODE).
^THE DISK UNEQUAL-ADDRESS INDICATOR (^X) IS SET TO INDICATE THIS
ERROR.
.SKIP 3
.LEFT MARG -8


^&4.2.9###^EDIT#(^^MCE\\)\&
.PARA 0
^S1401 USES EXPANDED PRINT EDIT.
^THE ROUTINES ARE COMPLEX, BUT THEY PERFORM EXACTLY AS THE 1401 WITH
ONE EXCEPTION:
.LEFT MARG +10
.RIGHT MARG -10
.SKIP
^ON THE 1401, IF THE EDIT-CONTROL FIELD CONTAINS A "$" WITHOUT A ZERO
(0), ALL WORD MARKS BETWEEN THE ^A-FIELD AND THE ^B-FIELD ARE REMOVED.
^THIS APPEARS TO BE A LOGIC BUG IN THE 1401 AND WILL NOT HAPPEN WITH
^S1401.
.LEFT MARG -10
.RIGHT MARG +10

.SKIP 3
^&4.3###1402#CARD#READER/PUNCH#SIMULATION\&
.INDEX 1402 SIMULATION
.PARA
^THE 1402 CARD READER IS SIMULATED BY ANY VALID [RSTS INPUT DEVICE.
^THE 1402 CARD PUNCH STACKERS AND READER STACKERS ARE SIMULATED BY
ANY VALID [RSTS OUTPUT DEVICES.
.PARA
^ACTUAL CARD DECKS THAT HAVE BEEN USED ON THE 1402 READER
CAN BE USED WITHOUT ALTERATION ON ^S1401 IF THE "1401" SET
OF CARD CODES HAS BEEN SPECIFIED DURING [RSTS [SYSGEN PROCEDURES.
^IF YOU TRY TO USE THE "029" OR "026" CODES, [S1401 WILL NOT
WORK PROPERLY!!!!!
.PARA
^CARD IMAGE FILES ON ^D^E^CTAPE, DISK, AND PAPER TAPE CONSIST OF
[ASCII CHARACTERS.
^EACH CARD IS STORED AS A STRING OF UP TO 80 CHARACTERS.
^TRAILING BLANKS ON A CARD ARE SUPPRESSED TO SAVE STORAGE.
^THE STRING OF CHARACTERS IS FOLLOWED BY A [<CR><LF> SEQUENCE.
^SEE APPENDIX ^D FOR THE CONVERSIONS BETWEEN 1402 CODES AND
[ASCII CHARACTERS.
.PARA
^CARD IMAGE FILES THAT ARE PRODUCED BY [RSTS OR [DOS FOR USE WITH
[S1401 MUST CONFORM TO THE FOLLOWING SPECS:
.SKIP
.NOFILL
	^A MAXIMUM OF 80 CHARACTERS IS ALLOWED PER CARD IMAGE.
	^EACH CARD IMAGE MUST BE FOLLOWED BY ^^<LF>, <FF>, OR <ESC>\\.
	(^NORMALLY USE [<CR><LF>.)
	^ONLY THE CHARACTERS IN APPENDIX ^D AND ^^<CR>, <LF>,
	     <FF>, <ESC>, AND <NUL>\\ ARE VALID.
.FILL
.PARA
^INVALID CHARACTERS (AND LONG LINES) CAUSE AN ERROR ON INPUT:
.SKIP
	^^!!! - 1402 READ CHECK\\
.SKIP
^SINCE THE ONLY RECOVERY FROM SUCH AN ERROR SKIPS THE ENTIRE CARD
IMAGE CONTAINING THE ERROR, BE CAREFUL TO AVOID INVALID CHARACTERS.
^FOR EXAMPLE, [<TAB> CAUSES THIS ERROR AS DOES ^CONTROL/^Z.
(^IT IS POSSIBLE TO RECOVER FROM AN [EOF ^CONTROL/^Z.
^JUST CONTINUE, AND THE "CURRENT CARD IMAGE" THAT WILL BE
SKIPPED IS ONLY THE ^CONTROL/^Z FOLLOWED BY NULLS.
^THE TRUE [EOF CONDITION WILL THEN BE REPORTED VIA INDICATOR ^A.)
.PARA
^S1401 OUTPUT FILES ARE ENTIRELY COMPATABLE WITH [RSTS-V05B-24.
^WITH ONE EXCEPTION...
.PARA
^&^SPLIT FILES\&
.BR
^WHEN A 1401 PROGRAM IS "PUNCHING" CARD IMAGES ONTO ^D^E^CTAPE OR DISK,
AND THE DEVICE BECOMES FULL, ^S1401 DOES NOT BOMB LIKE [BASIC-PLUS.
^INSTEAD, IT TYPES:
.SKIP
	^^DEVICE FULL - CHANNEL _#\\ N
.SKIP
WHERE N IS THE INTERNAL CHANNEL NUMBER ASSIGNED TO THE STACKERS:
.SKIP
.NOFILL
	     N  =  1   2   3   4   5   6   13
	STACKER =  [NR  1   2   [NP  4   8   PRINTER
.SKIP
.FILL
^THEN [S1401 CLOSES THE FILE.
(^IF AN ERROR OCCURS, IT TRIES TO RECOVER.)
^AFTER THE OLD FILE IS CLOSED, ^S1401 REQUEST A NEW FILE SPEC.
^YOU NOW TYPE A NEW FILE SPECIFICATION FOR THIS CHANNEL.
^YOU MUST USE A FILE ON THE [SAME [TYPE OF DEVICE.  ^IF YOUR FIRST
FILE WAS ON ^D^E^CTAPE, THE CONTINUATION FILE MUST ALSO BE ON ^D^E^CTAPE.
(^DIFFERENT DEVICES HAVE DIFFERENT DEFAULT BUFFER LENGTHS, AND A FULL
BUFFER OF THE OLD LENGTH IS ALREADY WAITING FOR OUTPUT.)
(^AGAIN, ALL ERRORS ATTEMPT RECOVERY.)
^IF ALL GOES WELL, THE 1401 PROGRAM CONTINUES.
.PARA
^THE TWO (OR MORE) PARTS OF THE SPLIT FILE CAN BE INPUT TO ^S1401
LATER AS A SINGLE FILE, BUT YOU MUST USE THE "/^C" OPTION TO DO THIS.
^THE LAST (PARTIAL) CARD IMAGE OF THE FIRST HALF OF THE FILE
WILL BE LOST UNLESS YOU USE THE "/^C" OPTION PROPERLY.
^THIS OPTION TELLS THE ^S1401 INPUT ROUTINES THAT ANY CHARACTERS
IN THE BUFFER WHEN AN [EOF CONDITION IS ENCOUNTERED SHOULD BE
RETAINED, AND A CONTINUATION FILE SHOULD BE REQUESTED.
^USE THE "/^C" OPTION WHEN READING ALL [EXCEPT THE LAST PART
OF A SPLIT FILE.
(CF. SECTION 3.4.3)

.PAGE
^&4.4###1403#PRINTER#SIMULATION\&
.INDEX 1403 SIMULATION
.PARA
^S1401 [LP11 OPERATION IS ALMOST IDENTICAL TO 1403 OPERATION.
1401 WRITE INSTRUCTIONS (OP-CODE "2") PRINT THE CHARACTERS LISTED
IN ^APPENDIX ^D EXCEPT THE GROUP MARK (JUST LIKE THE 1403).
^ON CORE DUMPS, ALL CHARACTERS ARE PRINTED (JUST LIKE THE 1403).
.PARA
^NOTE THAT THE CHARACTER SET FOR THE [LP11 IS SLIGHTLY DIFFERENT FROM
THE CHARACTER SET FOR THE 1403.
.PARA
^THE 1403 CARRIAGE CONTROL TAPE IS FULLY SIMULATED AS DESCRIBED IN
THE ^SUPERVISOR "^P" COMMAND.
.PARA
^YOU MAY DELAY THE ASSIGNMENT OF THE 1403 PRINTER.
^FOR EXAMPLE, IF THE 1401 PROGRAM DOES A LARGE DISK SORT BEFORE ANY
OUTPUT, ANOTHER JOB COULD BE USING THE [LP11.
^S1401 REQUESTS ASSIGNMENT WHEN THE FIRST OUTPUT IS ATTEMPTED.
^IF YOU DO NOT ASSIGN IT AT THIS POINT ([<CR> ONLY), ALL PRINTED
OUTPUT WILL "VANISH".
.SKIP 3


^&4.5###1407#CONSOLE#INQUIRY#STATION#SIMULATION\&
.INDEX 1407 SIMULATION
.PARA
^WHEN THE ^S1401 ^RUN-^TIME ^INTERPRETER IS RUNNING A 1401 PROGRAM,
THE CONSOLE KEYBOARD BECOMES THE SIMULATED 1407 CONSOLE INQUIRY STATION.
.TEST PAGE 11
^WHEN THE PROGRAM IS RUNNING, AND AN [RCP (^READ FROM 1407) INSTRUCTION
IS [NOT BEING EXECUTED, THE FOLLOWING KEYS ARE ACTIVE:
.SKIP
.NOFILL
	^&1407			^S1401 KEYBOARD\&
.SKIP
	[REQUEST/ENTER		[ALT (OR [ESC)
.SKIP
	[CANCEL			[RUBOUT
.SKIP
	^&^OTHER FUNCTIONS\&
	1401 [STOP KEY		^S	(SEE SECTION 4.2.1)
.SKIP
	^DISABLE ^SLOW ^PRINT	^X
.FILL
.PARA
.TEST PAGE 10
^WHEN AN [RCP INSTRUCTION [IS BEING EXECUTED, THE FOLLOWING KEYS
ARE ACTIVE:
.SKIP
.NOFILL
	^&1407			^S1401 KEYBOARD\&
.SKIP
	[CANCEL			[RUBOUT
.SKIP
	[WORD [MARK		[TAB
.SKIP
	[RESPOND/TYPEOUT		[CARRIAGE [RETURN
.FILL
.PARA
^ALL VALID 1401 CHARACTER KEYS ARE ALSO ACTIVE WHEN AN [RCP INSTRUCTION
IS BEING EXECUTED.
(^SEE APPENDIX ^D)
^IF THE USER TYPES INVALID CHARACTERS, THEY ARE IGNORED
AND WILL NOT ECHO.
^THE CARRIAGE RETURNS SOMEWHAT RANDOMLY.
^THIS IS DUE TO A PECULIARITY IN [RSTS AND SHOULD BE IGNORED IF POSSIBLE.
.PARA
^WORD MARKS IN "LOAD MODE" ARE ECHOED AS <_^>.
.PARA
^BELLS RING WHEN YOU TYPE THE [REQUEST/ENTER AND [CANCEL KEYS.
.PARA
[WCP (^WRITE ON CONSOLE PRINTER) INSTRUCTIONS ARE INDENTICAL TO 1407
OPERATION, EXCEPT THAT WORD MARKS PRINT AS <_^>.
.SKIP 3


^&4.6###1311#^DISK#^SIMULATION\&
.SKIP


^&4.6.1###^DISK#FORMAT\&
.PARA
^EACH 1311 TRACK OF 20 SECTORS IS STORED ON FOUR ADJACENT
[RK03 TRACKS.
^THE 1311 SECTOR ADDRESSES AND MOVE/LOAD MODE INDICATOR
ARE STORED AT THE BEGINNING OF EACH SECTOR IMAGE.
^A HEADER CODE AT THE BEGINNING OF EACH SIMULATED 1311 TRACK
IDENTIFIES THE DISK AS A SIMULATED 1311 DISK.
^IF THE HEADER CODE IS INCORRECT, ^S1401 TYPES THE MESSAGE
.BR
	"!!!#-#[WRONG#DISK"
.BR
AND ABORTS THE PROGRAM.
^FOR MORE DETAILS ON THE SECTOR ADDRESSING
SEE THE SOURCE CODE OF [S1401.
.PARA
1401 CHARACTERS ARE STORED ON THE [RK03 DISK IN [BCD FORMAT:
.SKIP
	[MM#BA8#421
.SKIP 3



^&4.6.2###^GENERAL#OPERATION\&
.PARA
^S1401 USES A LARGE DISK BUFFER ABLE TO HOLD A FULL 1311 TRACK IMAGE.
^EACH TIME A READ, WRITE, OR SCAN OPERATION IS PERFORMED,
^S1401 CHECKS A POINTER TO SEE IF THE PROPER SIMULATED 1311 TRACK IS ALREADY
IN THE DISK BUFFER.
^IF IT IS NOT, A FOUR-BLOCK DISK READ IS PERFORMED.
^IF IT IS, THE [RK03 DISK INPUT IS BYPASSED.
^THIS ELIMINATES REPETITIVE READING, BUT IT COULD CAUSE MAJOR
PROBLEMS IF THE USER CHANGES [RK03 DISK CARTRIDGES, AND THEN THE
1401 PROGRAM ATTEMPTS TO ACCESS THE TRACK THAT HAPPENS TO BE IN
THE DISK BUFFER.
^THE PROGRAM WANTS THE TRACK FROM THE NEW DISK, BUT ^S1401 WILL
BYPASS THE [RK03 READ AND USE THE BUFFER FROM THE OLD DISK!!!
^BAD INPUT/OUTPUT WOULD RESULT, AND THE DISK WOULD BE MESSED UP.
^TO AVOID THIS SITUATION, THE ^MOUNT AND ^UNMOUNT ^SUPERVISOR
COMMANDS ("^M" AND "^U") RESET THE INTERNAL POINTER TO FORCE AN
[RK03 DISK READ.
.PARA
^THEREFORE, THE USER MUST ALWAYS USE THE ^MOUNT AND ^UNMOUNT
COMMANDS PROPERLY!!!
.SKIP 3 3

^&4.6.3###1401#^SEEK#^DISK#INSTRUCTION\&
.PARA
^WHEN A ^SEEK DISK INSTRUCTION IS EXECUTED, ^S1401 COMPUTES
THE PROPER [RK03 CYCLINDER ADDRESS, AND SAVES IT INTERNALLY.
^NO ACTUAL [RK03 SEEK OPERATION IS PERFORMED, BECAUSE [RSTS
DOES NOT SUPPORT THIS.
.SKIP 3


^&4.6.4###1401#^READ#^DISK#INSTRUCTIONS\&
.PARA
^WHEN A ^READ DISK INSTRUCTION IS EXECUTED, ^S1401 COMPUTES THE
[RK03 ADDRESS WHERE THE SIMULATED 1311 SECTOR IS STORED.
^IF THE SIMULATED 1311 TRACK CONTAINING THE SECTOR IS
ALREADY IN THE DISK BUFFER, NO [RK03 READ IS PERFORMED.
^IF THIS TRACK IS NOT IN THE DISK BUFFER,
^S1401 READS THE ENTIRE SIMULATED 1311 TRACK INTO
THE DISK BUFFER.
(^FOUR [RK03 TRACKS OF 512 CHARACTERS EACH ARE READ.)
^THE PROPER DATA IS THEN TRANSFERRED FROM THE DISK BUFFER TO
1401 CORE.
^MULTIPLE SECTOR TRANSFERS CAUSE REPEATED TRANSFERS FROM THE DISK
BUFFER TO 1401 CORE (AND ADDITIONAL [RK03 READS AS NECESSARY).
.PARA
^IF A 1401 PROGRAM ATTEMPTS TO READ DISK DATA IN THE WRONG MODE
("MOVE MODE" INSTRUCTION WITH "LOAD MODE" DATA, FOR EXAMPLE),
^S1401 REPORTS THE ERROR BY SETTING THE UNEQUAL-ADDRESS INDICATOR (^X).
^THE 1401 REPORTS THIS ERROR BY SETTING THE PARITY ERROR INDICATOR (^V).
^S1401 REPORTS ALL OTHER ERRORS JUST LIKE THE 1401.
.SKIP 3


^&4.6.5###1401#^WRITE#^DISK#INSTRUCTIONS\&
.PARA
^WHEN A ^WRITE DISK INSTRUCTION IS EXECUTED, ^S1401 FIRST COMPUTES THE
[RK03 ADDRESS OF THE SIMULATED 1311 SECTOR.
^IF THE SIMULATED 1311 TRACK CONTAINING THIS SECTOR IS NOT IN THE
DISK BUFFER, ^S1401 ISSUES AN [RK03 DISK READ COMMAND AND WAITS
UNTIL THE FOUR [RK03 SECTORS CONTAINING THE SIMULATED 1311 TRACK HAVE
BEEN COMPLETELY READ INTO THE BUFFER.
^IF THE DESIRED TRACK IS IN THE DISK BUFFER, NO READ IS ISSUED.
^THE PROPER DATA IS THEN TRANSFERRED FROM SIMULATED 1401 MEMORY TO THE
DISK BUFFER.
^WHEN ALL SECTORS HAVE BEEN TRANSFERRED, OR WHEN END-OF-BUFFER
(END-OF-TRACK) OCCURS, THE ALTERED [RK03 SECTORS ARE
WRITTEN ON THE [RK03 DISK CARTRIDGE.
^AT THIS TIME, IF THE ^RK03 WRITE-CHECK OPTION IS ENABLED
(SEE THE "^N" COMMAND), THE ALTERED [RK03 SECTORS ARE
CHECKED FOR PROPER TRANSFER BY USING THE [RK11
^WRITE-^CHECK FUNCTION.
.PARA
^THIS ENTIRE PROCESS IS REPEATED FOR MULTIPLE SECTOR DISK WRITES.


.PAGE
^&4.6.6###1401#^WRITE#^CHECK#^DISK#INSTRUCTION\&
.PARA
^THE 1401 REQUIRES A ^WRITE ^CHECK DISK INSTRUCTION AFTER EACH
WRITE DISK INSTRUCTION.
^S1401 MAINTAINS THIS REQUIREMENT FOR COMPATABILITY REASONS,
BUT PHYSICAL WRITE CHECKS ARE NOT PERFORMED AT THIS TIME.
(^IT MORE EFFICIENT TO PERFORM THE WRITE CHECKS IMMEDIATELY
AFTER THE WRITES AND BEFORE THE DISK BUFFER IS RELEASED.)
^WHEN A 1401 ^WRITE ^CHECK DISK INSTRUCTION IS EXECUTED,
^S1401 SETS THE DISK-CONTROL FIELD, ][ASTAR, AND ][BSTAR
TO THEIR VALUES AFTER THE LAST 1401 DISK INSTRUCTION THAT WAS
EXECUTED.
^THERE WILL BE NO COMPARISONS AND NO ERRORS UNLESS AN
ERROR INDICATOR WAS ALREADY SET.
.PARA
^IF A 1401 DISK INSTRUCTION OTHER THAN A ^WRITE ^CHECK FOLLOWS
A WRITE, ^S1401 TYPES:
.SKIP
	!!! - ^^WRITE CHECK OP-CODE MISSING\\
.SKIP
AND STOPS THE PROGRAM.
^THIS ERROR MEANS THAT THERE IS A BUG IN THE 1401 PROGRAM,
SO NO RECOVERY IS POSSIBLE.
^BEFORE ATTEMPTING TO RUN ANOTHER 1401 PROGRAM, TYPE THE "^R"
COMMAND (^RESET) TO CLEAR THE INDICATOR THAT REQUIRES ^WRITE
^CHECK TO BE THE NEXT 1401 DISK INSTRUCTION.
.SKIP 3


^&4.6.7###1401#^SCAN#^DISK#INSTRUCTION\&
.PARA
^WHEN A ^SCAN ^DISK INSTRUCTION IS EXECUTED,
^S1401 COMPUTES THE PROPER [RK03 ADDRESS AND READS THE 
SIMULATED 1311 TRACK INTO THE DISK BUFFER IF IT IS NOT THERE.
^THE APPROPRIATE COMPARE INSTRUCTIONS START SCANNING THE SECTORS.
^ADDITIONAL 1311 TRACKS ARE READ INTO THE DISK BUFFER AS NEEDED.
.SKIP 3


^&4.6.8###^DISK#ERROR#REPORTING\&
.PARA
^THE 1401 MACHINE INDICATORS "^N" (ACCESS INOPERABLE) AND "_\" (ACCESS BUSY)
ARE ALWAYS OFF IN ^S1401.
^IF A DISK DRIVE IS NOT READY, ^S1401 REPORTS THIS AS A RECOVERABLE
ERROR (SEE CHAPTER 5).
^THE ACCESS BUSY INDICATOR IS NOT NEEDED SINCE THE ENTIRE TRANSFER
IS COMPLETED BEFORE CONTROL RETURNS TO THE 1401 PROGRAM.
.SKIP 3

^&4.6.9###^MOVE/^LOAD#MODES\&
.PARA
^AS PREVIOUSLY MENTIONED, A 1401 ^READ ^DISK INSTRUCTION WHICH
OPERATES IN THE WRONG MODE WILL CAUSE THE UNEQUAL ADDRESS INDICATOR
(^X) TO BE SET.
^UNLIKE THE 1401, ^S1401 DOES NOT REQUIRE THE USER TO INITIALIZE THE MOVE/LOAD
MODES ON TRACKS BY USING THE ^WRITE-WITH-ADDRESS DISK INSTRUCTION.
^TO CHANGE FROM ONE MODE TO ANOTHER, SIMPLY WRITE DATA IN THE NEW
MODE.
^THIS CHANGE FROM 1401 MAKES DISK INITIALIZATION MUCH EASIER.
^ONE MORE DIFFERENCE -- ^S1401 ALLOWS MOVE AND LOAD MODE
DATA TO BE MIXED ON THE SAME TRACK.
^ALL DATA ON A SECTOR MUST BE WRITTEN IN THE SAME MODE, OF COURSE.
.PARA
^BEFORE ANY [RK03 DISK CAN BE USED BY ^S1401, IT MUST BE INITIALIZED
TO THE SPECIAL FORMAT.
^THE [BASIC-PLUS PROGRAM "[S1311R" IS SUPPLIED FOR THAT PURPOSE.
^IT SHOULD BE PLACED IN THE SYSTEM LIBRARY.
^OPERATING INSTRUCTIONS ARE INCLUDED IN THE PROGRAM.

.SUBTITLE ^CHAPTER 5 -- ^ERROR MESSAGES AND RECOVERY
.PAGE
.CENTER
^CHAPTER 5
.SKIP
.CENTER
^^ERROR MESSAGES AND RECOVERY\\
.SKIP 3


^&5.1###"!!!#-"#^MESSAGES\&
.PARA
^THESE MESSAGES ARE TYPED WHEN CONTROL IS PASSING TO THE ^S1401
^SUPERVISOR (SOMETIMES CONDITIONAL ON A [RETRY? ANSWER).
^THEY ARE PRECEDED BY "!!!#-" TO DISTINGUISH THEM FROM MESSAGES
THAT ARE TYPED BY THE USER'S 1401 PROGRAM.
.SKIP 2


^&5.1.1###^START-UP#^MESSAGE\&
.PARA
^^!!! - DEAD START\\
.BR
^TYPED WHEN ^S1401 IS INITIALLY STARTED.
.SKIP 2


^&5.1.2###^SYSTEM#^ERRORS\&
.PARA
^^!!! - FATAL ERROR\\ NNNNNN DD
.BR
^A MACHINE FAILURE OR ^S1401 BUG HAS OCCURRED.
^YOUR PROGRAM HAS PROBABLY BEEN LOST.
^YOU SHOULD EXIT TO [RSTS WITH THE "^T" COMMAND.
^IF THE ERROR RECURS, COPY THE TWO NUMBERS AND CONTACT A PROGRAMMER.
.PARA
^^!!! - SYSTEM ERROR\\ NNNNNN
.BR
^AN ERROR IN ^S1401 HAS OCCURRED AT ADDRESS NNNNNN.
^CONTACT A PROGRAMMER.
.PARA
^^!!! - ***MISSING ERROR MSG***\\
.BR
^BUG IN ^S1401.  ^CONTACT A PROGRAMMER.
.PARA
^^SYSINIT ERROR -- ABORT S1401R\\
.BR
^A FATAL ERROR OCCURRED DURING ^S1401 INITIALIZATION.
^IS "[S1401.POV" ON ACCOUNT _[0,1_]?
^IS THE [RSTS JOB SIZE MAX LARGE ENOUGH (12^K)?
^CONTACT A PROGRAMMER.
.SKIP 2


^&5.1.3###^INFORMATIONAL#MESSAGES\&
.PARA
^^!!! - MANUAL STOP
\\
.BR
^THE USER TYPED THE SIMULATED [STOP KEY ("^S").
.PARA
^^!!! - ADDRESS STOP  I-REG = \\XXXXX
.BR
[ISTAR=YSTAR WHEN RUNNING IN ^ADDRESS-STOP-MODE.
.PARA
^^!!! - SINGLE CYCLE PRINT  I-REG = \\XXXXX
.BR
^OPTION 2 IS ON, AND A LINE WAS PRINTED.
^TYPE ^START ("^S") TO CONTINUE.
.PARA
^^!!! - SINGLE STEP DONE  I-REG = \\XXXXX
.BR
^ONE INSTRUCTION WAS COMPLETED WHEN RUNNING IN SINGLE-STEP MODE.
.PARA
^^!!! - PROGRAM HALT  I-REG = \\XXXXX
.BR
^A 1401 HALT OP-CODE (".") WAS EXECUTED.
^[ISTAR POINTS TO THE NEXT INSTRUCTION.
^AS ON THE 1401, IF THE HALT INSTRUCTION HAD AN ^A-ADDRESS, THIS
INSTRUCTION IS REALLY A "HALT AND BRANCH".
^IN THIS CASE, A ^START ("^S") COMMAND WILL BRANCH TO THAT ADDRESS.
.PARA
^^!!! - _^C INTERRUPT - ABORT\\
.BR
^THE USER TYPED ^CONTROL/^C.
^IF A 1401 PROGRAM WAS RUNNING, IT PROBABLY [CANNOT BE RESTARTED.
.SKIP 2


^&5.1.4###^USER#ERRORS\&
.PARA
^^!!! - BAD COMMAND\\
.BR
^THE USER TYPED AN INVALID COMMAND TO THE ^S1401 ^SUPERVISOR.
^SEE THE LIST IN APPENDIX ^C.
.PARA
^^!!! - ADDRESSING ERROR\\
.BR
^THE USER TYPED AN INVALID ADDRESS TO THE ^S1401 ^SUPERVISOR.
.SKIP 2


^&5.1.5###1401#PROGRAM#ERRORS\&
.PARA
^^!!! - MISSING WORD MARK  I-REG = \\XXXXX
.BR
^S1401 ATTEMPTED TO EXECUTE THE INSTRUCTION AT MEMORY LOCATION
XXXXX, BUT THERE WAS NO WORD MARK.
.PARA
^^!!! - INVALID OP CODE  I-REG = \\XXXXX
.BR
^S1401 ATTEMPTED TO EXECUTE THE INSTRUCTION AT XXXXX, BUT THE
OP-CODE IS NOT IN THE LIST OF VALID OP-CODES (SEE APPENDIX ^B).
^THIS MIGHT BE CAUSED BY A FEATURE NOT IMPLEMENTED IN [S1401-V05B.
.PARA
^^!!! - INVALID INSTRUCTION LENGTH  I-REG = \\XXXXX
.BR
^S1401 ATTEMPTED TO EXECUTE THE INSTRUCTION AT XXXXX, BUT THE
INSTRUCTION LENGTH DID NOT MATCH THE TABLE OF VALID LENGTHS
(SEE APPENDIX ^B).
^THIS MIGHT BE AN ERROR THAT THE 1401 DID NOT DETECT.
.PARA
^^!!! - ADDRESSING ERROR  I-REG = \\XXXXX
.BR
1)##^S1401 ATTEMPTED TO EXECUTE THE INSTRUCTION AT XXXXX, BUT
[ASTAR OR [BSTAR HAS AN INVALID ADDRESS-CHARACTER.
.BR
2)##XXXXX POINTS PAST A [MA, [SAR, OR [SBR INSTRUCTION THAT
PICKED UP A BAD ADDRESS.
.BR
3)##XXXXX POINTS PAST AN [MU OR [LU INSTRUCTION THAT IS USING A
"UNIT" SPEC. NOT IMPLEMENTED IN [S1401-V05B.
.BR
4)##XXXXX POINTS PAST AN INSTRUCTION THAT CAUSED A "^WRAP-CHECK"
WHEN RUNNING UNDER "^WRAP-CHECK" MODE.
.PARA
^^!!! - INVALID D-CHARACTER  I-REG = \\XXXXX
.BR
XXXXX POINTS PAST THE INSTRUCTION THAT CONTAINS AN INVALID
D-CHARACTER (THE LAST CHARACTER IN THE INSTRUCTION).
.PARA
^^!!! - BAD DISK CONTROL FIELD  I-REG = \\XXXXX
.BR
XXXXX POINTS PAST A DISK INSTRUCTION WHICH ENCOUNTERED AN
INVALID CHARACTER IN THE DISK CONTROL FIELD.
.PARA
^^!!! - WRITE CHECK OP-CODE MISSING (DISK)\\
.BR
^THE 1401 PROGRAM ATTEMPTED TO EXECUTE A DISK INSTRUCTION,
BUT DID NOT HAVE A WRITE-CHECK INSTRUCTION FOLLOWING THE LAST
WRITE INSTRUCTION.
^BEFORE RUNNING ANOTHER PROGRAM ON ^S1401, TYPE THE "^R" COMMAND
TO AVOID A REPETITION OF THIS ERROR.
.PARA
^^!!! - DISK ADDR. R/W ERROR\\
.BR
1)##^THE 1311 WRITE-ADDRESS SWITCH WAS OFF WHEN ATTEMPTING TO
EXECUTE A WRITE-WITH-ADDRESS DISK INSTRUCTION.
.BR
2)##^A DISK "READ/WRITE WITH ADDRESSES" OPERATION DID NOT USE
20 SECTORS.
.BR
3)##^THE FIRST DIGIT OF ALL SECTOR ADDRESSES IS NOT IDENTICAL
(^S1401 RESTRICTION).
.INDEX ^DIFFERENCES BETWEEN 1401 AND ^S1401
.SKIP 2


^&5.1.6###^I/^O#^ERRORS\&
.PARA
^^!!! - 1402 HANG (NO INPUT AVAILABLE)\\
.BR
^A 1401 ^READ INSTRUCTION WAS EXECUTED BUT NO INPUT IS AVAILABLE
(POSSIBLY BECAUSE AN END-OF-FILE WAS ENCOUNTERED).
^IF YOU TYPE "^Y", ^S1401 WILL REQUEST A NEW READER ASSIGNMENT
(JUST LIKE THE "^C" COMMAND).
.PARA
^^!!! - 1402 READ CHECK\\ N
.BR
1.##^TOO MANY CHARS.  ^RECOVERY MEANS CURRENT CARD IMAGE IS SKIPPED.
.BR
2.##^A BAD CHARACTER.  ^RECOVERY MEANS CURRENT CARD IS SKIPPED.
.PARA
^^!!! - BAD CARRIAGE CONTROL - CHANNEL\\ NN
.BR
^THE 1401 PROGRAM TRIED TO SKIP TO CHANNEL "NN", BUT CHANNEL "NN" IS
NOT ON THE CARRIAGE CONTROL TAPE.
^A RECOVERY ATTEMPT (RESPONSE "^Y") ALLOWS THE USER TO RE-ENTER
THE ENTIRE CARRIAGE CONTROL TAPE.
^THIS OPERATES EXACTLY AS THE "^P" COMMAND, BUT CONTROL RETURNS
TO THE ^RUN-^TIME ^INTERPRETER WHEN DONE.
^THE PRINTER IS STILL PROPERLY ALIGNED, AND NO FURTHER ACTION
BY THE USER SHOULD BE NECESSARY.
.PARA
^^A SPECIAL CASE:\\
^IF THE USER TYPES A NEW FORM LENGTH THAT IS SHORTER THAN THE CURRENT
POSITION OF THE PRINTER, HE MUST REALIGN THE FORMS.
^FOR EXAMPLE:
.LEFT MARG +8
.RIGHT MARG -8
^SUPPOSE THE OLD FORM LENGTH WAS 66, AND THE PRINTER IS POSITIONED
AT LINE 40.
^FURTHER SUPPOSE THAT THE 1401 INSTRUCTION "^C^C#3" IS EXECUTED,
AND THERE IS NO CHANNEL _# 3 ON THE CARRIAGE-CONTROL TAPE.
^AND NOW, SUPPOSE THE FOLLOWING DIALOGUE TAKES PLACE:
.SKIP
.NOFILL
.UPPER CASE
BAD CARRIAGE CONTROL - CHANNEL 3 - RETRY (Y/N)? Y<CR>
FORM LENGTH = 24<CR>
  CHANNEL 3<CR>
   AT LINE 20<CR>
  CHANNEL <CR>
.FILL
.SKIP
.LOWERCASE
^THE OLD PRINTER POSITION (LINE 40) IS MEANINGLESS NOW.
^SO, ^S1401 WILL RESET THE INTERNAL SIMULATED CARRIAGE-CONTROL TAPE
TO LINE 1 AND TYPE:
.SKIP
^^MOVE FORMS TO TOP
.BR
TYPE <CR> WHEN READY\\
.SKIP
^THE USER MUST THEN MATCH THE INTERNAL OPERATION BY MANUALLY
MOVING THE FORMS TO ^TOP-OF-FORMS.
(^THIS MAY REQUIRE ONLY HITTING THE ^^TOP-OF-FORMS\\ SWITCH ON THE
LINE PRINTER.
^BUT FOR NON-STANDARD FORM LENGTHS, IT MAY REQUIRE OPENING THE
DRUM GATE AND REPOSITIONING THE PAPER ON THE PRINTER.)
^WHEN READY TO RUN, THE USER TYPES THE [<CR> KEY AS INSTRUCTED.
^THE 1401 INSTRUCTION "^C^C#3" (SKIP TO CHANNEL 3) IS EXECUTED
AND THE 1401 PROGRAM CONTINUES.
.LEFT MARG -8
.RIGHT MARG +8
.PARA
^^!!! - DISK NOT MOUNTED - 1401 DRIVE _#\\ N
.BR
^TYPE "^Y" TO RETRY, AND ^S1401 WILL REQUEST THE [RSTS DRIVE FOR
THIS DISK (JUST LIKE THE 2ND PART OF THE ^MOUNT COMMAND).
.PARA
^^!!! - WRONG DISK\\
.BR
^THE DISK DOES NOT HAVE THE SPECIAL CODE DESIGNATING IT AS A
SIMULATED 1311 DISK.
^PROCESSING IS ABORTED.
.PARA
^^!!! - DISK ERROR - RETRY?\\
.BR
[RSTS FAILED ON A DISK READ/WRITE (IT TRIED SEVERAL TIMES!).
^TYPE "^Y" TO TRY AGAIN.
.PARA
^^!!! - DISK ERROR  17\\
.BR
^THIS IS A SYSTEM ERROR.
[RSTS FAILED TO READ ALL FOUR BLOCKS AS REQUESTED.
^GET A PROGRAMMER'S HELP.
.SKIP 2


^&5.2###^R^S^T^S#ERROR#MESSAGES\&
.PARA
[RSTS ERROR MESSAGES ARE PRINTED TO REPORT MANY ERRORS.
^THEIR MEANINGS ARE SIMILAR TO THEIR USE IN [BASIC-PLUS.
^IF YOU GET THE VERSION IDENTIFICATION LINE FOR [RSTS,
THERE IS AN ^S1401 BUG (WHICH ERASED THE REAL ERROR NUMBER).
^PLEASE REPORT IT TO A SYSTEMS PROGRAMMER.
^AN ERROR DID OCCUR, BUT YOU MAY HAVE TROUBLE FINDING OUT WHICH ONE.

.SUBTITLE ^APPENDICES
.PAGE
.CENTER
^APPENDIX ^A
.SKIP
.CENTER
^^INTERNAL INDICATORS\\
.SKIP 3
^THE FOLLOWING INTERNAL INDICATORS ARE IMPLEMENTED IN ^S1401.
^MOST [I/O ERROR INDICATORS ARE NOT USED, BECAUSE ^S1401 REPORTS
[I/O ERRORS INDEPENDENTLY.
.PARA
^ALL EXCEPT THE FIRST ("BLANK") ARE CLEARED BY ^RESET ("^R" COMMAND).
.SKIP 2
.LEFT MARG +10
.NOFILL
BLANK	^UNCONDITIONAL BRANCH
.SKIP
9	^CHANNEL _#9 ON SIMULATED CARRIAGE CONTROL TAPE
@	^CHANNEL _#12 ON CARRIAGE TAPE
.SKIP
^A	^LAST CARD (SENSE SWITCH ^A AND READER [EOF)
^B	^SENSE SWITCH ^B
^C	^SENSE SWITCH ^C
^D	^SENSE SWITCH ^D
^E	^SENSE SWITCH ^E
^F	^SENSE SWITCH ^F
^G	^SENSE SWITCH ^G
.SKIP
/	^UNEQUAL COMPARE
.SKIP
*	^INQUIRY STATION CLEAR
^Q	^INQUIRY STATION REQUEST
.SKIP
^S	^EQUAL COMPARE
^T	^LOW COMPARE  (^B<^A)
^U	^HIGH COMPARE (^B>^A)
.SKIP
^V	^PARITY ERROR (DISK)
^W	^WRONG-LENGTH RECORD (DISK)
^X	^UNEQUAL-ADDRESS (DISK)
^Y	^ANY DISK ERROR
.SKIP
^Z	^ARITHMETIC OVERFLOW (RESET BY [BIN INSTRUCTION)
.FILL
.LEFT MARG -10

.PAGE
.CENTER
^APPENDIX ^B
.SKIP
.CENTER
^^VALID OP-CODES AND LENGTHS\\
.SKIP 3
.LEFT MARG +8
.NOFILL
^&OP-CODE	^INSTRUCTION		^VALID LENGTHS
\&
1	^READ			1,4
2	^WRITE			1,2,4,5
3	^READ, ^WRITE		1,4
4	^PUNCH			1,4
5	^READ, ^PUNCH		1,4
6	^WRITE, ^PUNCH		1,4
7	^WRITE, ^READ, ^PUNCH	1,4
.SKIP
_#	^MODIFY ADDRESS		1,4,7
/	^CLEAR STORAGE		1,4,7##(1)
.FOOTNOTE 3
-----------
.BR
(1)##^LENGTH 7 INSTRUCTION DOESN'T NEED WORD MARK AFTER IT.
!
^S	^SUBTRACT		1,4,7
^V	^BRANCH ON [WM OR ^ZONE	1,8
^Y	^MOVE ZONE		1,4,7
^Z	^MOVE AND SUPPRESS	7
.SKIP
,	^SET WORD MARK(S)	1,4,7##(1)
^K	^SELECT STACKER		2,5
^L	[LCA			1,4,7,8##(2)
.FOOTNOTE 2
.SKIP
(2)##^LENGTH 8 INSTRUCTION MUST BE A "UNIT" OP.
!
^M	[MCW			1,4,7,8##(2)
^N	[NOP			ANY LENGTH##(3)
.FOOTNOTE 2
.SKIP
(3)##^BUT CHAINING FROM [NOP DOES NOT WORK!
!
^P	[MCM			1,4,7
^Q	^STORE ^A-REGISTER	1,4,7
.SKIP
_!	^ZERO AND SUBTRACT	1,4,7
^A	^ADD			1,4,7
^B	^BRANCH			1,4,5,8##(4)
.FOOTNOTE 2
.SKIP
(4)##^LENGTH 4 ^BRANCH FOLLOWED BY BLANK DOESN'T NEED [WM AFTER.
!
^C	^COMPARE			1,4,7
^D	^MOVE NUMERIC		1,4,7
^E	[MCE (^EDIT)		1,4,7
^F	^CONTROL CARRIAGE	2,5
^H	^STORE ^B-REGISTER	1,4,7
.SKIP
?	^ZERO AND ADD		1,4,7
_.	^HALT			1,2,4,5,7,8
BOX	^CLEAR WORD MARK		1,4,7
.LEFT MARG -8

.PAGE
^THE FOLLOWING OP-CODES ARE INVALID IN [S1401-V05B:
.SKIP 3
.LEFT MARG +8
%	^DIVIDE
@	^MULTIPLY
.SKIP
^U	^CONTROL UNIT (^MAGTAPE)
^W	^BRANCH IF BIT EQUAL
^X	^MOVE AND INSERT ZEROS
.SKIP
8	^START READ FEED
9	^START PUNCH FEED
.LEFT MARG -8
.SKIP
.SKIP
^VARIOUS FORMS OF THE FOLLOWING ARE INVALID ALSO:
.SKIP
.LEFT MARG +8
^K	(THE ONLY [VALID D-CHARACTERS ARE 1, 2, 4, AND 8.)
.SKIP
^B	(VARIOUS INDICATORS ARE NOT USED.)
.SKIP
^L AND ^M	^MOVE AND ^BINARY ^CODE/^DECODE ARE INVALID.
	^THE ONLY [VALID UNIT OPS (IN THE ^A-ADDRESS) ARE:
		%^T0
		%^FN FOR N=0,1,3,5,6,7,8,9
.LEFT MARG -8
.FILL

.PAGE
.CENTER
^APPENDIX ^C
.SKIP
.CENTER
^^S1401 SUPERVISOR COMMAND SUMMARY\\
.SKIP 3
.LEFT MARG +8
^&^SINGLE CHARACTER COMMANDS\&
.NOFILL
.SKIP
^A	^DISK ADDRESS-WRITE SWITCH
^B	^BACK TO [BASIC-PLUS
^C	^1402 CARD READER ASSIGNMENT
^D	^DUMP 1401 CORE ON PRINTER
^E	^END STACKER FILES -- (NON-PROCESS RUN-OUT)
^G	^GO (^START AND DETACH)
^I	^INDICATOR EXAMINE
^J	^JIGGLE SENSE SWITCHES
^K	^1402 STACKER ASSIGNMENTS
^L	^LOAD
^M	^MOUNT SIMULATED 1311 DISK
^N	[RK03 DISK WRITE-CHECK SWITCH ***NOT IMPLEMENTED***
^O	^OPTIONS FOR PRINTER
^P	^1403 PRINTER SET-UP
^Q	^RESTORE PRINTER CARRIAGE
^R	^RESET (^START/^RESET KEY SIMULATION)
^S	^START
^T	^TERMINATE ABNORMALLY (PANIC EXIT)
^U	^UNMOUNT SIMULATED 1311 DISK
^V	^VERIFY 1401 CORE ON KEYBOARD
^W	^WRAP CHECK SWITCH
^X	^SINGLE STEP EXECUTE
^Y	^START IN ADDRESS STOP MODE
^Z	^ZERO CORE
.SKIP 2
^&^ADDRESS REGISTER MODIFICATION\&
.SKIP
	^I=	^A=	^B=	^Y=
.SKIP 2
^&1401 CORE MODIFICATION\&
.SKIP
[AAA=		WHERE [AAA IS A 3-CHARACTER 1401 ADDRESS
.SKIP
[NNNNN=		WHERE [NNNNN IS AN INTEGER ADDRESS < 16000.
.FILL
.LEFT MARG -8

.PAGE
.CENTER
^APPENDIX ^D
.SKIP
.CENTER
^^S1401 AND 1401 CHARACTER CODES (IN 1401 COLLATING SEQUENCE)\\
.LEFT MARG +8
.NOFILL
.UPPER CASE
.SKIP 1
1401	ASCII	CARD	ASCII	S1401	1401
CHAR	CHAR	CODE	(OCTAL)	OCTAL	BCD CODE
.SKIP 2
BLANK	SPACE	NONE	40	00	NONE
PERIOD	.	12-3-8	56	73	BA8 21
.SKIP
LOZENGE	'	12-4-8	47	74	BA84
_[	_[	12-5-8	133	75	BA84 1
.SKIP
<	<	12-6-8	74	76	BA842
GRP MK	__ (1)	12-7-8	137	77	BA8421
.SKIP
_&	_&	12	46	60	BA
$	$	11-3-8	44	53	B 8 21
.SKIP
*	*	11-4-8	52	54	B 84
_]	_]	11-5-8	135	55	B 84 1
.SKIP
_;	;	11-6-8	73	56	B 842
DELTA	=	11-7-8	75	57	B 8421
.SKIP
-	-	11	55	40	B
/	/	0-1	57	21	 A   1
.SKIP
COMMA	,	0-3-8	54	33	 A8 21
%	%	0-4-8	45	34	 A84
.SKIP
WRD-SEP	+	0-5-8	53	35	 A84 1
_\	_\	0-6-8	134	36	 A842
.SKIP
SEG	)	0-7-8	51	37	 A8421
ALT BL	_^ (2)	NONE	136	20	 A
.SKIP
_#	_#	3-8	43	13	  8 21
@	@	4-8	100	14	  84
.SKIP
COLON	:	5-8	72	15	  84 1
>	>	6-8	76	16	  842
.SKIP
TAPE	(	7-8	50	17	  8421
?	?	12-0	77	72	BA8 2
.SKIP
A	A	12-1	101	61	BA   1
B	B	12-2	102	62	BA  2
.SKIP
C	C	12-3	103	63	BA  21
D	D	12-4	104	64	BA 4
.LEFT MARG -8
-----------------
(1)  __ IS "UNDERLINE" ON KEYBOARD, "BACK-ARROW" ON PRINTER
(2)  _^ IS "CARET" ON KEYBOARD, "UP-ARROW" ON PRINTER
.LEFT MARG +8
.PAGE
1401	ASCII	CARD	ASCII	S1401	1401
CHAR	CHAR	CODE	(OCTAL)	OCTAL	BCD CODE
.SKIP 2
E	E	12-5	105	65	BA 4 1
F	F	12-6	106	66	BA 42
.SKIP
G	G	12-7	107	67	BA 421
H	H	12-8	110	70	BA8
.SKIP
I	I	12-9	111	71	BA8  1
_!	!	11-0	41	52	B 8 2
.SKIP
J	J	11-1	112	41	B    1
K	K	11-2	113	42	B   2
.SKIP
L	L	11-3	114	43	B   21
M	M	11-4	115	44	B  4
.SKIP
N	N	11-5	116	45	B  4 1
O	O	11-6	117	46	B  42
.SKIP
P	P	11-7	120	47	B  421
Q	Q	11-8	121	50	B 8

.SKIP
R	R	11-9	122	51	B 8  1
REC MK	"	0-2-8	42	32	 A8 2
.SKIP
S	S	0-2	123	22	 A  2
T	T	0-3	124	23	 A  21
.SKIP
U	U	0-4	125	24	 A 4
V	V	0-5	126	25	 A 4 1
.SKIP
W	W	0-6	127	26	 A 42
X	X	0-7	130	27	 A 421
.SKIP
Y	Y	0-8	131	30	 A8
Z	Z	0-9	132	31	 A8  1
.SKIP
0	0	0	60	12	  8 2
1	1	1	61	01	     1
.SKIP
2	2	2	62	02	    2
3	3	3	63	03	    21
.SKIP
4	4	4	64	04	   4
5	5	5	65	05	   4 1
.SKIP
6	6	6	66	06	   42
7	7	7	67	07	   421
.SKIP
8	8	8	70	10	  8
9	9	9	71	11	  8  1
.LOWER CASE
.FILL
.LEFT MARG -8

.PAGE
.CENTER
^APPENDIX ^E
.SKIP
.CENTER
^DETAILS ON ][ASTAR AND ][BSTAR IN ^S1401
.SKIP 2
.PARA
^ON THE 1401, [ASTAR AND [BSTAR ARE LOADED DURING THE ^I-CYCLES.
^THEY ARE CHECKED FOR VALIDITY ONLY DURING THE EXECUTE-CYCLES,
AND ONLY IF THEY ARE USED AS ADDRESSES.
(^AN INVALID 1401 ADDRESS MEANS A BLANK, 3-8, 4-8, 5-8, 6-8, OR 7-8
[BCD CHARACTER APPEARS IN AN ADDRESS.)
^THE FOLLOWING 1401 INSTRUCTIONS USE [ASTAR AND/OR [BSTAR TO
HOLD INFORMATION OTHER THAN VALID ADDRESSES:
.BR
.CENTER
[NOP, [SAR, [SBR, ^MOVE UNIT, ^LOAD UNIT
.PARA
^S1401 HANDLES ADDRESSES DIFFERENTLY.
^THE 3-CHARACTER 1401 ADDRESSES MUST BE CONVERTED TO AN INTERNAL
FORM.
^THIS CONVERSION IS DONE AS THE CHARACTERS ARE PICKED UP DURING
THE ^I-CYCLES.
^INVALID CHARACTERS ARE THEREFORE TRAPPED BEFORE THE INSTRUCTION
IS EXECUTED.
^THIS METHOD SAVES TIME, BUT CAUSES TROUBLE FOR THE 1401
INSTRUCTIONS LISTED ABOVE.
.PARA
[NOP:  ^ONE FREQUENT USE OF THE [NOP INSTRUCTION IS TO SKIP
OVER DATA (SEE ANY CARD LOADER).
^TO AVOID GENERATING ILLEGAL ADDRESS ERRORS,
^S1401 HAS A SPECIAL ROUTINE FOR ^N^O^P'S THAT SIMPLY SKIPS TO
THE NEXT INSTRUCTION (DENOTED BY A WORD MARK).
^NO INSTRUCTION LENGTH CHECK IS MADE, AND [ASTAR AND [BSTAR
ARE NOT LOADED.
^THEREFORE, ^^IT IS IMPOSSIBLE TO CHAIN FROM A "NOP"
INSTRUCTION UNDER S1401!!!\\
^ALTHOUGH CHAINING FROM A [NOP IS HIGHLY UNLIKELY, IT IS
NECESSARY TO UNDERSTAND BECAUSE NO ERROR IS REPORTED IF IT
OCCURS.
.PARA
[SAR AND [SBR:  ^IT IS CONCEIVABLE THAT A 1401 PROGRAM MIGHT USE A
7-CHARACTER [SAR OR [SBR INSTRUCTION TO STORE A 3-CHARACTER
NON-NUMERIC FIELD.
^IF THIS OCCURS IN ^S1401, AN [ADDRESSING#ERROR WILL OCCUR IF THE
THREE CHARACTERS DO NOT CONSTITUTE A VALID 1401 ADDRESS.
^THE 1401 PROGRAM CAN BE PATCHED TO USE AN [MCW INSTRUCTION TO
PERFORM THE SAME OPERATION.
^IF THE THREE CHARACTERS CONSTITUTE A VALID 1401 ADDRESS,
THE INSTRUCTION WILL BE EXECUTED CORRECTLY BY ^S1401.
.PARA
[MU AND [LU:  ^THE ^A-ADDRESS OF ^MOVE AND ^LOAD INSTRUCTIONS
CONTAINS A "%" IF THE INSTRUCTION IS TO BE INTERPRETED AS A
^MOVE UNIT OR ^LOAD UNIT INSTRUCTION.
^THIS CHARACTER IS NOT A VALID ADDRESS CHARACTER, AND WOULD
CAUSE AN ^^ADDRESSING#ERROR\\ IF THE ^A-ADDRESS WERE CONVERTED IN
THE NORMAL WAY BY ^S1401.
^THEREFORE, ALL ^M AND ^L INSTRUCTIONS CAUSE A SPECIAL CHECK
TO BE PERFORMED IMMEDIATELY AFTER THE OP CODE IS PICKED UP.
^IF THE NEXT CHARACTER IS NOT "%", NORMAL PROCESSING CONTINUES.
^IF IT IS "%", ^S1401 DOES [NOT LOAD [ASTAR IN THE NORMAL MANNER.
^THE ^MOVE UNIT OR ^LOAD UNIT INSTRUCTION IS EXECUTED WITH A SPECIAL
[ASTAR, AND AFTER ITS COMPLETION, [ASTAR IS SET TO 1401 ADDRESS 0
TO AVOID ERRORS.
^THEREFORE, IF A 1401 PROGRAM EXECUTES A [SAR (^STORE ^A-ADDRESS
REGISTER) INSTRUCTION IMMEDIATELY AFTER A ^MOVE UNIT OR ^LOAD UNIT
INSTRUCTION, THE WRONG ADDRESS WILL BE STORED WHEN RUNNING THIS
PROGRAM ON ^S1401.
^IF THIS BUG SHOULD EVER OCCUR, A SIMPLE 1401 PROGRAM PATCH COULD
REPLACE THE [SAR INSTRUCTION WITH A [SW, [MCW, [CW COMBINATION
THAT MOVES THE 3-CHARACTER ^A-ADDRESS FROM THE ^MOVE/^LOAD UNIT
INSTRUCTION TO THE DESIRED CORE LOCATION.
^AS WITH THE [NOP PROBLEM, NO ERROR IS REPORTED BY ^S1401 IF
THIS BUG OCCURS.

.PAGE
.CENTER
^APPENDIX ^F
.SKIP
.CENTER
^CONDENSED ^DISK ^DUMP AND ^LOAD
.SKIP 2
.PARA
^TWO 1401 PROGRAMS ARE INCLUDED TO ASSIST THE USER IN CONVERTING 1311
DISK PACKS TO [RK03 DISK CARTRIDGES:
.SKIP
.CENTER
^^CONDENSED DISK DUMP\\
.CENTER
^^CONDENSED DISK LOAD\\
.SKIP 2
^^CONDENSED DISK DUMP\\ DUMPS THE CONTENTS OF A 1311 DISK PACK ONTO
CARDS.
^STRINGS OF BLANKS ARE CONDENSED WITH SPECIAL CODES TO DECREASE CARD
USAGE.
^DISK ADDRESSES ARE INCLUDED IN THE DUMP FOR PROPER RELOADING.
^THE FOLLOWING SAFEGUARDS ARE INCLUDED:
.LEFT MARG +8
.PARA -4
1.##^SEQUENCE NUMBERS ARE PUNCHED IN THE CARDS TO ENSURE PROPER
RELOADING.
.PARA
2.##^A ONE-DIGIT [ID CODE IS PUNCHED ON ALL CARDS FOR
IDENTIFICATION.
(^THE CODE IS SUPPLIED BY THE USER.)
.PARA
3.##^AN [ID MESSAGE IS PUNCHED ON THE FIRST CARD FOR
IDENTIFICATION OF THE DISK PACK NAME, ETC.
^THIS MESSAGE IS TYPED BY THE [LOAD PROGRAM.
.LEFT MARG -8
.PARA 0
^OPERATING INSTRUCTIONS:  ^READY THE DISK TO BE DUMPED ON 1311 DRIVE
0.
^LOAD THE ^^CONDENSED DISK DUMP\\ PROGRAM AND FOLLOW THE INSTRUCTIONS.
^RESPOND TO "^^DUMP ENTIRE DISK\\" WITH A "^Y" OR "^N".
(^DUMP A PARTIAL DISK IF YOU DON'T NEED ALL OF IT.)
^IF YOU TYPED AN "^N", TWO ADDITIONAL QUESTIONS ARE ASKED:
.BR
	^^STARTING DISK ADDRESS...\\
.BR
^ANSWER WITH A 6-DIGIT ADDRESS FROM THE SEQUENCE:
.BR
	000000, 000200, 000400, 000600, 000800, ..., 019600, 019800.
.SKIP
	^^LAST DISK ADDRESS...\\
.BR
^ANSWER WITH A 6-DIGIT ADDRESS FROM THE SEQUENCE:
.BR
	000180, 000380, ..., 019780, 019980.
.PARA
^IF NON-STANDARD DISK ADDRESSES ARE ENCOUNTERED (AN UNEQUAL-ADDRESS
DISK ERROR HAS OCCURRED), THE PROGRAM TYPES:
.BR
	^^WHAT ADDRESS FOR SECTOR\\ NNNNNN?
.BR
^YOU MUST TELL THE PROGRAM WHAT ADDRESS IS WRITTEN ON THE SECTOR.
^THE PROGRAM WILL TRY ANOTHER READ, USING THIS NEW ADDRESS.
^IF SUCCESSFUL, IT WILL CONTINUE TO USE THE NEW ADDRESSING SCHEME
UNTIL IT RUNS INTO ANOTHER UNEQUAL-ADDRESS ERROR.
^AND SO FORTH.
.PARA
^THE PROGRAM TYPES [EOJ WHEN FINISHED.


.PAGE
^^CONDENSED DISK LOADER\\
.PARA
^THIS 1401 PROGRAM LOADS THE CARD FILE PRODUCED BY THE PREVIOUS
PROGRAM ONTO A DISK.
^OPERATING PROCEDURE:
.PARA
1)##^THE NEW DISK MUST HAVE STANDARD SECTOR ADDRESSES WRITTEN ON IT!!!!
^USE THE "[S1311R" PROGRAM TO DO THIS.
.PARA
2)##^READY THE DISK ON DRIVE 0.
.PARA
3)##^TURN THE DISK [WRITE-ADDRESS SWITCH ON ("^A" COMMAND).
.PARA
4)##^LOAD THE PROGRAM FOLLOWED BY THE DATA.
.PARA
5)##POSSIBLE ERRORS ---
.SKIP
	^^BAD CARD DECK - RESTART POSSIBLE
.SKIP
	^^SEQUENCE ERROR - RESTART AT SEQNO\\ NNNN
.BR
^IF YOU ARE RUNNING ^S1401, YOU SHOULD RE-SELECT THE CARD READER
TO CLEAR THE BUFFERS BEFORE RESTARTING
(USE THE "^C" COMMAND).
.SKIP
	^^DISK ERROR - FATAL\\
.BR
^NON-STANDARD ADDRESS ON NEW DISK ENCOUNTERED.
^OTHER DISK ERRORS.
.SKIP
	^^PROG ERROR - FATAL\\
.SKIP 2
.PARA
^WHEN FINISHED, THE PROGRAM TYPES:
.SKIP
	^^EOJ - LAST TRACK ADDRESS WAS\\ NNNNNN
.SKIP
FOR VISUAL VERIFICATION.
(^REMEMBER TO TURN THE DISK [WRITE-ADDRESS SWITCH OFF.)
.SKIP 3
^ADDITIONAL NOTES ON THE [CONDENSED [DISK [DUMP/LOAD PROGRAMS --
.PARA
^THESE PROGRAMS WORK WHEN DATA IS WRITTEN IN THE [MOVE [MODE [ONLY!!!!
.PARA
^THE SOURCE FILES ARE CALLED:
.BR
^^	CDDUMP.AUT\\	AND	^^CDLOAD.AUT\\
.SKIP
^THE OBJECT FILES ARE CALLED:
.BR
^^	CDDUMP.OBJ\\	AND	^^CDLOAD.OBJ\\
.SKIP
^THE OBJECT FILES ARE ALSO AVAILABLE ON CARDS ON REQUEST.

.PAGE
.CENTER
^APPENDIX ^G
.SKIP 1
.CENTER
^MODIFYING [RSTS FOR PERMANENT ^S1401 "^RUN-TIME SYSTEM"
.SKIP 2
.PARA
^THE FIRST PART IS EASY.
^INSERT THE FOLLOWING LINES INTO THE "[START.CTL" AND "[CRASH.CTL" FILES:
.SKIP
.NOFILL
.UPPERCASE
	LOGIN KB1: _[1,2_]
	FORCE KB1: RUN $ADDRTS
	FORCE KB1: S1401
	FORCE KB1: BYE F
.LOWERCASE
.FILL
.SKIP
^THAT ADDS THE ^S1401 RUN-TIME SYSTEM WHENEVER [RSTS IS STARTED
(OR AUTO-RESTARTS AFTER A CRASH).
.PARA
^NOW FOR THE HARD PART.
^YOU MUST PATCH [SHUTUP.BAS TO REMOVE ALL "RUN-TIME-SYSTEMS" BEFORE
IT ATTEMPTS A SHUT DOWN.
^OTHERWISE IT GETS AN ^^"ILLEGAL SYS () USAGE"\\ ERROR IN THE FINAL
STAGES.
^HERE IS THE CODE WE USED AT ^CARLETON.
^IF YOUR COPY OF [SHUTUP IS SIMILAR, YOU CAN USE THE SAME CODE.
^IF NOT, YOU'LL HAVE TO FIGURE OUT YOUR OWN PATCH.
.SKIP
.NOFILL
^ADD TO THE BEGINNING OF [LINE 4000:
	[GOSUB 5000

.SKIP
^ADD THE SUBROUTINE 5000:
.UPPERCASE
5000	R%=PEEK(PEEK(M9%(15%))):
	RETURN IF R%=0%:
	R0%=PEEK(R%+2%): R1%=PEEK(R%+4%):
	D$=SYS(CHR$(6%)+CHR$(-18%)+CHR$(4%)+STRING$(3%,0%)+
	 CHR$(R0%)+CHR$(SWAP%(R0%))+CHR$(R1%)+CHR$(SWAP%(R1%))+
	 STRING$(20%,0%)): GOTO 5000
.FILL
.LOWERCASE
.SKIP
^THE SUBROUTINE PEEKS INTO [RSTS ^MONITOR TO FIND THE "RUN-TIME-SYSTEM"
TABLE, AND THEN LOOKS IN THE TABLE FOR "RUN-TIME-SYSTEMS" OTHER THAN
[BASIC-PLUS.
^IF IT FINDS ANY, IT REMOVES THEM (THE LONG "SYS" CALL AT THE END).
^IT WASN'T SO DIFFICULT AFTER ALL.

.PAGE
.CENTER
^APPENDIX ^H
.SKIP 1
.CENTER
^CARLETON'S ^AUTOMATIC "^DATE" ^ROUTINE
.SKIP 2
.PARA
^CARLETON'S PROGRAMS FOR THE 1401 USED A STANDARD "DATE CARD"
WHICH SUPPLIED THE DATE FOR LISTING ON THE OUTPUT.
^SINCE THE "CARD OBJECT DECKS" ARE NOW KEPT AS ^D^E^CTAPE OR DISK
FILES, IT IS SOMETIMES MORE CONVIENIENT TO GET THE DATE THRU [RSTS.
^THEREFORE, A SPECIAL "KLUDGE" WAS PUT INTO ^S1401 TO SUPPLY THE
CURRENT DATE.
^AN UNUSED 1401 INSTRUCTION IS USED TO LOAD THE DATE INTO AN 18
CHARACTER FIELD.
^THIS INSTRUCTION IS A ^MOVE-UNIT OR ^LOAD-UNIT WITH AN ^A-ADDRESS OF
"%^D9".
^THE ^B-ADDRESS CONTAINS THE ADDRESS OF THE START OF THE 18-CHAR
FIELD IN WHICH THE DATE IS TO BE PLACED.
^THE 18-CHAR DATE FIELD IS FORMATTED AS FOLLOWS:
.SKIP
.CENTER
MMDDYY^M^M^MDD, YYYY
.SKIP
.PARA
^FOR EXAMPLE, SUPPOSE THE CURRENT DATE IS 25-^D^E^C-74.
^IF A PROGRAM WISHES TO LOAD THE DATE INTO 1401 CORE POSITIONS
182 THRU 199, THE FOLLOWING COMMAND IS EXECUTED:
.SKIP
	^^MU %D9,182,R\\
.SKIP
^AFTER EXECUTION, CORE LOCATIONS 182 THRU 199 ARE:
.SKIP
	^^122574DEC 25, 1974\\
.SKIP
^ALL PREVIOUS CHARACTERS AND WORD MARKS ARE CLEARED BY THIS INSTRUCTION.
^NO WORD MARKS ARE SET BY THIS INSTRUCTION.

.PAGE
.CENTER
^APPENDIX ^I
.SKIP
.CENTER
^EXPANDING ^S1401
.SKIP 2
^&^ADDING NEW 1401 INSTRUCTIONS TO ^S1401\&
.PARA
^ALL CODING MUST BE DONE IN PDP-11/40 (OR 45) ASSEMBLY LANGUAGE.
^ADD IT TO THE "[RTI" MODULE OR USE YOUR OWN MODULE.
^PUT THE DISPATCH ADDRESS (OF YOUR INTERPRETIVE ROUTINE) INTO
THE "[I.OPS" LIST (IN "[RTI").
^PUT THE PROPER LENGTH CODE INTO THE "[OPCD" (BYTE) LIST.
^BOTH OF THESE TABLES ARE ORDERED BY INTERNAL SEQUENCE OF
OP-CODE BITS.  ^APPENDIX ^D AND THE LIST "[TOASC" ARE HELPFUL.
.PARA
^IF YOU NEED TO ADD NEW UNITS TO THE "^MOVE/^LOAD ^UNIT" INSTRUCTION,
LOOK AT THE ROUTINES "[I.SPOP" AND "[MUNIT" IN "[RTI"; THE LIST
"[UNITS" AND "[MUNITL" IN "[IOH"; THE "[RCP/WCP" ROUTINES IN
"[IOH"; AND THE DISK ROUTINES IN "[DK".
.PARA
^IF YOU NEED "ABORTABLE" ERROR MESSAGES, ADD THE APPROPRIATE
MESSAGE TO THE MODULE "[MSG".
^USE THE MANY EXAMPLES AS A REFERENCE.
.PARA
^YOUR ROUTINE MUST FOLLOW CERTAIN RULES.
[ASTAR AND [BSTAR ARE [PDP-11 REGISTERS 4 AND 5.
^THEY DO EVERYTHING THAT THE 1401 REGISTERS DO.
^LEAVE THEM IN THEIR PROPER STATE AFTER YOUR INSTRUCTION ROUTINE.
[ISTAR IS AT THE BOTTOM OF THE STACK, AND THE STACK POINTER IS
POINTING TO IT WHEN THE ^RUN-^TIME ^INTERPRETER DISPATCHES TO THE
OP-ROUTINES.
^YOU SHOULDN'T NEED TO CHANGE [ISTAR.
^BE SURE THAT THE STACK POINTER IS PROPERLY POSITIONED WHEN YOU
RETURN TO THE MAIN CONTROLLER.
.PARA
^RETURN TO THE MAIN CONTROLLER WITH "[JMP#I.OP".
.PARA
^NEW ROUTINES THAT USE 1401 CORE SHOULD PROVIDE FOR THE "^WRAP CHECK
MODE".
^USE THE MACRO "[RCHECK" FOR THIS PURPOSE.
(^SEE THE MANY EXAMPLES IN "[RTI".)
^WHEN ACTIVE, "[REGCHK" EXAMINES THE CONTENTS OF THE 1401 MEMORY
LOCATIONS POINTED TO BY [ASTAR AND [BSTAR.
^SPECIAL "200" CODES FILL A "CORE OVERFLOW CHECK" AREA AND INDICATE
A WRAP HAS OCCURRED.
^THEREFORE, PLACE THE "[RCHECK" IN YOUR CODE WHERE THE 1401 MEMORY CONTENTS
CAN BE CHECKED BEFORE YOU MODIFY THEM.
.PARA
^IF YOU NEED READ/WRITE [PDP-11 CORE, YOU MUST PUT THIS IN THE "[POV"
MODULE.
^SINCE THE ^S1401 RUN-TIME SYSTEM IS USED BY MULTIPLE USERS, IT IS
IN "READ-ONLY" MEMORY.
^THE MODULE "[POV" IS REALLY THE "USER AREA" FOR EACH JOB.
^IT CONTAINS MOSTLY SIMULATED 1401 CORE AND [I/O BUFFERS.
^BUT IT ALSO CONTAINS THE MANY INDICATORS AND TEMP STORAGE NEEDED
BY THE CODE.
^ALL ADDRESSING IS COMPUTED INTERNALLY, AND NEED NOT CONCERN YOU.
^ONE IMPORTANT THING, THO......
.SKIP
^^	THE VIRTUAL ADDRESS OF SIMULATED 1401 CORE MUST
.BR
	NOT GO OVER OCTAL ADDRESS 077777.
\\
.SKIP
^SEE THE USAGE OF "[BADADR" IN THE [I.OP ROUTINES IF YOU NEED TO KNOW
WHY.
.PAGE
^&^ADDING NEW COMMANDS TO THE ^S1401 ^SUPERVISOR\&
.PARA
^THERE ARE ONLY TWO COMMAND LETTERS AVAILABLE, BUT YOU COULD USE OTHER
VALID [ASCII CHARACTERS.
^PUT THE COMMAND CHARACTER INTO THE LIST ["COMMAN", AND THE DISPATCH ADDRESS
INTO THE LIST ["COMJMP" (BOTH LISTS ARE IN ["SPV").
^USE ["POV" AS WITH ["RTI".
^DITTO FOR ERROR MESSAGES.
^USE THE ["DEBUG" MODE WHEN YOU TEST YOUR ADDITIONS.
["RTSODT" IS ALSO HELPFUL -- ASK THE [RSTS GROUP AT [DEC FOR IT.
^BE CAREFUL WITH REGS 4 AND 5 -- THEY ARE STILL [ASTAR AND [BSTAR.
^ALSO BE CAREFUL WITH THE STACK POINTER.
^RETURN FROM YOUR ROUTINE WITH ["JMP#ODT".

.PAGE
.CENTER
^APPENDIX ^J
.SKIP 2
.CENTER
^ASSEMBLING ^S1401 FROM THE SOURCE MODULES
.SKIP 2
.PARA
^THE REQUIRED MODULES ARE:
.NOFILL
.SKIP
^^
	SPV.MAC		RTI.MAC		IOH.MAC
	DK.MAC		MSG.MAC		POV.MAC
	DEF.MAC		INITIT.MAC	VE.MAC
\\
.FILL
.SKIP
AND THE FOLLOWING FROM YOUR [RSTS SYSTEM:
.SKIP
.NOFILL
^^
	COMMON.MAC	USER.MAC	RTSODT.MAC\\ (OPTIONAL)
.SKIP
\\
.FILL
^EACH MODULE MUST BE ASSEMBLED AS FOLLOWS:
.SKIP
^^	$RUN MACRO
.BR
	_#SPV,LP:<COMMON,USER,DEF,SPV
\\
.SKIP
^THE BATCH STREAM ["ASMS14.BAT" CONTAINS THE NECESSARY STUFF.
.PARA
^LINKING MUST BE DONE AS LISTED IN THE BATCH STREAM:
.SKIP
	["LNKS14.BAT"	FOR NORMAL RUN-TIME-SYSTEM
.BR
	["LNKSOD.BAT"	FOR RUN-TIME-SYSTEM WITH ["ODT"
.SKIP
^THERE ARE 4 LINKS DONE IN EITHER BATCH STREAM.
^YOU SHOULD GET ERRORS ON TWO OF THE LINKS, BUT NO ERRORS ON THE
OTHER TWO.
(^THE ERRORS OCCUR BECAUSE THE TWO "[.LDA" MODULES CALL EACH OTHER,
AND THEREFORE ARE LINKED WIERDLY.)
.PARA
^WHEN YOU ARE SUCCESSFUL TO THIS POINT, SEE SECTION 2.2 FOR LOADING
THE RUN-TIME SYSTEM.

.SUBTITLE ^INDEX
.PAGE
.CENTER
[INDEX
.SKIP 2
.;FAKE "PRINT INDEX"
.NOFILL
^ADDRESS STOP . . . . . . . . . . . 28, 29
[ASTAR  . . . . . . . . . . . . . . 27, 29, 33, 34, 40, 52
.SKIP
[BSTAR  . . . . . . . . . . . . . . 15, 27, 29, 33, 34, 40, 52
.SKIP
^CARD READER (SEE 1402 ^SIMULATION)
^CARRIAGE ^CONTROL ^TAPE  . . . . . . 15, 22, 23, 24, 46
^CONTROL/^C  . . . . . . . . . . . . 32
.SKIP
^DETACHING  . . . . . . . . . . . . 17
[DEVICE#FULL MESSAGE  . . . . . . . 36
^DIFFERENCES BETWEEN 1401 AND ^S1401 12, 32, 34, 44
^DISKS (SEE 1311 SIMULATION)
.SKIP
^EXIT TO [RSTS . . . . . . . . . . . 13, 25
.SKIP
[ISTAR  . . . . . . . . . . . . . . 25, 28, 29, 33, 34
.SKIP
^MEMORY REQUIREMENTS  . . . . . . . 3
.SKIP
^PRINTER (SEE 1403 SIMULATION)
.SKIP
^SENSE SWITCHES . . . . . . . . . . 18, 32, 46
^SINGLE CHARACTER COMMANDS  . . . . 11
^SINGLE CYCLE PRINT SWITCH  . . . . 22
^SLOW PRINT SWITCH  . . . . . . . . 22
^SPECIAL FEATURES . . . . . . . . . 3
^SPLIT FILES  . . . . . . . . . . . 14, 36
^STACKERS . . . . . . . . . . . . . 4, 19
[STOP . . . . . . . . . . . . . . . 32
^SUPERVISOR COMMANDS  . . . . . . . 11
.SKIP
^TIMINGS (COMPARISON) . . . . . . . 6
.SKIP
[YSTAR  . . . . . . . . . . . . . . 28, 29
.SKIP
^ZERO TO ^O SWITCH . . . . . . . . . 22
.SKIP
/^C OPTION  . . . . . . . . . . . . 14, 36
.SKIP
1311 SIMULATION  . . . . . . . . . 6, 12, 21, 25, 35, 46, 53, 54
1402 SIMULATION  . . . . . . . . . 4, 14, 16, 19, 35
1403 SIMULATION  . . . . . . . . . 5, 15, 22, 23, 24, 37
1407 SIMULATION  . . . . . . . . . 5, 6, 26, 37, 46
