Time-sharing Operations
The timesharing system is a typical line oriented editor. A full description of this system can be found in
1038205_B5500_TS_TerminalUG_Jun69.pdf
. The simulator attached the DTC device to a given port and TSS/MCP
needs to be running to access timesharing. Telnet
into the machine at <host> <port> and you
will be presented with a login prompt after a couple of seconds:
Connected to the B5500 simulator DTC device, line 0
B5500 TIME SHARING - 01/00, STATION 02
ENTER USER CODE, PLEASE-B5500
AND YOUR PASSWORD
@@@@@@@
09/01/71 8:52 PM.
GOOD EVENING, USER NAME YOU HAVE STATION 02
You user code must be in the system along with a password. Enter these to get started. To log off use the
BYE
command.
There are some characters that can't be entered into the editor.
Card | ASCII | Algol | Basic |
---|---|---|---|
< | < | LSS | |LS |
> | > | GTR | |GT |
≤ | { | LEQ | |LE |
≥ | } | GEQ | |GE |
≠ | ! | NEQ | |NE |
← | ~ | := | := |
Commands either accept a file or a line
number. Line numbers are specified either individually or by a list
separated by commas or dashes to indicate ranges.
ALL
can be used in place of line
number to indicate the whole file, or
END
or
<line> TO END
to
indicate from line to end. Some common used commands
are as follow: Commands that specify a <file>, the file can
be omitted to indicate the current work file.
Command | Description |
CHANGE PASSWORD | Change your password |
CHANGE <file> TO <file> | Rename a file. |
CHANGE <file> TYPE <type> | Change type of file. |
COMPILE <file>, <compiler> | Compile file with Compiler. Both arguments can be omitted. |
COPY | See below for explanation of options. |
CREATE <file> <type> SIZE <n> | Create a new file of type <type> and <n> lines. |
DELETE <line> | Delete lines from a current file. |
EXECUTE <file> | Execute a file. |
FILES | Lists files for user. |
FIX | Line editing, see manual for details. |
LIST <file> <line> | Lists a file, over given range. |
LIST FILES | Lists files for user. |
LIST <line> | Lists current file lines. |
LOAD <file> | Load a file into edit buffer. |
REMOVE <file> | Removes a file. |
RENAME <file> | Renames the current file to <file> |
RESEQ <file> <start>+<inc> | Updates the line numbers of a file see the manual for more options. |
RUN <file> | Compiles and Runs a file. |
SAVE | Saves the current edit buffer. |
SEQ <start>+<inc> | Allows input starting at <start> incremented by <inc>. |
This is a sample session running an Algol job.
Connected to the B5500 simulator DTC device, line 0
B5500 TIME SHARING - 01/00, STATION 02
ENTER USER CODE, PLEASE-B5500
AND YOUR PASSWORD
@@@@@@@
09/01/71 8:52 PM.
GOOD EVENING, USER NAME YOU HAVE STATION 02
<First try at program>
CREATE SIEVE ALGOL
FILE:SIEVE - TYPE:ALGOL -- CREATED
SEQ 100100+100
100100BEGIN
100200INTEGER ARRAY CANDIDATE[0:1000];
100300INTEGER I,J,K;
100400FOR I:=0 STEP 1 UNTIL 1000 DO
100500BEGIN
100600 CANDIDATES[I]:=1;
100700END;
100800CANDIDATE[0]:=0;
100900CANDIDATE[1]:=0;
101000I:=0;
101100WHILE I < 1000 BEGIN
101200 WHILE I < 1000 AND CANDIDATE[I] = 0 DO I:=I+1;
101300 IF I<1000 THEN
101400 BEGIN
101500 J := 2;
101600 K := J*I;
101700 WHILE K < 1000 DO BEGIN
101800 J :=J + 1;
101900 K := J*I;
102000 END;
102100 I:=I+1;
102200 END;
102300END;
102400FOR I:=0 STEP 1 UNTIL 999 DO
102500BEGIN
102600IF CANDIDATE[I] ! 0 THEN
102700 BEGIN
102800 WRITE (I);
102900 END
103000END.
103100
#
COMPILE
WAIT.
COMPILING.
NEAR LINE 100600 ERROR NUMBER 100 -- CANDIDATES.
NEAR LINE 101100 ERROR NUMBER 132 -- BEGIN.
NEAR LINE 102800 ERROR NUMBER 439 -- I.
NEAR LINE 103000 ERROR NUMBER 120 -- END.
NEAR LINE 103000 ERROR NUMBER 143 -- END.
NEAR LINE 103000 ERROR NUMBER 145 -- END.
<Correct some errors to see if the program will work>
ERR COMPILE .0 SEC.
100600 CANDIDATES[I]:=1;
101100 WHILE I < 1000 DO BEGIN
101750 CANDIDATE[K] := 0;
100350 FILE OUT DC 19 (1,10);
100460 FORMAT F1 (I4)
10280 WRITE (DC, F1, I);
DELETE 10280
WAIT.1 RECORDS
DELETED.
END DELETE .0 SEC.
102800 WRITE(DC, F1, I);
COMPILE
COMPILING.
NEAR LINE 100460 ERROR NUMBER 146 -- FORMAT.
NEAR LINE 100500 ERROR NUMBER 000 -- B.
NEAR LINE 100800 ERROR NUMBER 143 -- CANDIDATE.
NEAR LINE 100800 ERROR NUMBER 144 -- 0.
NEAR LINE 102800 ERROR NUMBER 100 -- F1.
NEAR LINE 103000 ERROR NUMBER 120 -- END.
NEAR LINE 103000 ERROR NUMBER 143 -- END.
NEAR LINE 103000 ERROR NUMBER 145 “ END.
ERR COMPILE .0 SEC.
100360 FORMAT F1 (I4);
DELETE 100460
WAIT.
WAIT.COMPILE
1 RECORDS DELETED.
END DELETE .0 SEC.
COMPILING.
NEAR LINE 100600 ERROR NUMBER 100 -- CANDIDATES.
NEAR LINE 103000 ERROR NUMBER 120 -- END.
NEAR LINE 103000 ERROR NUMBER 143 -- END.
NEAR LINE 103000 ERROR NUMBER 145 -- END.
ERR COMPILE .0 SEC.
100600 CANDIDATE[I]:=1;
COMPILE
WAIT.
COMPILING.
NEAR LINE 103000 ERROR NUMBER 120 -- END.
NEAR LINE 103000 ERROR NUMBER 143 -- END.
NEAR LINE 103000 ERROR NUMBER 145 -- END.
ERR COMPILE .0 SEC.
<Got most of errors out, print whole program to figure out why end are in error>
LIST
FILE:SIEVE - TYPE:ALGOL --09/01/71
9:03 PM.
100100 BEGIN
100200 INTEGER ARRAY CANDIDATE[0:1000];
100300 INTEGER I,J,K;
100350 FILE OUT DC 19 (1,10);
100360 FORMAT F1 (I4);
100400 FOR I:=0 STEP 1 UNTIL 1000 DO
100500 BEGIN
100600 CANDIDATE[I]:=1;
100700 END;
100800 CANDIDATE[0]:=0;
100900 CANDIDATE[1]:=0;
101000 I:=0;
101100 WHILE I ? 1000 DO BEGIN
101200 WHILE I ? 1000 AND CANDIDATE[I] = 0 DO I:=I+1;
101300 IF I?1000 THEN
101400 BEGIN
101500 J := 2;
101600 K := J*I;
101700 WHILE K ? 1000 DO BEGIN
101750 CANDIDATE[K] := 0;
101800 J :=J + 1;
101900 K := J*I;
102000 END;
102100 I:=I+1;
102200 END;
102300 END;
102400 FOR I:=0 STEP 1 UNTIL 999 DO
102500 BEGIN
102600 IF CANDIDATE[I] ? 0 THEN
102700 BEGIN
102800 WRITE(DC, F1, I);
102900 END
103000 END.
END QUIKLST .0 SEC.
103000 END;
103100 END.
COMPILE
WAIT.
COMPILING.
END COMPILE .0 SEC.
SAVE
FILE:SIEVE - TYPE:ALGOL -- SAVED.
<Finally compiled without error, see it if works>
RUN
RUNNING
-INTGR OVRFLW, LINE NO 101700
ERR SIEVE .0 SEC.
<Nope, make some corrections>
101100 WHILE I LSS 1000 DO BEGIN
101200 WHILE I LSS 1000 AND CANDIDATE[I] = 0 DO I:=I+1;
101300 IF I LSS 1000 THEN
10170 WHILE K LSS 1000 DO BEGIN
DELETE 10170
WAIT.
WAIT.1 RECORDS
DELETED.
END DELETE .0 SEC.
101700 WHILE K LSS 1000 DO BEGIN
102600 IF CANDIDATE[I] NEQ 0 THEN
SAVE
WAIT-
FILE:SIEVE - TYPE:ALGOL -- SAVED.
COMPILE
COMPILING.
END COMPILE .0 SEC.
RUN
RUNNING
-INTGR OVRFLW, LINE NO 101700
ERR SIEVE .0 SEC.
<Nope, lets try a different algorithm>
100400 FOR I:=2 STEP 1 UNTIL 1000 DO
100500 CANDIDATE[I] := 1;
SAVE
WAIT-
FILE:SIEVE - TYPE:ALGOL -- SAVED.
RUN
COMPILING.
END COMPILE .0 SEC.
RUNNING
-INTGR OVRFLW, LINE NO 101700
ERR SIEVE .0
SEC.
DELETE 102100
WAIT.1 RECORDS
DELETED.
END DELETE .0
SEC.
COMPILE
COMPILING.
NEAR LINE 102300 ERROR NUMBER 143 -- END.
ERR COMPILE .0
SEC.
DELETE 101950
WAIT.1 RECORDS DELETED.
END DELETE .0
SEC.
DELETE 102000
WAIT.1 RECORDS DELETED.
END DELETE .0 SEC.
COMPILE
COMPILING.
END COMPILE .0 SEC.
RUN
RUNNING
3
....
997
998
999
END SIEVE .0 SEC.
<Getting better>
LIST
FILE:SIEVE - TYPE:ALGOL --09/01/71 9:35 PM.
100100 BEGIN
100200 INTEGER ARRAY CANDIDATE[0:1000];
100300 INTEGER I,J,K,M;
100350 FILE OUT DC 19 (1,10);
100360 FORMAT F1 (I4);
100370 FORMAT F2 (3I4);
100400 FOR I:=2 STEP 1 UNTIL 1000 DO
100500 CANDIDATE[I] := 1;
100800 CANDIDATE[0]:=0;
100900 CANDIDATE[1]:=0;
101000 FOR I:=1 STEP 1 UNTIL 1000 DO
101100 BEGIN
101200 IF CANDIDATE[I] NEQ 0 THEN
101250 I:=I+1;
101300 BEGIN
101400 J:=I; K:=J+J;
101500 IF K LSS 1000 THEN
101600 BEGIN
101700 FOR M:=K STEP J UNTIL 1000 DO
101750 CANDIDATE[K] := 0;
101800 CANDIDATE[I] := 0;
101900 END;
102200 END;
102300 END;
102400 FOR I:=0 STEP 1 UNTIL 999 DO
102500 BEGIN
102600 IF CANDIDATE[I] NEQ 0 THEN
102700 BEGIN
102800 WRITE(DC, F1, I);
102900 END
103000 END;
103100 END.
END QUIKLST .0 SEC.
DELETE 101750
WAIT.1 RECORDS DELETED.
END DELETE .0 SEC.
101800 CANDIDATE[M] := 0;
DELETE 101250
WAIT.1 RECORDS DELETED.
END DELETE .0 SEC.
DELETE 100370
WAIT.1 RECORDS DELETED.
END DELETE .0 SEC.
RUN
COMPILING.
END COMPILE .0
SEC.
RUNNING
2
3
5
7
....
977
983
991
997
END SIEVE .0 SEC.
<Now it is working!>
SAVE
FILE:SIEVE - TYPE:ALGOL -- SAVED.
LIST FILES
09/01/71 B5500 09:37 PM
NAME TYPE RECS SEGS CREATED ACCESSED W/R W/B S-F LOCKD BY
/APLIBE UNKNOWN 800 160 09/01/71 * 09/01/71 120 120 100
SIEVE ALGOL 30 10 09/01/71 * 09/01/71 10 300 7
SIEVE OBJ(A) 16 16 09/01/71 * 09/01/71 30 30 7
3 FILES 186 SEGMENTS 846 RECORDS
END LFILES .0 SEC.
LIST
FILE:SIEVE - TYPE:ALGOL --09/01/71 9:44 PM.
100100 BEGIN
100200 INTEGER ARRAY CANDIDATE[0:1000];
100300 INTEGER I,J,K,M;
100350 FILE OUT DC 19 (1,10);
100360 FORMAT F1 (I4);
100400 FOR I:=2 STEP 1 UNTIL 1000 DO
100500 CANDIDATE[I] := 1;
100800 CANDIDATE[0]:=0;
100900 CANDIDATE[1]:=0;
101000 FOR I:=1 STEP 1 UNTIL 1000 DO
101100 BEGIN
101200 IF CANDIDATE[I] NEQ 0 THEN
101300 BEGIN
101400 J:=I; K:=J+J;
101500 IF K LSS 1000 THEN
101600 BEGIN
101700 FOR M:=K STEP J UNTIL 1000 DO
101800 CANDIDATE[M] := 0;
101900 END;
102200 END;
102300 END;
102400 FOR I:=0 STEP 1 UNTIL 999 DO
102500 BEGIN
102600 IF CANDIDATE[I] NEQ 0 THEN
102700 BEGIN
102800 WRITE(DC, F1, I);
102900 END
103000 END;
103100 END.
END QUIKLST .0
SEC.