Database section 3 - The TRAVEL table

C  SECTION 3: TRAVEL TABLE.  EACH LINE CONTAINS A LOCATION NUMBER (X), A SECOND
C	LOCATION NUMBER (Y), AND A LIST OF MOTION NUMBERS (SEE SECTION 4).
C	EACH MOTION REPRESENTS A VERB WHICH WILL GO TO Y IF CURRENTLY AT X.
C	Y, IN TURN, IS INTERPRETED AS FOLLOWS.  LET M=Y/1000, N=Y MOD 1000.
C		IF N<=300	IT IS THE LOCATION TO GO TO.
C		IF 300500	MESSAGE N-500 FROM SECTION 6 IS PRINTED,
C					AND HE STAYS WHEREVER HE IS.
C	MEANWHILE, M SPECIFIES THE CONDITIONS ON THE MOTION.
C		IF M=0		IT'S UNCONDITIONAL.
C		IF 0
So the "second location number", aka "Y" is M * 1000 + N and M is less than
or equal to ...
Now TRAVEL is computed by:
C  THE STUFF FOR SECTION 3 IS ENCODED HERE.  EACH "FROM-LOCATION" GETS A
C  CONTIGUOUS SECTION OF THE "TRAVEL" ARRAY.  EACH ENTRY IN TRAVEL IS
C  NEWLOC*1000 + KEYWORD (FROM SECTION 4, MOTION VERBS), AND IS NEGATED IF
C  THIS IS THE LAST ENTRY FOR THIS LOCATION.  KEY(N) IS THE INDEX IN TRAVEL
C  OF THE FIRST OPTION AT LOCATION N.

1030	READ(1,1031)LOC,NEWLOC,TK
1031	FORMAT(99G)
	IF(LOC.EQ.0)GOTO 1030
C  ABOVE KLUGE IS TO AVOID AFOREMENTIONED F40 BUG
	IF(LOC.EQ.-1)GOTO 1002
	IF(KEY(LOC).NE.0)GOTO 1033
	KEY(LOC)=TRVS
	GOTO 1035
1033	TRAVEL(TRVS-1)=-TRAVEL(TRVS-1)
1035	DO 1037 L=1,20
	IF(TK(L).EQ.0)GOTO 1039
	TRAVEL(TRVS)=NEWLOC*1000+TK(L)
NEWLOC * 1000 will overflow on the 1900. The solution is to replace that code by:
C  THE STUFF FOR SECTION 3 IS ENCODED HERE.  EACH "FROM-LOCATION" GETS A
C  CONTIGUOUS SECTION OF THE "TRAVEL" ARRAY.  EACH ENTRY IN TRAVEL IS
C  NEWLOC*1000 + KEYWORD (FROM SECTION 4, MOTION VERBS), AND IS NEGATED IF
C  THIS IS THE LAST ENTRY FOR THIS LOCATION.  KEY(N) IS THE INDEX IN TRAVEL
C  OF THE FIRST OPTION AT LOCATION N.

C ICL1900 - WE CAN'T STUFF NEWLOC*1000+KEYWORD IN TRAVEL, IT'S TOO BIG.
C (WOULD WORK ON 32BIT, BUT WE HAVE ONLY 24BIT).  STUFF NEWLOC IN TRAVEL
C AND KEYWORD IN TRAVL2.

1030    READ(1,1031)LOC,NEWLOC,TK
1031    FORMAT(99I0)
        IF(LOC.EQ.-1)GOTO 1002
        IF(KEY(LOC).NE.0)GOTO 1033
        KEY(LOC)=TRVS
        GOTO 1035
1033    TRAVEL(TRVS-1)=-TRAVEL(TRVS-1)
1035    DO 1037 L=1,20
        IF(TK(L).EQ.0)GOTO 1039
        TRAVEL(TRVS)=NEWLOC
        TRAVL2(TRVS)=TK(L)

All questions to john@AtlanTech.com