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.