SUBROUTINE SETKEY INTEGER CHAR INTEGER CHMASK INTEGER CR, LF INTEGER CRLF INTEGER BLANK, PERIOD INTEGER BLANKS, DASHES, COLONS, SLASHS INTEGER ACH, BCH, CCH, DCH, ECH, FCH INTEGER GCH, HCH, ICH, JCH, KCH, LCH INTEGER MCH, NCH, OCH, PCH, QCH, RCH INTEGER SCH, TCH, UCH, VCH, WCH, XCH INTEGER YCH, ZCH INTEGER LBRACE, RBRACE INTEGER LBRACK, RBRACK INTEGER ICLP04 COMMON /CHARAC/ CHAR COMMON /CHARAC/ CHMASK COMMON /CHARAC/ CR, LF COMMON /CHARAC/ CRLF COMMON /CHARAC/ BLANK, PERIOD COMMON /CHARAC/ BLANKS, DASHES, COLONS, SLASHS COMMON /CHARAC/ ACH, BCH, CCH, DCH, ECH, FCH COMMON /CHARAC/ GCH, HCH, ICH, JCH, KCH, LCH COMMON /CHARAC/ MCH, NCH, OCH, PCH, QCH, RCH COMMON /CHARAC/ SCH, TCH, UCH, VCH, WCH, XCH COMMON /CHARAC/ YCH, ZCH COMMON /CHARAC/ LBRACE, RBRACE COMMON /CHARAC/ LBRACK, RBRACK COMMON /CHARAC/ ICLP04 LOGICAL MPFLAG LOGICAL OVMODE LOGICAL LBMODE LOGICAL LOADRB LOGICAL SFLAG INTEGER VERS INTEGER LOADAD INTEGER ZLOC, ZSTR, ZMAX, ZLIMIT INTEGER CLOC, CSTR, CMAX, CLIMIT INTEGER NLOC, NSTR, NMAX, NLIMIT INTEGER DLOC, DSTR, DMAX, DLIMIT INTEGER OLOC, OMAX, OSET INTEGER START INTEGER MODNLX INTEGER CKSUM INTEGER KEY INTEGER ICLP05 COMMON /LDATAX/ MPFLAG COMMON /LDATAX/ OVMODE COMMON /LDATAX/ LBMODE COMMON /LDATAX/ LOADRB COMMON /LDATAX/ SFLAG COMMON /LDATAX/ VERS COMMON /LDATAX/ LOADAD COMMON /LDATAX/ ZLOC, ZSTR, ZMAX, ZLIMIT COMMON /LDATAX/ CLOC, CSTR, CMAX, CLIMIT COMMON /LDATAX/ NLOC, NSTR, NMAX, NLIMIT COMMON /LDATAX/ DLOC, DSTR, DMAX, DLIMIT COMMON /LDATAX/ OLOC, OMAX, OSET COMMON /LDATAX/ START COMMON /LDATAX/ MODNLX COMMON /LDATAX/ CKSUM COMMON /LDATAX/ KEY COMMON /LDATAX/ ICLP05 INTEGER CMFILE (16) INTEGER RBFILE (16) INTEGER OBFILE (16) INTEGER MPFILE (16) INTEGER DBFILE (16) INTEGER TIFILE (3) INTEGER ICLP03 COMMON /FILES / CMFILE COMMON /FILES / RBFILE COMMON /FILES / OBFILE COMMON /FILES / MPFILE COMMON /FILES / DBFILE COMMON /FILES / TIFILE COMMON /FILES / ICLP03 INTEGER MEMORY (4096) INTEGER MEMX INTEGER MEMLOC INTEGER ROM (64) INTEGER ONEK, ENDK COMMON /MEMORY/ MEMORY COMMON /MEMORY/ MEMX COMMON /MEMORY/ MEMLOC COMMON /MEMORY/ ROM COMMON /MEMORY/ ONEK, ENDK INTEGER VALUE, VALUE2, I, GCHAR IF ((KEY.LT.1).OR.(KEY.GT.5)) RETURN VALUE = 0 VALUE2 = 0 DO 13090 I = 1,4 CHAR = GCHAR (RBFILE, I+5) CHAR = IAND (CHAR, CHMASK) IF ((CHAR.GE.ACH).AND.(CHAR.LE.FCH)) CHAR = CHAR - 7 VALUE = ISHFT (VALUE, 4) + (CHAR - 48) CHAR = GCHAR (RBFILE, I+10) CHAR = IAND (CHAR, CHMASK) IF ((CHAR.GE.ACH).AND.(CHAR.LE.FCH)) CHAR = CHAR - 7 VALUE2 = ISHFT (VALUE2, 4) + (CHAR-48) 13090 CONTINUE GOTO (100,200,300,400,500) KEY 100 NSTR = VALUE NLOC = VALUE CALL UPDATE (NLOC, 0, NMAX) GOTO 1000 200 DSTR = VALUE DLOC = VALUE CALL UPDATE (DLOC, 0, DMAX) GOTO 1000 300 ZSTR = VALUE ZLOC = VALUE CALL UPDATE (ZLOC, 0, ZMAX) GOTO 1000 400 CSTR = VALUE CLOC = VALUE CALL UPDATE (CLOC, 0, CMAX) GOTO 1000 500 ONEK = ISHFT (VALUE, -10) + 1 ENDK = ISHFT (VALUE2, -10) + 1 DO 13092 I = ONEK, ENDK ROM (I) = 1 13092 CONTINUE 1000 CONTINUE RETURN END