.;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 NR STACKER IS DT2:TEST (D\\RIVE^^ 2) 1 STACKER IS 2 STACKER IS NP STACKER IS 4 STACKER IS 8 STACKER IS .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 .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 \\ .SKIP OR, IF YOU HAVE MADE THE APPROPRIATE CHANGES TO THE [CCL FILE, TYPE: .SKIP ^^S1401\\ .SKIP ^S1401 IDENTIFIES ITSELF AND ASKS FOR PRINTER AND READER ASSIGNMENTS. ^YOU MAY ENTER DATASET SPECIFICATIONS (SEE "^C" AND "^P" COMMANDS) OR RESPOND WITH [ 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 ^[ AND ^CONTROL/^U MAY BE USED TO DELETE CHARACTERS AND ENTIRE LINES, BUT SOMETIMES [ 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#--#\\" 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 NR STACKER IS DT0:SOURCE.AUT 1 STACKER IS NR 2 STACKER IS NR NP STACKER IS 4 STACKER IS DK1:TEST.OBJ 8 STACKER IS * .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 \\ .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 [ 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 ^^, , OR \\. (^NORMALLY USE [.) ^ONLY THE CHARACTERS IN APPENDIX ^D AND ^^, , , , AND \\ 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, [ 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 ([ 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 FORM LENGTH = 24 CHANNEL 3 AT LINE 20 CHANNEL .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 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 [ 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: