Google
 

Trailing-Edge - PDP-10 Archives - decuslib10-04 - 43,50331/dfcode.lst
There are no other files named dfcode.lst in the archive.
DFCODE - FILE CODING AND DECODING PROGRAM FOR DECTAPE FILE SECURITY.	MACRO %50(242) 11:01 12-JUN-74 PAGE 1
DFCODE	MAC	 3-JUN-74		FROHREICH	R. J.			03-JUN-74

     1						TITLE	DFCODE - FILE CODING AND DECODING PROGRAM FOR DECTAPE FILE SECURITY.
     2						SUBTTL	FROHREICH	R. J.			03-JUN-74
     3
     4	000137					LOC	<JOBVER== 137>
     5	000137	5 001 01 000003 		BYTE	(3) 5 (9) 1 (6) 1 (18) 3	; V 1A(3)-5
     6
     7	000124					LOC	<JOBREN== 124>
     8	000124	000000	400001'			REST					; REENTRY POINT.
     9
    10	000000'					RELOC	0
    11
    12					IFNDEF	PURE, <PURE== 1>			; ASSUME REENTRANT IF
    13											; PURE IS UNDEFIND.
    14	400000'					IFN	PURE, <TWOSEG>
    15
    16
    17					IFNDEF	KWORD, <KWORD== 0>			; DEFAULT KEY WORD IS
    18											; THE FIRST WORD OF BLOCK
    19						IFN	KWORD, <KWORD== 1>		; IF NOT = 0, MAKE IT 1.
    20
    21
    22					;	ACCUMULATOR ASSIGNMENTS.
    23
    24			000000			A=		0
    25			000001			P=		1
    26			000002			CT=		2
    27			000003			DEV=		3
    28			000005			NAME=		5
    29			000006			EXT=		6
    30			000007			IND=		7
    31			000010			IND1=		10
    32			000011			IND2=		11
    33			000012			IND3=		12
    34			000013			KEY=		13
    35			000016			STATUS=		16
    36			000017			PD=		17
    37
    38
    39					;	I-O CHANNEL ASSIGNMENTS.
    40
    41			000000			INCH==		0
    42
    43			000001			OUTCH==		1
    44
    45
    46					;	SINCE THE TAPE LOOKUP BLOCK (TLOOK) AND THE TAPE ENTER BLOCK
    47					; (TENTR) ARE THE SAME, THEY WILL FREQUENTLY BE USED INTERCHANGEABLY.
    48					;  THE SAME IS TRUE FOR THE DISK LOOKUP AND ENTER BLOCKS (DLOOK AND DENTR)
    49
    50					;	ALTHOUGH THE MAIN DEVICE MAY BE ANY DEVICE ON WHICH THE UNCODED
    51					; VERSION OF THE FILE RESIDES OR IS TO RESIDE, IT WILL BE REFERRED TO
    52					; FROM NOW ON AS "DISK".  THE STORAGE DECTAPE WILL BE REFERRED TO AS "TAPE".

DFCODE - FILE CODING AND DECODING PROGRAM FOR DECTAPE FILE SECURITY.	MACRO %50(242) 11:01 12-JUN-74 PAGE 2
DFCODE	MAC	 3-JUN-74		FROHREICH	R. J.			03-JUN-74

    53
    54	400000'				IFN	PURE, <RELOC	400000>
    55
    56
    57					ST:	OUTSTR	[ASCIZ*DFCODE V 1A(3)-5
    58	400000'	051 03 0 00 400735'	*]					; TYPE VERSION #
    59
    60	400001'	047 00 0 00 000000 	REST:	RESET				; REENTER ADDRESS
    61	400002'	200 00 0 00 400741'		MOVE	A, [XWD DATA, TINM]
    62	400003'	251 00 0 00 000017'		BLT	A, DECO			; INITIALIZE PART OF LOW SEGMENT.
    63
    64
    65	400004'	200 17 0 00 400742'		MOVE	PD, [IOWD 12, STACK]	; SET UP PUSH DOWN POINTER
    66	400005'	051 03 0 00 400743'	CD:	OUTSTR	[ASCIZ*CODE OR DECODE? (C OR D) : *]
    67	400006'	051 04 0 00 000000 		INCHWL	A			; GET A CHARACTER
    68	400007'	302 00 0 00 000104 		CAIE	A, "D"			; IS IT A D ?
    69	400010'	254 00 0 00 400013'		JRST	.+3			; NO - SEE IF C
    70	400011'	476 00 0 00 000017'		SETOM	DECO			; YES - SET TO DECODE.
    71	400012'	254 00 0 00 400017'		JRST	ASKDTA			; ASK FOR DRIVE
    72	400013'	306 00 0 00 000103 		CAIN	A, "C"			; IS IT A C ?
    73	400014'	254 00 0 00 400017'		JRST	ASKDTA			; YES - ASK FOR DRIVE.
    74	400015'	260 17 0 00 400506'		PUSHJ	PD, TTEAT		; NO - EAT UP REST OF LINE
    75	400016'	254 00 0 00 400005'		JRST	CD			; ASK AGAIN.
    76	400017'	260 17 0 00 400506'	ASKDTA:	PUSHJ	PD, TTEAT		; EAT UP REST OF LINE
    77	400020'	400 03 0 00 000000 		SETZ	DEV,			; INITIALIZE DEVICE NAME
    78	400021'	051 03 0 00 400751'		OUTSTR	[ASCIZ*NAME OF STORAGE DECTAPE DRIVE : *]
    79	400022'	211 02 0 00 000006 		MOVNI	CT, 6			; INITIALIZE COUNTER
    80	400023'	200 01 0 00 400760'		MOVE	P, [POINT 6, DEV]	; INITIALIZE POINTER
    81	400024'	051 04 0 00 000000 	GETDEV:	INCHWL	A			; GET A CHARACTER
    82	400025'	306 00 0 00 000072 		CAIN	A, ":"			; IS IT A : ?
    83	400026'	254 00 0 00 400024'		JRST	GETDEV			; YES - WE HAVE DEVICE.
    84	400027'	306 00 0 00 000012 		CAIN	A, 12			; IS IT A LINEFEED?
    85	400030'	254 00 0 00 400037'		JRST	GOTDEV			; YES - WE HAVE DEVICE
    86	400031'	307 00 0 00 000040 		CAIG	A, 40			; IS IT A CONTROL CHARACTER?
    87	400032'	254 00 0 00 400024'		JRST	GETDEV			; YES - DISCARD IT.
    88	400033'	347 02 0 00 400024'		AOJG	CT, GETDEV		; STEP UP COUNT AND SEE IF END.
    89	400034'	275 00 0 00 000040 		SUBI	A, 40			; MAKE CHARACTER SIXBIT
    90	400035'	136 00 0 00 000001 		IDPB	A, P			; PUT IT IN DEV
    91	400036'	254 00 0 00 400024'		JRST	GETDEV			; GO GET ANOTHER CHARACTER
    92	400037'	200 16 0 00 000003 	GOTDEV:	MOVE	STATUS, DEV		; PUT DEVICE NAME IN STATUS.
    93	400040'	047 16 0 00 000004 		DEVCHR	STATUS,			; GET DEVICE CHARACTERISTICS
    94	400041'	607 16 0 00 000100 		TLNN	STATUS, 100		; IS IT A DECTAPE?
    95	400042'	254 00 0 00 400543'		JRST	NODT			; NO, ERROR, ASK AGAIN.
    96	400043'	202 03 0 00 000001'		MOVEM	DEV, TINM+1		; YES - PUT IT IN OPEN BLOCK.
    97	400044'	202 03 0 00 000004'		MOVEM	DEV, TOUTM+1		;        "      "       "

DFCODE - FILE CODING AND DECODING PROGRAM FOR DECTAPE FILE SECURITY.	MACRO %50(242) 11:01 12-JUN-74 PAGE 3
DFCODE	MAC	 3-JUN-74		FROHREICH	R. J.			03-JUN-74

    98	400045'	051 03 0 00 400761'	STACOD:	OUTSTR	[ASCIZ*STANDARD CODE WITHOUT A PASSWORD? (Y OR CR) : *]
    99	400046'	051 04 0 00 000000 		INCHWL	A			; GET A CHARACTER
   100	400047'	306 00 0 00 000131 		CAIN	A, "Y"			; IS IT A Y?
   101	400050'	254 00 0 00 400067'		JRST	GOTCOD			; YES - USE THE DEFAULT PASSWORD
   102	400051'	260 17 0 00 400506'		PUSHJ	PD, TTEAT		; EAT UP CHARACTERS UP TO LINEFEED
   103	400052'	474 16 0 00 000000 		SETO	STATUS,			; SET STATUS TO -1 FOR THIS TTY
   104	400053'	051 06 0 00 000016 		GETLCH	STATUS			; GET TTY CHARACTERISTICS
   105	400054'	661 16 0 00 000004 		TLO	STATUS, 4		; SET TTY NO ECHO NEXT.
   106	400055'	051 07 0 00 000016 		SETLCH	STATUS			; SET TTY NO ECHO.
   107	400056'	211 02 0 00 000006 		MOVNI	CT, 6			; INITIALIZE COUNTER
   108	400057'	200 01 0 00 400773'		MOVE	P, [POINT 6, CODE]	; SET UP POINTER
   109	400060'	051 03 0 00 400774'		OUTSTR	[ASCIZ*PASSWORD: *]	; ASK FOR PASSWORD
   110	400061'	051 04 0 00 000000 	GETCOD:	INCHWL	A			; GET A CHARACTER
   111	400062'	306 00 0 00 000015 		CAIN	A, 15			; IS IT A CARRIAGE RETURN?
   112	400063'	254 00 0 00 400067'		JRST	GOTCOD			; YES - WE HAVE THE PASSWORD
   113	400064'	275 00 0 00 000040 		SUBI	A, 40			; MAKE CHARACTER SIXBIT
   114	400065'	136 00 0 00 000001 		IDPB	A, P			; USE IT AS PART OF CODE
   115	400066'	341 02 0 00 400061'		AOJL	CT, GETCOD		; STEP UP COUNT, DON'T USE AFTER 6
   116	400067'	260 17 0 00 400506'	GOTCOD:	PUSHJ	PD, TTEAT		; DISCARD REST OF LINE.
   117	400070'	474 16 0 00 000000 		SETO	STATUS,			; SET STATUS TO -1 FOR THIS TTY
   118	400071'	051 06 0 00 000016 		GETLCH	STATUS			; GET TTY CHARACTERISTICS
   119	400072'	621 16 0 00 000004 		TLZ	STATUS, 4		; SET TTY ECHO NEXT
   120	400073'	051 07 0 00 000016 		SETLCH	STATUS			; SET TTY  ECHO

DFCODE - FILE CODING AND DECODING PROGRAM FOR DECTAPE FILE SECURITY.	MACRO %50(242) 11:01 12-JUN-74 PAGE 4
DFCODE	MAC	 3-JUN-74		FROHREICH	R. J.			03-JUN-74

   121	400074'	051 03 0 00 400777'	ASKFIL:	OUTSTR	[ASCIZ*FILE NAMES : *]
   122	400075'	403 05 0 00 000006 		SETZB	NAME, EXT		; INITIALIZE NAME AND EXT.
   123	400076'	200 01 0 00 401002'		MOVE	P, [POINT 6, NAME]	; SET UP POINTER
   124	400077'	200 00 0 00 401003'		MOVE	A, [XWD DATA1, TLOOK]	; SET TO INIT REST OF LOW SEG.
   125	400100'	251 00 0 00 000030'		BLT	A, FILL			; INITIALIZE REST OF LOW SEGMENT.
   126	400101'	211 02 0 00 000006 		MOVNI	CT, 6			; INITIALIZE COUNTER
   127	400102'	051 04 0 00 000000 	GETN:	INCHWL	A			; GET A CHARACTER
   128	400103'	306 00 0 00 000012 		CAIN	A, 12			; IS IT A LINEFEED?
   129	400104'	254 00 0 00 400227'		JRST	GOTALL			; YES - END OF COMMAND STRING.
   130	400105'	306 00 0 00 000072 		CAIN	A, ":"			; IS IT A :?
   131	400106'	254 00 0 00 400154'		JRST	COL			; YES - GO DO DEVICE FIRST.
   132	400107'	306 00 0 00 000054 		CAIN	A, ","			; IS IT A , ?
   133	400110'	254 00 0 00 400230'		JRST	GOTALL+1		; YES - END OF FILE SPEC BUT NOT COMMAND
   134	400111'	306 00 0 00 000056 		CAIN	A, "."			; IS IT A . ?
   135	400112'	254 00 0 00 400125'		JRST	GETEXT			; YES - GO SET UP TO GET EXT.
   136	400113'	306 00 0 00 000074 		CAIN	A, "<"			; IS IT A < ?
   137	400114'	254 00 0 00 400130'		JRST	LANG			; YES - GO GET PROTECTION.
   138	400115'	306 00 0 00 000133 		CAIN	A, "["			; IS IT A [ ?
   139	400116'	254 00 0 00 400163'		JRST	LSQB			; YES - GO GET PPN.
   140	400117'	307 00 0 00 000040 		CAIG	A, 40			; IS IT A CONTROL CHARACTER?
   141	400120'	254 00 0 00 400102'		JRST	GETN			; YES - DISCARD IT.
   142	400121'	347 02 0 00 400102'		AOJG	CT, GETN		; STEP UP COUNT AND TEST.
   143	400122'	275 00 0 00 000040 		SUBI	A, 40			; MAKE CHARACTER SIXBIT
   144	400123'	136 00 0 00 000001 		IDPB	A, P			; USE THE CHARACTER
   145	400124'	254 00 0 00 400102'		JRST	GETN			; GO GET ANOTHER CHARACTER.
   146	400125'	211 02 0 00 000003 	GETEXT:	MOVNI	CT, 3			; SET COUNTER FOR 3 CHAR EXT
   147	400126'	200 01 0 00 401004'		MOVE	P, [POINT 6, EXT]	; INIT POINTER FOR EXT
   148	400127'	254 00 0 00 400102'		JRST	GETN			; GO GET A CHARACTER

DFCODE - FILE CODING AND DECODING PROGRAM FOR DECTAPE FILE SECURITY.	MACRO %50(242) 11:01 12-JUN-74 PAGE 5
DFCODE	MAC	 3-JUN-74		FROHREICH	R. J.			03-JUN-74

   149	400130'	261 17 0 00 000001 	LANG:	PUSH	PD, P			; SAVE POINTER
   150	400131'	261 17 0 00 000002 		PUSH	PD, CT			; SAVE COUNTER
   151	400132'	200 01 0 00 401005'		MOVE	P, [POINT 3, DENTR+2]	; SET UP POINTER FOR PROTECTION
   152	400133'	211 02 0 00 000003 		MOVNI	CT, 3			; INIT COUNTER.
   153	400134'	051 04 0 00 000000 	GETPRO:	INCHWL	A			; GET A CHARACTER
   154	400135'	306 00 0 00 000015 		CAIN	A, 15			; IS IT A CARRIAGE RETURN?
   155	400136'	254 00 0 00 400151'		JRST	RANG			; YES - WE HAVE THE PROTECTION
   156	400137'	306 00 0 00 000076 		CAIN	A, ">"			; IS IT A > ?
   157	400140'	254 00 0 00 400151'		JRST	RANG			; YES - WE HAVE THE PROTECTION.
   158	400141'	347 02 0 00 400134'		AOJG	CT, GETPRO		; STEP UP COUNT AND TEST
   159	400142'	305 00 0 00 000060 		CAIGE	A, 60			; IS IT  > OR = ASCII 0 ?
   160	400143'	254 00 0 00 400647'		JRST	PROERR			; NO - ERROR, RESTART AT ASKFIL
   161	400144'	303 00 0 00 000067 		CAILE	A, 67			; IS IT < OR = ASCII 7 ?
   162	400145'	254 00 0 00 400647'		JRST	PROERR			; NO - ERROR, RESTART AT ASKFIL
   163	400146'	275 00 0 00 000060 		SUBI	A, 60			; MAKE IT AN OCTAL NUMBER.
   164	400147'	136 00 0 00 000001 		IDPB	A, P			; USE IT FOR PROTECTION.
   165	400150'	254 00 0 00 400134'		JRST	GETPRO			; GET ANOTHER CHARACTER.
   166	400151'	262 17 0 00 000002 	RANG:	POP	PD, CT			; RESTORE COUNTER
   167	400152'	262 17 0 00 000001 		POP	PD, P			; RESTORE POINTER
   168	400153'	254 00 0 00 400102'		JRST	GETN			; BACK TO MAIN SEQ.

DFCODE - FILE CODING AND DECODING PROGRAM FOR DECTAPE FILE SECURITY.	MACRO %50(242) 11:01 12-JUN-74 PAGE 6
DFCODE	MAC	 3-JUN-74		FROHREICH	R. J.			03-JUN-74

   169	400154'	200 03 0 00 000005 	COL:	MOVE	DEV, NAME		; MOVE NAME TO NAME OF DEVICE.
   170	400155'	202 03 0 00 000007'		MOVEM	DEV, DINM+1		; USE IT FOR DISK OPEN BLOCK.
   171	400156'	202 03 0 00 000012'		MOVEM	DEV, DOUTM+1		;  "      "      "      "
   172	400157'	400 05 0 00 000000 		SETZ	NAME,			; REINITIALIZE NAME.
   173	400160'	200 01 0 00 401002'		MOVE	P, [POINT 6, NAME]	; RESTORE POINTER
   174	400161'	211 02 0 00 000006 		MOVNI	CT, 6			; RESTORE COUNTER
   175	400162'	254 00 0 00 400102'		JRST	GETN			; BACK TO MAIN SEQ.

DFCODE - FILE CODING AND DECODING PROGRAM FOR DECTAPE FILE SECURITY.	MACRO %50(242) 11:01 12-JUN-74 PAGE 7
DFCODE	MAC	 3-JUN-74		FROHREICH	R. J.			03-JUN-74

   176	400163'	261 17 0 00 000001 	LSQB:	PUSH	PD, P			; SAVE POINTER
   177	400164'	261 17 0 00 000002 		PUSH	PD, CT			; SAVE COUNTER
   178	400165'	403 10 0 00 000011 		SETZB	IND1, IND2		; INIT 2 ACS
   179	400166'	200 01 0 00 401006'		MOVE	P, [POINT 3, (IND)]	; INIT POINTER
   180	400167'	201 07 0 00 000010 		MOVEI	IND, IND1		; SET UP INDEX REGISTER
   181	400170'	400 02 0 00 000000 	GETPPN:	SETZ	CT,			; INITIALIZE COUNT.
   182	400171'	051 04 0 00 000000 		INCHWL	A			; GET A CHARACTER
   183	400172'	306 00 0 00 000015 		CAIN	A, 15			; IS IT A CARRIAGE RETURN?
   184	400173'	254 00 0 00 400220'		JRST	RSQB			; YES - WE HAVE BOTH HALVES.
   185	400174'	306 00 0 00 000135 		CAIN	A, "]"			; IS IT A ] ?
   186	400175'	254 00 0 00 400220'		JRST	RSQB			; YES - WE HAVE BOTH HALVES.
   187	400176'	306 00 0 00 000054 		CAIN	A, ","			; IS IT A , ?
   188	400177'	254 00 0 00 400214'		JRST	COMA			; SET TO GET NEXT HALF
   189	400200'	271 02 0 00 000003 		ADDI	CT, 3			; ADD 3 BITS TO THE COUNT
   190	400201'	307 02 0 00 000022 		CAIG	CT, ^D18		; IS CT GREATER THAN A HALF WORD?
   191	400202'	254 00 0 00 400205'		JRST	.+3			; NO - SKIP NEXT 2 STEPS.
   192	400203'	201 02 0 00 000022 		MOVEI	CT, ^D18		; YES - MAKE CT = 18
   193	400204'	254 00 0 00 400171'		JRST	GETPPN+1		; GO GET NEXT CHARACTER
   194	400205'	305 00 0 00 000060 		CAIGE	A, 60			; IS IT > OR = ASCII 0 ?
   195	400206'	254 00 0 00 400660'		JRST	PPNERR			; NO - ERROR, RESTART AT ASKFIL
   196	400207'	303 00 0 00 000067 		CAILE	A, 67			; IS IT < OR = ASCII 7 ?
   197	400210'	254 00 0 00 400660'		JRST	PPNERR			; NO - ERROR, RESTART AT ASKFIL
   198	400211'	275 00 0 00 000060 		SUBI	A, 60			; MAKE IT OCTAL.
   199	400212'	136 00 0 00 000001 		IDPB	A, P			; USE IT FOR PROTECTION
   200	400213'	254 00 0 00 400171'		JRST	GETPPN+1		; GO GET ANOTHER BYTE.
   201	400214'	241 10 0 02 000000 	COMA:	ROT	IND1, (CT)		; RIGHT JUSTIFY LEFT HALF
   202	400215'	201 07 0 00 000011 		MOVEI	IND, IND2		; SET TO DO RIGHT HALF
   203	400216'	200 01 0 00 401006'		MOVE	P, [POINT 3, (IND)]	; REINIT POINTER
   204	400217'	254 00 0 00 400170'		JRST	GETPPN			; GO DO IT ALL AGAIN.
   205	400220'	241 11 0 02 000000 	RSQB:	ROT	IND2, (CT)		; RIGHT JUSTIFY RIGHT HALF
   206	400221'	207 00 0 00 000011 		MOVSS	IND2			; PUT RIGHT HALF IN LEFT HALF WORD
   207	400222'	246 10 0 00 000022 		LSHC	IND1, ^D18		; GET ALL OF PPN IN IND1.
   208	400223'	202 10 0 00 000027'		MOVEM	IND1, DLOOK+3		; USE IT IN LOOKUP BLOCK.
   209	400224'	262 17 0 00 000002 		POP	PD, CT			; RESTORE COUNTER
   210	400225'	262 17 0 00 000001 		POP	PD, P			; RESTORE POINTER
   211	400226'	254 00 0 00 400102'		JRST	GETN			; BACK TO MAIN SEQ.

DFCODE - FILE CODING AND DECODING PROGRAM FOR DECTAPE FILE SECURITY.	MACRO %50(242) 11:01 12-JUN-74 PAGE 8
DFCODE	MAC	 3-JUN-74		FROHREICH	R. J.			03-JUN-74

   212	400227'	476 00 0 00 000015'	GOTALL:	SETOM	DONE			; SIGNAL END OF COMMAND STRING
   213	400230'	202 05 0 00 000020'		MOVEM	NAME, TLOOK		; GIVE NAME TO LOOKUP & ENTER BLOCK
   214	400231'	202 06 0 00 000021'		MOVEM	EXT, TLOOK+1		;   "  EXT     "      "     "
   215	400232'	202 05 0 00 000024'		MOVEM	NAME, DLOOK		;   "  NAME    "      "     "
   216	400233'	202 06 0 00 000025'		MOVEM	EXT, DLOOK+1		;   "  EXT     "      "     "
   217	400234'	332 00 0 00 000017'		SKIPE	DECO			; IS DECODING TO BE DONE?
   218	400235'	254 00 0 00 400260'		JRST	OPEND			; YES - GO OPEN FOR DECODING.
   219	400236'	050 00 0 00 000006'	OPENC:	OPEN	INCH, DINM		; NO - OPEN DISK ON INCH
   220	400237'	254 00 0 00 400545'		JRST	DOPE			; IF ERROR, REPORT & STOP
   221	400240'	050 01 0 00 000003'		OPEN	OUTCH, TOUTM		; OPEN TAPE ON OUTCH
   222	400241'	254 00 0 00 400552'		JRST	TOPE			; IF ERROR, REPORT & STOP
   223	400242'	201 00 0 00 000037'		MOVEI	A, TBUFF		; SET TO SET POSITION OF TAPE BUFFER
   224	400243'	250 00 0 00 000000*		EXCH	A, .JBFF##		; TELL MONITOR TO PUT BUFFER AT TBUFF
   225	400244'	065 01 0 00 000001 		OUTBUF	OUTCH, 1		; PUT 1 BUFFER AT TBUFF.
   226	400245'	202 00 0 00 000452'		MOVEM	A, SVJBFF		; SAVE REAL JOBFF FOR LATER.
   227	400246'	202 00 0 00 400243*		MOVEM	A, .JBFF##		; RESTORE JOBFF.
   228	400247'	076 00 0 00 000024'		LOOKUP	INCH, DLOOK		; LOOKUP THE FILE ON DISK
   229	400250'	254 00 0 00 400557'		JRST	DLOOKE			; IF ERROR, REPORT & RESTART AT ASKFIL
   230	400251'	135 00 0 00 401007'		LDB	A, [POINT 12, DLOOK+2, 35] ; GET LOW CREATION DATE
   231	400252'	137 00 0 00 401010'		DPB	A, [POINT 12, TENTR+2, 35] ; PUT    "     "      "
   232	400253'	135 00 0 00 401011'		LDB	A, [POINT 3, DLOOK+1, 20] ; GET HIGH CREATION DATE
   233	400254'	137 00 0 00 401012'		DPB	A, [POINT 3, TENTR+1, 20] ; PUT    "      "      "
   234	400255'	077 01 0 00 000020'		ENTER	OUTCH, TENTR		; ENTER FILE ON TAPE
   235	400256'	254 00 0 00 400571'		JRST	TENTRE			; IF ERROR, REPORT & RESTART AT ASKFIL
   236	400257'	254 00 0 00 400301'		JRST	START			; GO START CODING.
   237	400260'	050 00 0 00 000000'	OPEND:	OPEN	INCH, TINM		; OPEN TAPE ON INCH
   238	400261'	254 00 0 00 400552'		JRST	TOPE			; IF ERROR, REPORT & STOP
   239	400262'	050 01 0 00 000011'		OPEN	OUTCH, DOUTM		; OPEN DISK ON OUTCH
   240	400263'	254 00 0 00 400545'		JRST	DOPE			; IF ERROR, REPORT & STOP
   241	400264'	201 00 0 00 000037'		MOVEI	A, TBUFF		; SET TO SET POSITION OF TAPE BUFFER
   242	400265'	250 00 0 00 400246*		EXCH	A, .JBFF##		; TELL MONITOR TO PUT BUFFER AT TBUFF
   243	400266'	064 00 0 00 000001 		INBUF	INCH, 1			; PUT 1 BUFFER AT TBUFF.
   244	400267'	202 00 0 00 000452'		MOVEM	A, SVJBFF		; SAVE REAL JOBFF FOR LATER.
   245	400270'	202 00 0 00 400265*		MOVEM	A, .JBFF##		; RESTORE JOBFF
   246	400271'	076 00 0 00 000020'		LOOKUP	INCH, TLOOK		; LOOKUP FILE ON TAPE
   247	400272'	254 00 0 00 400603'		JRST	TLOOKE			; IF ERROR, REPORT & RESTART AT ASKFIL
   248	400273'	135 00 0 00 401010'		LDB	A, [POINT 12, TLOOK+2, 35] ; GET LOW DATE
   249	400274'	137 00 0 00 401007'		DPB	A, [POINT 12, DENTR+2, 35] ; PUT LOW DATE
   250	400275'	135 00 0 00 401012'		LDB	A, [POINT 3, TLOOK+1, 20] ; GET HIGH DATE
   251	400276'	137 00 0 00 401011'		DPB	A, [POINT 3, DENTR+1, 20] ; PUT HIGH DATE
   252	400277'	077 01 0 00 000024'		ENTER	OUTCH, DENTR		; ENTER FILE ON DISK
   253	400300'	254 00 0 00 400615'		JRST	DENTRE			; IF ERROR, REPORT & RESTART AT ASKFIL

DFCODE - FILE CODING AND DECODING PROGRAM FOR DECTAPE FILE SECURITY.	MACRO %50(242) 11:01 12-JUN-74 PAGE 9
DFCODE	MAC	 3-JUN-74		FROHREICH	R. J.			03-JUN-74

   254	400301'	332 00 0 00 000017'	START:	SKIPE	DECO			; IS DECODING TO BE DONE?
   255	400302'	254 00 0 00 400353'		JRST	DECODE			; YES - GO DECODE.
   256	400303'	400 02 0 00 000000 	DOCODE:	SETZ	CT,			; INITIALIZE WORD COUNT
   257	400304'	260 17 0 00 400417'		PUSHJ	PD, GET			; GET A WORD
   258	400305'	304 00 0 00 000000 		CAIA				; NORMAL RETURN
   259	400306'	254 00 0 00 400453'		JRST	CLOSE			; CLOSE IF EOF & START OF TEMP BLOCK
   260	400307'	202 00 0 02 000253'		MOVEM	A, TEMP(CT)		; PUT WORD IN TEMP BLOCK
   261	400310'	340 02 0 00 000000 		AOJ	CT,			; STEP UP COUNT
   262	400311'	305 02 0 00 000177 		CAIGE	CT, 177			; GREATER THAN OR = TAPE BLOCK SIZE?
   263	400312'	254 00 0 00 400304'		JRST	DOCODE+1		; NO - GET NEXT WORD
   264	400313'	057 01 0 00 000000 		OUT	OUTCH,			; DUMMY OUT, THEN OUTPUT BLOCK
   265	400314'	304 00 0 00 000000 		CAIA				; NORMAL RETURN
   266	400315'	260 17 0 00 400627'		PUSHJ	PD, WERR		; IF ERROR, TELL USER & CONTINUE
   267	400316'	400 07 0 00 000000 		SETZ	IND,			; INITIALIZE WORD POSITION POINTER
   268	400317'	514 13 0 00 000253'		HRLZ	KEY, TEMP+KWORD*176	; GET THE KEY BITS IN LEFT HALF
   269	400320'	274 13 0 00 000014'		SUB	KEY, CODE		; MAKE THEM DEPEND ON PASSWORD
   270	400321'	241 13 0 00 000006 		ROT	KEY, 6			; RIGHT JUSTIFY 1ST CHARACTER
   271	400322'	630 13 0 00 401013'		TDZ	KEY, [-1,,777760]	; SAVE ONLY THE LAST 4 BITS
   272	400323'	200 10 0 00 000013 		MOVE	IND1, KEY		; MAKE A COPY OF KEY
   273	400324'	242 10 0 00 000003 		LSH	IND1, 3			; IMUL BY 8 FOR WORD POSITION
   274	400325'	200 00 0 07 000254'	STCODE:	MOVE	A, TEMP+1-KWORD(IND)	; GET A WORD
   275	400326'	430 00 0 00 000014'		XOR	A, CODE			; CODE IT WITH PASSWORD
   276	400327'	241 00 0 13 000000 		ROT	A, (KEY)		; ROTATE IT
   277	400330'	612 00 0 00 401014'		TDNE	A, [1,,1]		; IS IT TO BE SWAPED?
   278	400331'	207 00 0 00 000000 		MOVSS	A			; YES - SWAP IT.
   279	400332'	202 10 0 00 000011 		MOVEM	IND1, IND2		; MAKE A COPY OF BLOCK ROTATION
   280	400333'	231 11 0 00 000176 		IDIVI	IND2, 176		; GET IND2 MOD 176
   281	400334'	202 00 0 12 000043'		MOVEM	A, TBLK+1-KWORD(IND3)	; PUT WORD IN NEW SLOT
   282	400335'	340 07 0 00 000000 		AOJ	IND,			; SET TO GET NEXT WORD
   283	400336'	340 10 0 00 000000 		AOJ	IND1,			; SET TO PUT NEXT WORD
   284	400337'	305 07 0 00 000176 		CAIGE	IND, 176		; HAVE ALL WORDS BEEN DONE?
   285	400340'	254 00 0 00 400325'		JRST	STCODE			; NO - GO DO NEXT WORD.
   286	400341'	200 00 0 00 000253'		MOVE	A, TEMP+KWORD*176	; GET THE KEY WORD
   287	400342'	206 00 0 00 000042'		MOVSM	A, TBLK+KWORD*176	; SWAP IT INTO OUTPUT BUFFER
   288	400343'	350 00 0 00 000016'		AOS	CNTBLK			; STEP UP BLOCK COUNT
   289	400344'	201 00 0 00 000177 		MOVEI	A, 177			; GET MAX BLOCK SIZE
   290	400345'	276 00 0 00 000030'		SUBM	A, FILL			; GET NO. OF DATA WORDS IN BLOCK
   291	400346'	200 00 0 00 000032'		MOVE	A, TB+1			; GET THE BUFFER BYTE POINTER
   292	400347'	270 00 0 00 000030'		ADD	A, FILL			; ADD NO. OF DATA WORDS
   293	400350'	202 00 0 00 000032'		MOVEM	A, TB+1			; TELL MONITOR HOW MANY WORDS
   294	400351'	402 00 0 00 000030'		SETZM	FILL			; RESTORE FILL FOR NEXT BUFFER
   295	400352'	254 00 0 00 400303'		JRST	DOCODE			; GO GET NEXT BLOCK

DFCODE - FILE CODING AND DECODING PROGRAM FOR DECTAPE FILE SECURITY.	MACRO %50(242) 11:01 12-JUN-74 PAGE 10
DFCODE	MAC	 3-JUN-74		FROHREICH	R. J.			03-JUN-74

   296	400353'	056 00 0 00 000000 	DECODE:	IN	INCH,			; INPUT A BLOCK FROM TAPE
   297	400354'	254 00 0 00 400361'		JRST	INGOOD			; NORMAL RETURN
   298	400355'	063 00 0 00 740000 		STATZ	INCH, 740000		; SEE IF ERROR BITS ARE ON
   299	400356'	304 00 0 00 000000 		CAIA				; YES
   300	400357'	254 00 0 00 400453'		JRST	CLOSE			; NO - END OF FILE
   301	400360'	260 17 0 00 400637'		PUSHJ	PD, RERR		; TELL USER AND CONTINUE
   302	400361'	400 07 0 00 000000 	INGOOD:	SETZ	IND,			; INITIALIZE WORD POSITION POINTER
   303	400362'	510 13 0 00 000042'		HLLZ	KEY, TBLK+KWORD*176	; GET THE KEY BITS IN LEFT HALF
   304	400363'	274 13 0 00 000014'		SUB	KEY, CODE		; MAKE THEM DEPEND ON PASSWORD
   305	400364'	241 13 0 00 000006 		ROT	KEY, 6			; RIGHT JUSTIFY 1ST CHARACTER
   306	400365'	630 13 0 00 401013'		TDZ	KEY, [-1,,777760]	; USE ONLY LAST 4 BITS
   307	400366'	200 10 0 00 000013 		MOVE	IND1, KEY		; SAVE THE BITS
   308	400367'	213 00 0 00 000013 		MOVNS	KEY			; GET READY TO ROTATE BACK
   309	400370'	242 10 0 00 000003 		LSH	IND1, 3			; IMUL BY 8 FOR WORD POSITION
   310	400371'	202 10 0 00 000011 	STDECO:	MOVEM	IND1, IND2		; MAKE A COPY OF BLOCK ROTATION
   311	400372'	231 11 0 00 000176 		IDIVI	IND2, 176		; GET IND2 MOD 176
   312	400373'	200 00 0 12 000043'		MOVE	A, TBLK+1-KWORD(IND3)	; GET REAL NEXT WORD OF BLOCK
   313	400374'	612 00 0 00 401014'		TDNE	A, [1,,1]		; HAS IT BEEN SWAPED?
   314	400375'	207 00 0 00 000000 		MOVSS	A			; SWAP IT BACK
   315	400376'	241 00 0 13 000000 		ROT	A, (KEY)		; ROTATE IT BACK
   316	400377'	430 00 0 00 000014'		XOR	A, CODE			; DECODE IT WITH PASSWORD
   317	400400'	202 00 0 07 000254'		MOVEM	A, TEMP+1-KWORD(IND)	; PUT IT IN THE CORRECT SLOT
   318	400401'	340 10 0 00 000000 		AOJ	IND1,			; SET TO GET NEXT WORD
   319	400402'	340 07 0 00 000000 		AOJ	IND,			; SET TO PUT NEXT WORD
   320	400403'	305 07 0 00 000176 		CAIGE	IND, 176		; HAVE ALL WORDS BEEN DONE?
   321	400404'	254 00 0 00 400371'		JRST	STDECO			; NO - GO DO NEXT WORD
   322	400405'	200 00 0 00 000042'		MOVE	A, TBLK+KWORD*176	; YES - GET THE KEY WORD
   323	400406'	206 00 0 00 000253'		MOVSM	A, TEMP+KWORD*176	; SWAP IT INTO TEMP
   324	400407'	350 00 0 00 000016'		AOS	CNTBLK			; STEP UP BLOCK COUNT
   325	400410'	400 02 0 00 000000 		SETZ	CT,			; INITIALIZE WORD COUNT
   326	400411'	200 00 0 02 000253'		MOVE	A, TEMP(CT)		; GET WORD FROM TEMP BLOCK
   327	400412'	260 17 0 00 400443'		PUSHJ	PD, PUT			; PUT IT IN OUTPUT BUFFER
   328	400413'	340 02 0 00 000000 		AOJ	CT,			; STEP UP COUNT
   329	400414'	315 02 0 00 000033'		CAMGE	CT, TB+2		; > OR = NO. OF DATA WORDS IN BUFFER?
   330	400415'	254 00 0 00 400411'		JRST	.-4			; NO - GO DO ANOTHER WORD
   331	400416'	254 00 0 00 400353'		JRST	DECODE			; YES - GO GET ANOTHER BLOCK

DFCODE - FILE CODING AND DECODING PROGRAM FOR DECTAPE FILE SECURITY.	MACRO %50(242) 11:01 12-JUN-74 PAGE 11
DFCODE	MAC	 3-JUN-74		FROHREICH	R. J.			03-JUN-74

   332
   333	400417'	375 00 0 00 000036'	GET:	SOSGE	DB+2			; WORDS LEFT IN BUFFER?
   334	400420'	254 00 0 00 400423'		JRST	GETB			; NO - GET ANOTHER BUFFER
   335	400421'	134 00 0 00 000035'		ILDB	A, DB+1			; YES - GET A WORD FROM BUFFER
   336	400422'	263 17 0 00 000000 		POPJ	PD,			; RETURN
   337	400423'	332 00 0 00 000030'	GETB:	SKIPE	FILL			; IS BLOCK BEING FILLED WITH NON DATA?
   338	400424'	254 00 0 00 400434'		JRST	EOF			; YES - GO TO EOF ROUTINE
   339	400425'	056 00 0 00 000000 		IN	INCH,			; NO - GET A BUFFER FULL
   340	400426'	254 00 0 00 400417'		JRST	GET			; OK. - GO GET A WORD
   341	400427'	063 00 0 00 740000 		STATZ	INCH, 740000		; ARE ERROR BITS ON?
   342	400430'	304 00 0 00 000000 		CAIA				; YES
   343	400431'	254 00 0 00 400434'		JRST	EOF			; NO - GO TO EOF ROUTINE
   344	400432'	260 17 0 00 400637'		PUSHJ	PD, RERR		; TELL USER ABOUT ERROR
   345	400433'	254 00 0 00 400417'		JRST	GET			; CONTINUE
   346	400434'	332 00 0 00 000002 	EOF:	SKIPE	CT			; WAS EOF AT FIRST WORD READ?
   347	400435'	254 00 0 00 400440'		JRST	.+3			; NO
   348	400436'	350 00 0 17 000000 		AOS	(PD)			; SET FOR SKIP RETURN
   349	400437'	263 17 0 00 000000 		POPJ	PD,			; SKIP RETURN
   350	400440'	350 00 0 00 000030'		AOS	FILL			; ADD 1 TO COUNT OF FILLER WORDS
   351	400441'	047 00 0 00 000023 		MSTIME	A,			; MAKE A FILLER WORD
   352	400442'	263 17 0 00 000000 		POPJ	PD,			; RETURN WITH IT
   353
   354	400443'	375 00 0 00 000036'	PUT:	SOSGE	DB+2			; SPACE LEFT IN BUFFER?
   355	400444'	254 00 0 00 400447'		JRST	PUTB			; NO - OUTPUT THE BUFFER
   356	400445'	136 00 0 00 000035'		IDPB	A, DB+1			; YES - PUT WORD IN BUFFER
   357	400446'	263 17 0 00 000000 		POPJ	PD,			; RETURN
   358	400447'	057 01 0 00 000000 	PUTB:	OUT	OUTCH,			; OUTPUT THE BUFFER
   359	400450'	254 00 0 00 400443'		JRST	PUT			; CONTINUE
   360	400451'	260 17 0 00 400627'		PUSHJ	PD, WERR		; ERROR, TELL USER, CONTINUE
   361	400452'	254 00 0 00 400443'		JRST	PUT			; CONTINUE

DFCODE - FILE CODING AND DECODING PROGRAM FOR DECTAPE FILE SECURITY.	MACRO %50(242) 11:01 12-JUN-74 PAGE 12
DFCODE	MAC	 3-JUN-74		FROHREICH	R. J.			03-JUN-74

   362
   363					;	GO HERE TO CLOSE OUT FILE OR REPORT
   364
   365	400453'	071 00 0 00 000000 	CLOSE:	RELEAS	INCH,			; WRITE DIRECTORY NOW SINCE
   366	400454'	071 01 0 00 000000 		RELEAS	OUTCH,			; MAY BE ERROR LATER.
   367	400455'	200 00 0 00 000452'		MOVE	A, SVJBFF		; GET REAL JOBFF
   368	400456'	202 00 0 00 400270*		MOVEM	A, .JBFF##		; RECLAIM BUFFER SPACE.
   369	400457'	336 00 0 00 000015'		SKIPN	DONE			; END OF LINE?
   370	400460'	254 00 0 00 400075'		JRST	ASKFIL+1		; NO - GO GET NEXT FILE
   371						OUTSTR	[ASCIZ*
   372	400461'	051 03 0 00 401015'	TOTAL OF *]
   373	400462'	200 00 0 00 000016'		MOVE	0, CNTBLK		; GET BLOCK COUNT
   374	400463'	260 17 0 00 400476'		PUSHJ	PD, TYDEC		; TYPE IT IN DECIMAL
   375						OUTSTR	[ASCIZ* DECTAPE BLOCKS PROCESSED
   376					
   377	400464'	051 03 0 00 401020'	*]
   378	400465'	051 03 0 00 401026'		OUTSTR	[ASCIZ*MORE TO DO? (Y OR CR) : *]
   379	400466'	051 04 0 00 000000 		INCHWL	A			; GET A CHARACTER
   380	400467'	302 00 0 00 000131 		CAIE	A, "Y"			; IS IT A Y ?
   381	400470'	254 00 0 00 400474'		JRST	.+4			; YES - GO EXIT PROGRAM
   382						OUTSTR	[ASCIZ*
   383					
   384	400471'	051 03 0 00 401025'	*]					; DOUBLE SPACE
   385	400472'	260 17 0 00 400506'		PUSHJ	PD, TTEAT		; EAT UP REST OF LINE
   386	400473'	254 00 0 00 400001'		JRST	REST			; RESTART AT REENTER ADDRESS
   387
   388	400474'	260 17 0 00 400506'		PUSHJ	PD, TTEAT		; EAT UP REST OF LINE
   389	400475'	047 00 0 00 000012 		EXIT				; EXIT PROGRAM.

DFCODE - FILE CODING AND DECODING PROGRAM FOR DECTAPE FILE SECURITY.	MACRO %50(242) 11:01 12-JUN-74 PAGE 13
DFCODE	MAC	 3-JUN-74		FROHREICH	R. J.			03-JUN-74

   390
   391					;	TYPE AC0 IN DECIMAL
   392
   393	400476'	231 00 0 00 000012 	TYDEC:	IDIVI	0, 12			; DIVIDE BY 10
   394	400477'	261 17 0 00 000001 		PUSH	PD, 1			; SAVE THE REMAINDER
   395	400500'	332 00 0 00 000000 		SKIPE	0			; SEE IF END
   396	400501'	260 17 0 00 400476'		PUSHJ	PD, TYDEC		; GO DIVIDE AGAIN
   397	400502'	262 17 0 00 000000 	TYDEC1:	POP	PD, 0			; GET THE REMAINDER
   398	400503'	271 00 0 00 000060 		ADDI	0, 60			; MAKE IT ASCII
   399	400504'	051 01 0 00 000000 		OUTCHR	0			; TYPE IT
   400	400505'	263 17 0 00 000000 		POPJ	PD,			; DO IT AGAIN UNTIL DONE
   401
   402					;	DISCARD CHARACTERS UP TO LINEFEED.
   403
   404	400506'	306 00 0 00 000012 	TTEAT:	CAIN	A, 12			; IS THE CHAR IN (A) A LINEFEED?
   405	400507'	263 17 0 00 000000 		POPJ	PD,			; YES - RETURN
   406	400510'	051 04 0 00 000000 		INCHWL	A			; NO - GET A CHARACTER
   407	400511'	254 00 0 00 400506'		JRST	TTEAT			; GO TEST IT AGAIN

DFCODE - FILE CODING AND DECODING PROGRAM FOR DECTAPE FILE SECURITY.	MACRO %50(242) 11:01 12-JUN-74 PAGE 14
DFCODE	MAC	 3-JUN-74		FROHREICH	R. J.			03-JUN-74

   408
   409					;	DATA FOR LOW SEGMENT.
   410
   411	400512'	000000	000014		DATA:	EXP	14, 0, <XWD 0, TB>	; TINM:
   412	400513'	000000	000000
   413	400514'	000000	000031'
   414	400515'	000000	000014			EXP	14, 0, <XWD TB, 0>	; TOUTM:
   415	400516'	000000	000000
   416	400517'	000031'	000000
   417	400520'	000000	000014			EXP	14, SIXBIT/DSK/, <XWD 0, DB>  ;DINM:
   418	400521'	446353	000000
   419	400522'	000000	000034'
   420	400523'	000000	000014			EXP	14, SIXBIT/DSK/, <XWD DB, 0>  ;DOUTM:
   421	400524'	446353	000000
   422	400525'	000034'	000000
   423	400526'	05 03 11 01 74 02 		SIXBIT	A%#)!\"A		; CODE:
   424	400527'	000000	000000			0				; DONE:
   425	400530'	000000	000000			0				; CNTBLK:
   426	400531'	000000	000000			0				; DECO:
   427
   428	400532'				DATA1:	BLOCK	4			; TLOOK: AND TENTR:
   429	400536'	000000	000000			EXP	0, 0, <177000,,0>, 0	; DLOOK: AND DENTR:
   430	400537'	000000	000000
   431	400540'	177000	000000
   432	400541'	000000	000000
   433	400542'	000000	000000			0				; FILL:

DFCODE - FILE CODING AND DECODING PROGRAM FOR DECTAPE FILE SECURITY.	MACRO %50(242) 11:01 12-JUN-74 PAGE 15
DFCODE	MAC	 3-JUN-74		FROHREICH	R. J.			03-JUN-74

   434
   435					;	ERROR ROUTINES
   436
   437					NODT:	OUTSTR	[ASCIZ*
   438					? DEVICE IS NOT A DECTAPE.
   439					
   440	400543'	051 03 0 00 401033'	*]
   441	400544'	254 00 0 00 400020'		JRST	ASKDTA+1		; ASK FOR DRIVE AGAIN.
   442
   443
   444
   445					DOPE:	OUTSTR	[ASCIZ*
   446					? OPEN ERROR FOR MAIN DEVICE.
   447	400545'	051 03 0 00 401042'	*]
   448	400546'	051 11 0 00 000000 		CLRBFI				; CLEAR TTY INPUT BUFFER.
   449	400547'	047 00 0 00 000000 		RESET
   450						OUTSTR	[ASCIZ* TYPE "REE" TO REENTER.
   451	400550'	051 03 0 00 401051'	*]
   452	400551'	047 01 0 00 000012 		EXIT	1,			; EXIT TO MONITOR.
   453
   454
   455					TOPE:	OUTSTR	[ASCIZ*
   456					? OPEN ERROR FOR STORAGE DECTAPE.
   457	400552'	051 03 0 00 401057'	*]
   458	400553'	051 11 0 00 000000 		CLRBFI				; CLEAR TTY INPUT BUFFER.
   459	400554'	047 00 0 00 000000 		RESET
   460						OUTSTR	[ASCIZ* TYPE "REE" TO REENTER.
   461	400555'	051 03 0 00 401051'	*]
   462	400556'	047 01 0 00 000012 		EXIT	1,			; EXIT TO MONITOR.
   463
   464
   465					DLOOKE:	OUTSTR	[ASCIZ*
   466	400557'	051 03 0 00 401067'	? LOOKUP ERROR ON MAIN DEVICE FILE *]
   467	400560'	200 16 0 00 401077'		MOVE	STATUS, [POINT 6, TLOOK]
   468	400561'	260 17 0 00 400671'		PUSHJ	PD, TNAME		; TYPE FILE NAME.
   469	400562'	200 16 0 00 000025'		MOVE	STATUS, DLOOK+1		; GET ERROR CODE.
   470	400563'	260 17 0 00 400716'		PUSHJ	PD, TYSTAT		; TYPE IT.
   471	400564'	200 03 0 00 401100'		MOVE	DEV, [SIXBIT/DSK/]	; GET DEFAULT MAIN DEVICE.
   472	400565'	202 03 0 00 000007'		MOVEM	DEV, DINM+1		; RESTORE MAIN DEVICE.
   473	400566'	202 03 0 00 000012'		MOVEM	DEV, DOUTM+1		; RESTORE MAIN DEVICE.
   474	400567'	051 11 0 00 000000 		CLRBFI				; CLEAR TTY INPUT BUFFER.
   475	400570'	254 00 0 00 400074'		JRST	ASKFIL			; GO ASK FOR FILES AGAIN.

DFCODE - FILE CODING AND DECODING PROGRAM FOR DECTAPE FILE SECURITY.	MACRO %50(242) 11:01 12-JUN-74 PAGE 16
DFCODE	MAC	 3-JUN-74		FROHREICH	R. J.			03-JUN-74

   476					TENTRE:	OUTSTR	[ASCIZ*
   477	400571'	051 03 0 00 401101'	? ENTER ERROR ON STORAGE TAPE FILE *]
   478	400572'	200 16 0 00 401077'		MOVE	STATUS, [POINT 6, TLOOK]
   479	400573'	260 17 0 00 400671'		PUSHJ	PD, TNAME		; TYPE FILE NAME.
   480	400574'	200 16 0 00 000021'		MOVE	STATUS, TENTR+1		; GET ERROR CODE.
   481	400575'	260 17 0 00 400716'		PUSHJ	PD, TYSTAT		; TYPE IT.
   482	400576'	200 03 0 00 401100'		MOVE	DEV, [SIXBIT/DSK/]	; GET DEFAULT MAIN DEVICE.
   483	400577'	202 03 0 00 000007'		MOVEM	DEV, DINM+1		; RESTORE MAIN DEVICE.
   484	400600'	202 03 0 00 000012'		MOVEM	DEV, DOUTM+1		; RESTORE MAIN DEVICE.
   485	400601'	051 11 0 00 000000 		CLRBFI				; CLEAR TTY INPUT BUFFER.
   486	400602'	254 00 0 00 400074'		JRST	ASKFIL			; GO ASK FOR FILES AGAIN.
   487
   488
   489					TLOOKE:	OUTSTR	[ASCIZ*
   490	400603'	051 03 0 00 401111'	? LOOKUP ERROR ON STORAGE TAPE FILE *]
   491	400604'	200 16 0 00 401077'		MOVE	STATUS, [POINT 6, TLOOK]
   492	400605'	260 17 0 00 400671'		PUSHJ	PD, TNAME		; TYPE FILE NAME.
   493	400606'	200 16 0 00 000021'		MOVE	STATUS, TLOOK+1		; GET ERROR CODE.
   494	400607'	260 17 0 00 400716'		PUSHJ	PD, TYSTAT		; TYPE IT.
   495	400610'	200 03 0 00 401100'		MOVE	DEV, [SIXBIT/DSK/]	; GET DEFAULT MAIN DEVICE.
   496	400611'	202 03 0 00 000007'		MOVEM	DEV, DINM+1		; RESTORE MAIN DEVICE.
   497	400612'	202 03 0 00 000012'		MOVEM	DEV, DOUTM+1		; RESTORE MAIN DEVICE.
   498	400613'	051 11 0 00 000000 		CLRBFI				; CLEAR TTY INPUT BUFFER.
   499	400614'	254 00 0 00 400074'		JRST	ASKFIL			; GO ASK FOR FILES AGAIN.
   500
   501
   502					DENTRE:	OUTSTR	[ASCIZ*
   503	400615'	051 03 0 00 401121'	? ENTER ERROR ON MAIN DEVICE FILE *]
   504	400616'	200 16 0 00 401077'		MOVE 	STATUS, [POINT 6, TLOOK]
   505	400617'	260 17 0 00 400671'		PUSHJ	PD, TNAME		; TYPE FILE NAME.
   506	400620'	200 16 0 00 000025'		MOVE	STATUS, DENTR+1		; GET ERROR CODE.
   507	400621'	260 17 0 00 400716'		PUSHJ	PD, TYSTAT		; TYPE IT.
   508	400622'	200 03 0 00 401100'		MOVE	DEV, [SIXBIT/DSK/]	; GET DEFAULT MAIN DEVICE.
   509	400623'	202 03 0 00 000007'		MOVEM	DEV, DINM+1		; RESTORE MAIN DEVICE.
   510	400624'	202 03 0 00 000012'		MOVEM	DEV, DOUTM+1		; RESTORE MAIN DEVICE.
   511	400625'	051 11 0 00 000000 		CLRBFI				; CLEAR TTY INPUT BUFFER.
   512	400626'	254 00 0 00 400074'		JRST	ASKFIL			; GO ASK FOR FILES AGAIN.
   513
   514
   515					WERR:	OUTSTR	[ASCIZ*
   516	400627'	051 03 0 00 401131'	? WRITE ERROR FOR *]
   517	400630'	200 16 0 00 401077'		MOVE	STATUS, [POINT 6, TLOOK]
   518	400631'	260 17 0 00 400671'		PUSHJ	PD, TNAME		; TYPE FILE NAME.
   519	400632'	062 01 0 00 000016 		GETSTS	OUTCH, STATUS		; GET ERROR STATUS.
   520	400633'	260 17 0 00 400716'		PUSHJ	PD, TYSTAT		; TYPE IT.
   521	400634'	620 16 0 00 740000 		TRZ	STATUS, 740000		; CLEAR ERROR BITS.
   522	400635'	060 01 0 16 000000 		SETSTS	OUTCH, (STATUS)		; TELL THE MONITOR.
   523	400636'	263 17 0 00 000000 		POPJ	PD,			; RETURN TO MAIN SEQ.

DFCODE - FILE CODING AND DECODING PROGRAM FOR DECTAPE FILE SECURITY.	MACRO %50(242) 11:01 12-JUN-74 PAGE 17
DFCODE	MAC	 3-JUN-74		FROHREICH	R. J.			03-JUN-74

   524					RERR:	OUTSTR	[ASCIZ*
   525	400637'	051 03 0 00 401136'	? READ ERROR FOR *]
   526	400640'	200 16 0 00 401077'		MOVE	STATUS, [POINT 6, TLOOK]
   527	400641'	260 17 0 00 400671'		PUSHJ	PD, TNAME		; TYPE FILE NAME.
   528	400642'	062 00 0 00 000016 		GETSTS INCH, STATUS		; GET ERROR STATUS
   529	400643'	260 17 0 00 400716'		PUSHJ	PD, TYSTAT		; TYPE IT.
   530	400644'	620 16 0 00 740000 		TRZ	STATUS, 740000		; CLEAR ERROR BITS.
   531	400645'	060 00 0 16 000000 		SETSTS	INCH, (STATUS)		; TELL THE MONITOR.
   532	400646'	263 17 0 00 000000 		POPJ	PD,			; RETURN TO MAIN SEQ.
   533
   534
   535					PROERR:	OUTSTR	[ASCIZ*
   536	400647'	051 03 0 00 401142'	? INCORRECT PROTECTION CODE FOR *]
   537	400650'	200 16 0 00 401002'		MOVE	STATUS, [POINT 6, NAME]
   538	400651'	260 17 0 00 400671'		PUSHJ	PD, TNAME		; TYPE FILE NAME.
   539						OUTSTR	[ASCIZ*
   540					
   541	400652'	051 03 0 00 401025'	*]
   542	400653'	200 03 0 00 401100'		MOVE	DEV, [SIXBIT/DSK/]	; GET DEFAULT MAIN DEVICE.
   543	400654'	202 03 0 00 000007'		MOVEM	DEV, DINM+1		; RESTORE MAIN DEVICE.
   544	400655'	202 03 0 00 000012'		MOVEM	DEV, DOUTM+1		; RESTORE MAIN DEVICE.
   545	400656'	051 11 0 00 000000 		CLRBFI				; CLEAR TTY INPUT BUFFER.
   546	400657'	254 00 0 00 400074'		JRST	ASKFIL			; GO ASK FOR FILES AGAIN.
   547
   548
   549					PPNERR:	OUTSTR	[ASCIZ*
   550	400660'	051 03 0 00 401151'	? INCORRECT PPN FOR *]
   551	400661'	200 16 0 00 401002'		MOVE	STATUS, [POINT 6, NAME]
   552	400662'	260 17 0 00 400671'		PUSHJ	PD, TNAME		; TYPE FILE NAME.
   553						OUTSTR	[ASCIZ*
   554					
   555	400663'	051 03 0 00 401025'	*]
   556	400664'	200 03 0 00 401100'		MOVE	DEV, [SIXBIT/DSK/]	; GET DEFAULT MAIN DEVICE.
   557	400665'	202 03 0 00 000007'		MOVEM	DEV, DINM+1		; RESTORE MAIN DEVICE.
   558	400666'	202 03 0 00 000012'		MOVEM	DEV, DOUTM+1		; RESTORE MAIN DEVICE.
   559	400667'	051 11 0 00 000000 		CLRBFI				; CLEAR TTY INPUT BUFFER.
   560	400670'	254 00 0 00 400074'		JRST	ASKFIL			; GO ASK FOR FILES AGAIN.

DFCODE - FILE CODING AND DECODING PROGRAM FOR DECTAPE FILE SECURITY.	MACRO %50(242) 11:01 12-JUN-74 PAGE 18
DFCODE	MAC	 3-JUN-74		FROHREICH	R. J.			03-JUN-74

   561
   562					;	TYPE FILE NAME AND EXT.
   563
   564	400671'	261 17 0 00 000000 	TNAME:	PUSH	PD, A			; SAVE A
   565	400672'	261 17 0 00 000002 		PUSH	PD, CT			; SAVE CT
   566	400673'	400 02 0 00 000000 		SETZ	CT,			; INITIALIZE COUNTER.
   567	400674'	134 00 0 00 000016 	TN:	ILDB	A, STATUS		; THE POINTER IS IN STATUS
   568	400675'	322 00 0 00 400700'		JUMPE	A, .+3			; DON'T TYPE IF SPACE
   569	400676'	271 00 0 00 000040 		ADDI	A, 40			; MAKE IT ASCII
   570	400677'	051 01 0 00 000000 		OUTCHR	A			; TYPE IT OUT
   571	400700'	340 02 0 00 000000 		AOJ	CT,			; ADD 1 TO COUNT
   572	400701'	305 02 0 00 000006 		CAIGE	CT, ^D6			; IS CT > OR = 6
   573	400702'	254 00 0 00 400674'		JRST	TN			; NO - GET ANOTHER CHARACTER
   574	400703'	051 01 0 00 401156'		OUTCHR	["."]			; YES - TYPE A DOT
   575	400704'	134 00 0 00 000016 	TE:	ILDB	A, STATUS		; GET A BYTE
   576	400705'	322 00 0 00 400710'		JUMPE	A, .+3			; DON'T TYPE IF SPACE
   577	400706'	271 00 0 00 000040 		ADDI	A, 40			; MAKE IT ASCII
   578	400707'	051 01 0 00 000000 		OUTCHR	A			; TYPE IT OUT
   579	400710'	340 02 0 00 000000 		AOJ	CT,			; ADD 1 TO COUNT
   580	400711'	305 02 0 00 000011 		CAIGE	CT, ^D9			; IS CT > OR = 9
   581	400712'	254 00 0 00 400704'		JRST	TE			; NO - GET ANOTHER BYTE
   582	400713'	262 17 0 00 000002 		POP	PD, CT			; YES - RESTORE CT
   583	400714'	262 17 0 00 000000 		POP	PD, A			; RESTORE A
   584	400715'	263 17 0 00 000000 		POPJ	PD,			; RETURN TO ERROR ROUTINE
   585
   586					;	TYPE ERROR STATUS IN OCTAL.
   587
   588	400716'	261 17 0 00 000000 	TYSTAT:	PUSH	PD, A			; SAVE A
   589	400717'	261 17 0 00 000001 		PUSH	PD, P			; SAVE P
   590	400720'	261 17 0 00 000002 		PUSH	PD, CT			; SAVE CT
   591	400721'	051 03 0 00 401157'		OUTSTR	[ASCIZ* (*]
   592	400722'	211 02 0 00 000006 		MOVNI	CT, 6			; SET UP COUNTER
   593	400723'	200 01 0 00 401160'		MOVE	P, [POINT 3,STATUS,17]	; SET UP POINTER
   594	400724'	134 00 0 00 000001 		ILDB	A, P			; GET A BYTE
   595	400725'	271 00 0 00 000060 		ADDI	A, 60			; MAKE IT ASCII
   596	400726'	051 01 0 00 000000 		OUTCHR	A			; TYPE IT OUT
   597	400727'	341 02 0 00 400724'		AOJL	CT, .-3			; STEP UP CT & JUMP IF NOT END
   598						OUTSTR	[ASCIZ*)
   599	400730'	051 03 0 00 401161'	*]
   600	400731'	262 17 0 00 000002 		POP	PD, CT			; RESTORE CT
   601	400732'	262 17 0 00 000001 		POP	PD, P			; RESTORE P
   602	400733'	262 17 0 00 000000 		POP	PD, A			; RESTORE A
   603	400734'	263 17 0 00 000000 		POPJ	PD,			; RETURN TO ERROR ROUTINE

DFCODE - FILE CODING AND DECODING PROGRAM FOR DECTAPE FILE SECURITY.	MACRO %50(242) 11:01 12-JUN-74 PAGE 19
DFCODE	MAC	 3-JUN-74		FROHREICH	R. J.			03-JUN-74

   604
   605					;	LOW SEGMENT SYMBOLS
   606
   607	000000'				IFN	PURE, <RELOC	0>
   608
   609	000000'				TINM:	BLOCK	3			; TAPE INPUT OPEN BLOCK
   610	000003'				TOUTM:	BLOCK	3			; TAPE OUTPUT OPEN BLOCK
   611	000006'				DINM:	BLOCK	3			; DISK INPUT OPEN BLOCK
   612	000011'				DOUTM:	BLOCK	3			; DISK OUTPUT OPEN BLOCK
   613	000014'				CODE:	BLOCK	1			; PASSWORD
   614	000015'				DONE:	BLOCK	1			; END OF LINE SWITCH
   615	000016'				CNTBLK:	BLOCK	1			; DECTAPE BLOCK COUNT
   616	000017'				DECO:	BLOCK	1			; DECODE SWITCH
   617
   618	000020'				TLOOK:					; TAPE LOOKUP BLOCK
   619	000020'				TENTR:	BLOCK	4			; TAPE ENTER BLOCK
   620	000024'				DLOOK:					; DISK LOOKUP BLOCK
   621	000024'				DENTR:	BLOCK	4			; DISK ENTER BLOCK
   622	000030'				FILL:	BLOCK	1			; COUNT OF NON DATA WORDS
   623
   624
   625	000031'				TB:	BLOCK	3			; TAPE BUFFER HEADER
   626	000034'				DB:	BLOCK	3			; DISK BUFFER HEADER
   627	000037'				TBUFF:	BLOCK	3			; FIRST 3 WORDS OF TAPE BUFFER
   628	000042'				TBLK:	BLOCK	177			; REST OF BUFFER.
   629	000241'				STACK:	BLOCK	12			; PUSH DOWN STACK
   630	000253'				TEMP:	BLOCK	177			; TEMP BLOCK FOR WORK.
   631	000452'				SVJBFF:	BLOCK	1			; SAVE JOBFF HERE.

DFCODE - FILE CODING AND DECODING PROGRAM FOR DECTAPE FILE SECURITY.	MACRO %50(242) 11:01 12-JUN-74 PAGE 20
DFCODE	MAC	 3-JUN-74		FROHREICH	R. J.			03-JUN-74

   632
   633					;	BACK TO HIGH SEGMENT FOR LITERALS.
   634
   635	400735'				IFN	PURE, <RELOC>
   636
   637	400735'					LIT
   638	400735'	104 106 103 117 104 
   639	400736'	105 040 126 040 061 
   640	400737'	101 050 063 051 055 
   641	400740'	065 015 012 000 000 
   642	400741'	400512'	000000'
   643	400742'	777766	000240'
   644	400743'	103 117 104 105 040 
   645	400744'	117 122 040 104 105 
   646	400745'	103 117 104 105 077 
   647	400746'	040 050 103 040 117 
   648	400747'	122 040 104 051 040 
   649	400750'	072 040 000 000 000 
   650	400751'	116 101 115 105 040 
   651	400752'	117 106 040 123 124 
   652	400753'	117 122 101 107 105 
   653	400754'	040 104 105 103 124 
   654	400755'	101 120 105 040 104 
   655	400756'	122 111 126 105 040 
   656	400757'	072 040 000 000 000 
   657	400760'	44 06 0 00 000003 
   658	400761'	123 124 101 116 104 
   659	400762'	101 122 104 040 103 
   660	400763'	117 104 105 040 127 
   661	400764'	111 124 110 117 125 
   662	400765'	124 040 101 040 120 
   663	400766'	101 123 123 127 117 
   664	400767'	122 104 077 040 050 
   665	400770'	131 040 117 122 040 
   666	400771'	103 122 051 040 072 
   667	400772'	040 000 000 000 000 
   668	400773'	44 06 0 00 000014'
   669	400774'	120 101 123 123 127 
   670	400775'	117 122 104 072 040 
   671	400776'	000 000 000 000 000 
   672	400777'	106 111 114 105 040 
   673	401000'	116 101 115 105 123 
   674	401001'	040 072 040 000 000 
   675	401002'	44 06 0 00 000005 
   676	401003'	400532'	000020'
   677	401004'	44 06 0 00 000006 
   678	401005'	44 03 0 00 000026'
   679	401006'	44 03 0 07 000000 
   680	401007'	00 14 0 00 000026'
   681	401010'	00 14 0 00 000022'
   682	401011'	17 03 0 00 000025'
   683	401012'	17 03 0 00 000021'
   684	401013'	777777	777760
   685	401014'	000001	000001
   686	401015'	015 012 124 117 124 

DFCODE - FILE CODING AND DECODING PROGRAM FOR DECTAPE FILE SECURITY.	MACRO %50(242) 11:01 12-JUN-74 PAGE 20-1
DFCODE	MAC	 3-JUN-74		FROHREICH	R. J.			03-JUN-74

   687	401016'	101 114 040 117 106 
   688	401017'	040 000 000 000 000 
   689	401020'	040 104 105 103 124 
   690	401021'	101 120 105 040 102 
   691	401022'	114 117 103 113 123 
   692	401023'	040 120 122 117 103 
   693	401024'	105 123 123 105 104 
   694	401025'	015 012 015 012 000 
   695	401026'	115 117 122 105 040 
   696	401027'	124 117 040 104 117 
   697	401030'	077 040 050 131 040 
   698	401031'	117 122 040 103 122 
   699	401032'	051 040 072 040 000 
   700	401033'	015 012 077 040 104 
   701	401034'	105 126 111 103 105 
   702	401035'	040 111 123 040 116 
   703	401036'	117 124 040 101 040 
   704	401037'	104 105 103 124 101 
   705	401040'	120 105 056 015 012 
   706	401041'	015 012 000 000 000 
   707	401042'	015 012 077 040 117 
   708	401043'	120 105 116 040 105 
   709	401044'	122 122 117 122 040 
   710	401045'	106 117 122 040 115 
   711	401046'	101 111 116 040 104 
   712	401047'	105 126 111 103 105 
   713	401050'	056 015 012 000 000 
   714	401051'	040 124 131 120 105 
   715	401052'	040 042 122 105 105 
   716	401053'	042 040 124 117 040 
   717	401054'	122 105 105 116 124 
   718	401055'	105 122 056 015 012 
   719	401056'	000 000 000 000 000 
   720	401057'	015 012 077 040 117 
   721	401060'	120 105 116 040 105 
   722	401061'	122 122 117 122 040 
   723	401062'	106 117 122 040 123 
   724	401063'	124 117 122 101 107 
   725	401064'	105 040 104 105 103 
   726	401065'	124 101 120 105 056 
   727	401066'	015 012 000 000 000 
   728	401067'	015 012 077 040 114 
   729	401070'	117 117 113 125 120 
   730	401071'	040 105 122 122 117 
   731	401072'	122 040 117 116 040 
   732	401073'	115 101 111 116 040 
   733	401074'	104 105 126 111 103 
   734	401075'	105 040 106 111 114 
   735	401076'	105 040 000 000 000 
   736	401077'	44 06 0 00 000020'
   737	401100'	44 63 53 00 00 00 
   738	401101'	015 012 077 040 105 
   739	401102'	116 124 105 122 040 
   740	401103'	105 122 122 117 122 
   741	401104'	040 117 116 040 123 

DFCODE - FILE CODING AND DECODING PROGRAM FOR DECTAPE FILE SECURITY.	MACRO %50(242) 11:01 12-JUN-74 PAGE 20-2
DFCODE	MAC	 3-JUN-74		FROHREICH	R. J.			03-JUN-74

   742	401105'	124 117 122 101 107 
   743	401106'	105 040 124 101 120 
   744	401107'	105 040 106 111 114 
   745	401110'	105 040 000 000 000 
   746	401111'	015 012 077 040 114 
   747	401112'	117 117 113 125 120 
   748	401113'	040 105 122 122 117 
   749	401114'	122 040 117 116 040 
   750	401115'	123 124 117 122 101 
   751	401116'	107 105 040 124 101 
   752	401117'	120 105 040 106 111 
   753	401120'	114 105 040 000 000 
   754	401121'	015 012 077 040 105 
   755	401122'	116 124 105 122 040 
   756	401123'	105 122 122 117 122 
   757	401124'	040 117 116 040 115 
   758	401125'	101 111 116 040 104 
   759	401126'	105 126 111 103 105 
   760	401127'	040 106 111 114 105 
   761	401130'	040 000 000 000 000 
   762	401131'	015 012 077 040 127 
   763	401132'	122 111 124 105 040 
   764	401133'	105 122 122 117 122 
   765	401134'	040 106 117 122 040 
   766	401135'	000 000 000 000 000 
   767	401136'	015 012 077 040 122 
   768	401137'	105 101 104 040 105 
   769	401140'	122 122 117 122 040 
   770	401141'	106 117 122 040 000 
   771	401142'	015 012 077 040 111 
   772	401143'	116 103 117 122 122 
   773	401144'	105 103 124 040 120 
   774	401145'	122 117 124 105 103 
   775	401146'	124 111 117 116 040 
   776	401147'	103 117 104 105 040 
   777	401150'	106 117 122 040 000 
   778	401151'	015 012 077 040 111 
   779	401152'	116 103 117 122 122 
   780	401153'	105 103 124 040 120 
   781	401154'	120 116 040 106 117 
   782	401155'	122 040 000 000 000 
   783	401156'	000000	000056
   784	401157'	040 050 000 000 000 
   785	401160'	22 03 0 00 000016 
   786	401161'	051 015 012 000 000 
   787
   788			400000'			END	ST

NO ERRORS DETECTED

HI-SEG. BREAK IS 401173
PROGRAM BREAK IS 000453
CPU TIME USED 00:11.400

3K CORE USED

DFCODE - FILE CODING AND DECODING PROGRAM FOR DECTAPE FILE SECURITY.	MACRO %50(242) 11:01 12-JUN-74 PAGE S-1
DFCODE	MAC	 3-JUN-74		SYMBOL TABLE

A		000000		LSQB		400163'		
ASKDTA		400017'		MSTIME	047000	000023		
ASKFIL		400074'		NAME		000005		
CD		400005'		NODT		400543'		
CLOSE		400453'		OPENC		400236'		
CLRBFI	051440	000000		OPEND		400260'		
CNTBLK		000016'		OUTCH		000001	SPD	
CODE		000014'		OUTCHR	051040	000000		
COL		400154'		OUTSTR	051140	000000		
COMA		400214'		P		000001		
CT		000002		PD		000017		
DATA		400512'		PPNERR		400660'		
DATA1		400532'		PROERR		400647'		
DB		000034'		PURE		000001	SPD	
DECO		000017'		PUT		400443'		
DECODE		400353'		PUTB		400447'		
DENTR		000024'		RANG		400151'		
DENTRE		400615'		RERR		400637'		
DEV		000003		RESET	047000	000000		
DEVCHR	047000	000004		REST		400001'		
DINM		000006'		RSQB		400220'		
DLOOK		000024'		SETLCH	051340	000000		
DLOOKE		400557'		ST		400000'		
DOCODE		400303'		STACK		000241'		
DONE		000015'		STACOD		400045'		
DOPE		400545'		START		400301'		
DOUTM		000011'		STATUS		000016		
EOF		400434'		STCODE		400325'		
EXIT	047000	000012		STDECO		400371'		
EXT		000006		SVJBFF		000452'		
FILL		000030'		TB		000031'		
GET		400417'		TBLK		000042'		
GETB		400423'		TBUFF		000037'		
GETCOD		400061'		TE		400704'		
GETDEV		400024'		TEMP		000253'		
GETEXT		400125'		TENTR		000020'		
GETLCH	051300	000000		TENTRE		400571'		
GETN		400102'		TINM		000000'		
GETPPN		400170'		TLOOK		000020'		
GETPRO		400134'		TLOOKE		400603'		
GOTALL		400227'		TN		400674'		
GOTCOD		400067'		TNAME		400671'		
GOTDEV		400037'		TOPE		400552'		
INCH		000000	SPD	TOUTM		000003'		
INCHWL	051200	000000		TTEAT		400506'		
IND		000007		TYDEC		400476'		
IND1		000010		TYDEC1		400502'		
IND2		000011		TYSTAT		400716'		
IND3		000012		WERR		400627'		
INGOOD		400361'		.JBFF		400456'	EXT	
JOBREN		000124	SPD	
JOBVER		000137	SPD	
KEY		000013		
KWORD		000000	SPD	
LANG		400130'		

A     	    24#	    61	    62	    67	    68	    72	    81	    82	    84	    86	    89	    90	    99	   100
	   110	   111	   113	   114	   124	   125	   127	   128	   130	   132	   134	   136	   138	   140
	   143	   144	   153	   154	   156	   159	   161	   163	   164	   182	   183	   185	   187	   194
	   196	   198	   199	   223	   224	   226	   227	   230	   231	   232	   233	   241	   242	   244
	   245	   248	   249	   250	   251	   260	   274	   275	   276	   277	   278	   281	   286	   287
	   289	   290	   291	   292	   293	   312	   313	   314	   315	   316	   317	   322	   323	   326
	   335	   351	   356	   367	   368	   379	   380	   404	   406	   564	   567	   568	   569	   570
	   575	   576	   577	   578	   583	   588	   594	   595	   596	   602
ASKDTA	    71	    73	    76#	   441
ASKFIL	   121#	   370	   475	   486	   499	   512	   546	   560
CD    	    66#	    75
CLOSE 	   259	   300	   365#
CNTBLK	   288	   324	   373	   615#
CODE  	   108	   269	   275	   304	   316	   613#
COL   	   131	   169#
COMA  	   188	   201#
CT    	    26#	    79	    88	   107	   115	   126	   142	   146	   150	   152	   158	   166	   174	   177
	   181	   189	   190	   192	   201	   205	   209	   256	   260	   261	   262	   325	   326	   328
	   329	   346	   565	   566	   571	   572	   579	   580	   582	   590	   592	   597	   600
DATA  	    61	   411#
DATA1 	   124	   428#
DB    	   333	   335	   354	   356	   417	   420	   626#
DECO  	    62	    70	   217	   254	   616#
DECODE	   255	   296#	   331
DENTR 	   151	   249	   251	   252	   506	   621#
DENTRE	   253	   502#
DEV   	    27#	    77	    80	    92	    96	    97	   169	   170	   171	   471	   472	   473	   482	   483
	   484	   495	   496	   497	   508	   509	   510	   542	   543	   544	   556	   557	   558
DINM  	   170	   219	   472	   483	   496	   509	   543	   557	   611#
DLOOK 	   208	   215	   216	   228	   230	   232	   469	   620#
DLOOKE	   229	   465#
DOCODE	   256#	   263	   295
DONE  	   212	   369	   614#
DOPE  	   220	   240	   445#
DOUTM 	   171	   239	   473	   484	   497	   510	   544	   558	   612#
EOF   	   338	   343	   346#
EXT   	    29#	   122	   147	   214	   216
FILL  	   125	   290	   292	   294	   337	   350	   622#
GET   	   257	   333#	   340	   345
GETB  	   334	   337#
GETCOD	   110#	   115
GETDEV	    81#	    83	    87	    88	    91
GETEXT	   135	   146#
GETN  	   127#	   141	   142	   145	   148	   168	   175	   211
GETPPN	   181#	   193	   200	   204
GETPRO	   153#	   158	   165
GOTALL	   129	   133	   212#
GOTCOD	   101	   112	   116#
GOTDEV	    85	    92#
INCH  	    41#	   219	   228	   237	   243	   246	   296	   298	   339	   341	   365	   528	   531
IND   	    30#	   179	   180	   202	   203	   267	   274	   282	   284	   302	   317	   319	   320
IND1  	    31#	   178	   180	   201	   207	   208	   272	   273	   279	   283	   307	   309	   310	   318
IND2  	    32#	   178	   202	   205	   206	   279	   280	   310	   311
IND3  	    33#	   281	   312
INGOOD	   297	   302#
JOBREN	     7#
JOBVER	     4#
KEY   	    34#	   268	   269	   270	   271	   272	   276	   303	   304	   305	   306	   307	   308	   315
KWORD 	    17	    19	   268	   274	   281	   286	   287	   303	   312	   317	   322	   323
LANG  	   137	   149#
LSQB  	   139	   176#
NAME  	    28#	   122	   123	   169	   172	   173	   213	   215	   537	   551
NODT  	    95	   437#
OPENC 	   219#
OPEND 	   218	   237#
OUTCH 	    43#	   221	   225	   234	   239	   252	   264	   358	   366	   519	   522
P     	    25#	    80	    90	   108	   114	   123	   144	   147	   149	   151	   164	   167	   173	   176
	   179	   199	   203	   210	   589	   593	   594	   601
PD    	    36#	    65	    74	    76	   102	   116	   149	   150	   166	   167	   176	   177	   209	   210
	   257	   266	   301	   327	   336	   344	   348	   349	   352	   357	   360	   374	   385	   388
	   394	   396	   397	   400	   405	   468	   470	   479	   481	   492	   494	   505	   507	   518
	   520	   523	   527	   529	   532	   538	   552	   564	   565	   582	   583	   584	   588	   589
	   590	   600	   601	   602	   603
PPNERR	   195	   197	   549#
PROERR	   160	   162	   535#
PURE  	    12	    14	    54	   607	   635
PUT   	   327	   354#	   359	   361
PUTB  	   355	   358#
RANG  	   155	   157	   166#
RERR  	   301	   344	   524#
REST  	     8	    60#	   386
RSQB  	   184	   186	   205#
ST    	    57#	   788
STACK 	    65	   629#
STACOD	    98#
START 	   236	   254#
STATUS	    35#	    92	    93	    94	   103	   104	   105	   106	   117	   118	   119	   120	   467	   469
	   478	   480	   491	   493	   504	   506	   517	   519	   521	   522	   526	   528	   530	   531
	   537	   551	   567	   575	   593
STCODE	   274#	   285
STDECO	   310#	   321
SVJBFF	   226	   244	   367	   631#
TB    	   291	   293	   329	   411	   414	   625#
TBLK  	   281	   287	   303	   312	   322	   628#
TBUFF 	   223	   241	   627#
TE    	   575#	   581
TEMP  	   260	   268	   274	   286	   317	   323	   326	   630#
TENTR 	   231	   233	   234	   480	   619#
TENTRE	   235	   476#
TINM  	    61	    96	   237	   609#
TLOOK 	   124	   213	   214	   246	   248	   250	   467	   478	   491	   493	   504	   517	   526	   618#
TLOOKE	   247	   489#
TN    	   567#	   573
TNAME 	   468	   479	   492	   505	   518	   527	   538	   552	   564#
TOPE  	   222	   238	   455#
TOUTM 	    97	   221	   610#
TTEAT 	    74	    76	   102	   116	   385	   388	   404#	   407
TYDEC 	   374	   393#	   396
TYDEC1	   397#
TYSTAT	   470	   481	   494	   507	   520	   529	   588#
WERR  	   266	   360	   515#
.JBFF 	   224#	   224	   227#	   227	   242#	   242	   245#	   245	   368#	   368
CLRBFI	   448	   458	   474	   485	   498	   511	   545	   559
DEVCHR	    93
EXIT  	   389	   452	   462
GETLCH	   104	   118
INCHWL	    67	    81	    99	   110	   127	   153	   182	   379	   406
MSTIME	   351
OUTCHR	   399	   570	   574	   578	   596
OUTSTR	    57	    66	    78	    98	   109	   121	   371	   375	   378	   382	   437	   445	   450	   455
	   460	   465	   476	   489	   502	   515	   524	   535	   539	   549	   553	   591	   598
RESET 	    60	   449	   459
SETLCH	   106	   120
ADD   	   292
ADDI  	   189	   398	   569	   577	   595
AOJ   	   261	   282	   283	   318	   319	   328	   571	   579
AOJG  	    88	   142	   158
AOJL  	   115	   597
AOS   	   288	   324	   348	   350
ASCIZ 	    57	    66	    78	    98	   109	   121	   371	   375	   378	   382	   437	   445	   450	   455
	   460	   465	   476	   489	   502	   515	   524	   535	   539	   549	   553	   591	   598
BLOCK 	   428	   609	   610	   611	   612	   613	   614	   615	   616	   619	   621	   622	   625	   626
	   627	   628	   629	   630	   631
BLT   	    62	   125
BYTE  	     5
CAIA  	   258	   265	   299	   342
CAIE  	    68	   380
CAIG  	    86	   140	   190
CAIGE 	   159	   194	   262	   284	   320	   572	   580
CAILE 	   161	   196
CAIN  	    72	    82	    84	   100	   111	   128	   130	   132	   134	   136	   138	   154	   156	   183
	   185	   187	   404
CAMGE 	   329
DPB   	   231	   233	   249	   251
END   	   788
ENTER 	   234	   252
EXCH  	   224	   242
EXP   	   411	   414	   417	   420	   429
GETSTS	   519	   528
HLLZ  	   303
HRLZ  	   268
IDIVI 	   280	   311	   393
IDPB  	    90	   114	   144	   164	   199	   356
IFN   	    14	    19	    54	   607	   635
IFNDEF	    12	    17
ILDB  	   335	   567	   575	   594
IN    	   296	   339
INBUF 	   243
IOWD  	    65
JRST  	    69	    71	    73	    75	    83	    85	    87	    91	    95	   101	   112	   129	   131	   133
	   135	   137	   139	   141	   145	   148	   155	   157	   160	   162	   165	   168	   175	   184
	   186	   188	   191	   193	   195	   197	   200	   204	   211	   218	   220	   222	   229	   235
	   236	   238	   240	   247	   253	   255	   259	   263	   285	   295	   297	   300	   321	   330
	   331	   334	   338	   340	   343	   345	   347	   355	   359	   361	   370	   381	   386	   407
	   441	   475	   486	   499	   512	   546	   560	   573	   581
JUMPE 	   568	   576
LDB   	   230	   232	   248	   250
LIT   	   637
LOC   	     4	     7
LOOKUP	   228	   246
LSH   	   273	   309
LSHC  	   207
MOVE  	    61	    65	    80	    92	   108	   123	   124	   147	   151	   169	   173	   179	   203	   272
	   274	   286	   291	   307	   312	   322	   326	   367	   373	   467	   469	   471	   478	   480
	   482	   491	   493	   495	   504	   506	   508	   517	   526	   537	   542	   551	   556	   593
MOVEI 	   180	   192	   202	   223	   241	   289
MOVEM 	    96	    97	   170	   171	   208	   213	   214	   215	   216	   226	   227	   244	   245	   260
	   279	   281	   293	   310	   317	   368	   472	   473	   483	   484	   496	   497	   509	   510
	   543	   544	   557	   558
MOVNI 	    79	   107	   126	   146	   152	   174	   592
MOVNS 	   308
MOVSM 	   287	   323
MOVSS 	   206	   278	   314
OPEN  	   219	   221	   237	   239
OUT   	   264	   358
OUTBUF	   225
POINT 	    80	   108	   123	   147	   151	   173	   179	   203	   230	   231	   232	   233	   248	   249
	   250	   251	   467	   478	   491	   504	   517	   526	   537	   551	   593
POP   	   166	   167	   209	   210	   397	   582	   583	   600	   601	   602
POPJ  	   336	   349	   352	   357	   400	   405	   523	   532	   584	   603
PUSH  	   149	   150	   176	   177	   394	   564	   565	   588	   589	   590
PUSHJ 	    74	    76	   102	   116	   257	   266	   301	   327	   344	   360	   374	   385	   388	   396
	   468	   470	   479	   481	   492	   494	   505	   507	   518	   520	   527	   529	   538	   552
RELEAS	   365	   366
RELOC 	    10	    54	   607	   635
ROT   	   201	   205	   270	   276	   305	   315
SETO  	   103	   117
SETOM 	    70	   212
SETSTS	   522	   531
SETZ  	    77	   172	   181	   256	   267	   302	   325	   566
SETZB 	   122	   178
SETZM 	   294
SIXBIT	   417	   420	   423	   471	   482	   495	   508	   542	   556
SKIPE 	   217	   254	   337	   346	   395
SKIPN 	   369
SOSGE 	   333	   354
STATZ 	   298	   341
SUB   	   269	   304
SUBI  	    89	   113	   143	   163	   198
SUBM  	   290
SUBTTL	     2
TDNE  	   277	   313
TDZ   	   271	   306
TITLE 	     1
TLNN  	    94
TLO   	   105
TLZ   	   119
TRZ   	   521	   530
TWOSEG	    14
XOR   	   275	   316
XWD   	    61	   124	   411	   414	   417	   420