File: DECODE.LS of Disk: V50/Source/Source-Listing-PAL-1
(Source file text) 


/	OS/8 DECODING PROGRAM		  PAL8-V50X 13-JUL-87 PAGE 1

		/	OS/8 DECODING PROGRAM

		/	LAST EDIT:	08-JUL-1992	22:00:00	CJL

		/	PROGRAM TO  DECODE  OS/8  FILES  FROM "PRINTABLE" ASCII FORMAT TO BINARY-IMAGE
		/	FORMAT.  INTERMEDIATE  "ASCII"  CONVERSION  SHOULD  BE HARMLESS AS LONG AS ALL
		/	PRINTING DATA CHARACTERS ARE NOT MODIFIED.

		/	DISTRIBUTED BY CUCCA AS "K12DEC.PAL" AS PART OF THE CUCCA KERMIT-12 PACKAGE.

		/	WRITTEN BY:

		/	CHARLES LASNER (CJL)
		/	CLA SYSTEMS
		/	72-55 METROPOLITAN AVENUE
		/	MIDDLE VILLAGE, NEW YORK 11379-2107
		/	(718) 894-6499

		/	USAGE:

		/	THIS PROGRAM OPERATES ON "PRINTABLE"  ASCII  FILES  WHICH HAVE BEEN CREATED BY
		/	ENCODING THE CONTENTS OF ARBITRARY (BINARY) FILES.  THE ENCODING FORMAT ALLOWS
		/	FOR SOME INNOCUOUS CONTENT MODIFICATION SUCH AS  EXTRANEOUS  WHITE  SPACE  AND
		/	EXTRA <CR>/<LF> PAIRS, BUT RIGOROUSLY VALIDATES CERTAIN ASPECTS OF THE FORMAT,
		/	SUCH AS A TRAILING CHECKSUM.

		/	CERTAIN IMBEDDED COMMANDS ARE USED SUCH AS (REMARK .........) WHICH ALLOWS FOR
		/	COMMENTARY LINES WITHIN THE FILE FOR IDENTIFICATION PURPOSES.  THE (FILE ) AND
		/	(END )  COMMANDS  CONTAIN  THE  SUGGESTED  FILENAME FOR THE DESCENDANT DECODED
		/	FILE.

/	OS/8 DECODING PROGRAM		  PAL8-V50X 13-JUL-87 PAGE 2

		/	WHEN CREATING THE DESCENDANT DECODED FILE,  THE  USER  MAY  SPECIFY EITHER THE
		/	IMBEDDED FILENAME OR AN ALTERNATE FILENAME ON EITHER THE DEFAULT (DSK:) DEVICE
		/	OR A SPECIFIED DEVICE: 

		/	.RUN DEV DECODE		INVOKE PROGRAM.
		/	*INPUT			INPUT IS DECODED INTO IMBEDDED NAME ON DSK: (DEFAULT).
		/	*DEV:OUTPUT.EX<INPUT	INPUT IS DECODED INTO OUTPUT.EX ON DEVICE DEV:.
		/	*DEV:<INPUT		INPUT IS DECODED INTO IMBEDDED NAME ON DEVICE DEV:.
		/	*DEV:<INPUT=NNNN/I	**** SPECIAL IMAGE TRANSFER MODE **** INPUT IS DECODED
		/				INTO  RECORD 0000-[NNNN-1] ON DEVICE DEV:.  THE  =NNNN
		/				VALUE SHOULD BE CAREFULLY CHOSEN LARGE ENOUGH TO WRITE
		/				ALL  DATA  RECORDS,  BUT  NEED NOT BE STATED  EXACTLY.
		/				(THE ENCODE PROGRAM  REQUIRES PRECISE STATEMENT OF THE
		/				LENGTH  IN IMAGE TRANSFER ENCODING MODE.    ****  NOTE
		/				****  THIS  METHOD  VIOLATES ALL OS/8 DEVICE STRUCTURE
		/				AND  IS  MEANT  FOR TRANSFER OF COMPLETE DEVICE IMAGES
		/				ONLY;  USE WITH CARE!
		/	*DEV:<INPUT=NNNN/I/1	**** SPECIAL IMAGE TRANSFER  MODE **** SAME AS REGULAR
		/				IMAGE MODE EXCEPT ONLY THE FIRST  HALF  OF THE DATA IS
		/				USED.  NOTE THAT THE =NNNN VALUE MUST BE GIVEN EXACTLY
		/				BECAUSE IT IS USED TO CALCULATE THE APPROX.  1/2 VALUE
		/				ACTUALLY  USED  IN  THIS HALF OF THE OVERALL TRANSFER.
		/				THIS  MODE  SHOULD  BE USED WITH FILES CREATED FOR THE
		/				EXPRESS PURPOSE  OF  TRANSMISSION BY HALVES ONLY;  USE
		/				WITH CARE!
		/	*DEV:<INPUT=NNNN/I/2	**** SPECIAL IMAGE  TRANSFER MODE **** SAME AS REGULAR
		/				IMAGE MODE EXCEPT ONLY THE SECOND  HALF OF THE DATA IS
		/				USED.  NOTE THAT THE =NNNN VALUE MUST BE GIVEN EXACTLY
		/				BECAUSE IT IS USED TO CALCULATE THE STARTING RECORD OF
		/				THE APPROX.  1/2 VALUE ACTUALLY USED IN  THIS  HALF OF
		/				THE OVERALL TRANSFER.    THIS MODE SHOULD BE USED WITH
		/				FILES CREATED FOR THE EXPRESS PURPOSE OF  TRANSMISSION
		/				BY HALVES ONLY;  USE WITH CARE!  NOTE THAT  THERE MUST
		/				BE TWO  FILES  CREATED,  ONE  USING /I/1 AND THE OTHER
		/				USING  /I/2 TO  COMPLETELY  TRANSFER  A  DEVICE  IMAGE
		/				UNLESS /I IS USED ALONE!
		/	*OUTPUT.EX<INPUT$	INPUT IS  DECODED  INTO  OUTPUT.EX ON DSK:  (DEFAULT).
		/				THE <ESC> CHARACTER  WAS  USED  TO  TERMINATE THE LINE
		/				(THIS IS SIGNIFIED BY $).  THIS CAUSES PROGRAM EXIT.
		/	.			PROGRAM EXITS NORMALLY.

/	OS/8 DECODING PROGRAM		  PAL8-V50X 13-JUL-87 PAGE 3

		/	INPUT  FILE  ASSUMES  .EN  EXTENSION;  THERE IS NO ASSUMED  OUTPUT  EXTENSION.
		/	IMAGE TRANSFER MODE DOESN'T USE OUTPUT FILENAMES, AS THE TRANSFER DESTROYS THE
		/	OS/8 FILE STRUCTURE (POSSIBLY PRESENT) ON THE DEVICE.

		/	PROGRAM EXIT IS THE NORMAL  OS/8 METHOD OF EITHER PRESSING <^C> ON THE CONSOLE
		/	KEYBOARD DURING THE COMMAND, OR ENDING  THE  COMMAND  INPUT LINE WITH AN <ESC>
		/	CHARACTER.

		/	THIS PROGRAM  SUPPORTS  A PROPER SUBSET OF THE ASCII ENCODING SCHEME DISCUSSED
		/	BY CHARLES LASNER  AND  FRANK  DA  CRUZ.  THE SCHEME USED IS FIVE-BIT ENCODING
		/	WITH COMPRESSION, (AS OPPOSED  TO SIX-BIT WITHOUT COMPRESSION AS USED IN PRIOR
		/	VERSIONS).

		/	RESTRICTIONS:

		/	A)	SUPPORTS ONLY ONE DECODABLE FILE PER ENCODED FILE.

		/	B)	IGNORES ALL (END ) COMMANDS.

		/	C)	<CR> <LF> < ALWAYS INDICATES ENCODED DATA LINES;  NO CHECK IS MADE FOR
		/		WHETHER THE > IS ON THE SAME LINE AS THE <.

		/	D) 	PDP-8 GENERATED CHECKSUM DATA MUST  BE  THE  FINAL DATA IN THE FILE IN
		/		THE  PROPER  FORMAT:    ZCCCCCCCCCCCC  WHERE  CCCCCCCCCCCC    IS   THE
		/		TWELVE-CHARACTER PDP-8 CHECKSUM DATA.

		/	IF THE ENCODED FILE IS PASSED THROUGH ANY  INTERMEDIARY  PROCESS THAT MODIFIES
		/	THE CONTENTS IN A WAY THAT INTERFERES WITH ANY  OF  THE  ABOVE,  THIS DECODING
		/	PROGRAM  WILL  FAIL.   IT IS THE USER'S RESPONSIBILITY TO  EDIT  OUT  UNWANTED
		/	CHANGES TO THE ENCODED FILE.  ALL OTHER ASPECTS OF THE  PROTOCOL  ARE  OBEYED,
		/	SUCH AS IMBEDDED <FF>, EXTRA <CR> <LF>, OR TRAILING SPACES HAVE NO  EFFECT  ON
		/	THE RELIABILITY OF THE DECODING PROCESS, ETC.

/	OS/8 DECODING PROGRAM		  PAL8-V50X 13-JUL-87 PAGE 4

		/	ERROR MESSAGES.

		/	ANY MESSAGE  PRINTED  IS A FATAL ERROR MESSAGE.  ALL MESSAGES ARE THE STANDARD
		/	OS/8 "USER" ERROR  MESSAGES OF THE FORM:  USER ERROR X AT AAAAA WHERE X IS THE
		/	ERROR NUMBER AND AAAAA  IS  THE  PROGRAM ADDRESS WHERE THE ERROR WAS DETECTED.
		/	THE FOLLOWING USER ERRORS ARE DEFINED:

		/	ERROR NUMBER		PROBABLE CAUSE

		/	0			TOO MANY OUTPUT FILES.

		/	1			NO INPUT FILE OR TOO MANY INPUT FILES.

		/	2			IMBEDDED OUTPUT FILENAME FORMAT ERROR.

		/	3			I/O ERROR WHILE LOCATING IMBEDDED OUTPUT FILENAME.

		/	4			ERROR WHILE FETCHING FILE HANDLER.

		/	5			ERROR WHILE ATTEMPTING TO ENTER OUTPUT FILE.

		/	6			OUTPUT FILE LARGER THAN AVAILABLE FILE SPACE.

		/	7			ERROR WHILE CLOSING THE OUTPUT FILE.

		/	8			I/O ERROR WHILE DECODING FILE DATA OR BAD DATA.

		/	ASSEMBLY INSTRUCTIONS.

		/	IT IS  ASSUMED  THE  SOURCE  FILE  K12DEC.PAL  HAS  BEEN  MOVED AND RENAMED TO
		/	DSK:DECODE.PA.

		/	.PAL DECODE<DECODE	ASSEMBLE SOURCE PROGRAM
		/	.LOAD DECODE		LOAD THE BINARY FILE
		/	.SAVE DEV DECODE=0	SAVE THE CORE-IMAGE FILE

/	OS/8 DECODING PROGRAM		  PAL8-V50X 13-JUL-87 PAGE 5

		/	DEFINITIONS.

	0004		CLOSE=	4			/CLOSE OUTPUT FILE
	0005		DECODE=	5			/CALL COMMAND DECODER
	0003		ENTER=	3			/ENTER TENTATIVE FILE
	7646		EQUWRD=	7646			/EQUALS PARAMETER HERE IN TABLE FIELD
	0001		FETCH=	1			/FETCH HANDLER
	7200		IHNDBUF=7200			/INPUT HANDLER BUFFER
	6200		INBUFFE=6200			/INPUT BUFFER
	7617		INFILE=	7617			/INPUT FILE INFORMATION HERE
	0012		INQUIRE=12			/INQUIRE ABOUT HANDLER
	7201		NL0001=	CLA IAC			/LOAD AC WITH 0001
	7326		NL0002=	CLA CLL CML RTL		/LOAD AC WITH 0002
	7330		NL4000=	CLA CLL CML RAR		/LOAD AC WITH 4000
	7344		NL7776=	CLA CLL CMA RAL		/LOAD AC WITH 7776
	7240		NL7777=	CLA CMA			/LOAD AC WITH 7777
	6600		OHNDBUF=6600			/OUTPUT HANDLER BUFFER
	5600		OUTBUFF=5600			/OUTPUT BUFFER
	7600		OUTFILE=7600			/OUTPUT FILE INFORMATION HERE
	0000		PRGFLD=	00			/PROGRAM FIELD
	0013		RESET=	13			/RESET SYSTEM TABLES
	7600		SBOOT=	7600			/MONITOR EXIT
	7643		SWAL=	7643			/A-/L SWITCHES HERE IN TABLE FIELD
	7645		SWY9=	7645			/Y-/9 SWITCHES HERE IN TABLE FIELD
	0010		TBLFLD=	10			/COMMAND DECODER TABLE FIELD
	7642		TERMWRD=7642			/TERMINATOR WORD
	0007		USERROR=7			/USER SIGNALLED ERROR
	7700		USR=	7700			/USR ENTRY POINT
	0010		USRFLD=	10			/USR FIELD
	0105		WIDTH=	107-2			/69 DATA CHARACTERS PER LINE (TOTAL 71)
	4000		WRITE=	4000			/I/O WRITE BIT

/	OS/8 DECODING PROGRAM		  PAL8-V50X 13-JUL-87 PAGE 6

	0000		*0				/START AT THE BEGINNING

	0010		*10				/DEFINE AUTO-INDEX AREA

000010  0000	XR1,	.-.				/AUTO-INDEX NUMBER 1
000011  0000	XR2,	.-.				/AUTO-INDEX NUMBER 2

	0020		*20				/GET PAST AUTO-INDEX AREA

000020  0000	BUFPTR,	.-.				/OUTPUT BUFFER POINTER
000021  0000	CCNT,	.-.				/CHECKSUM COUNTER
000022  0000	CHKSUM,	ZBLOCK	5			/CHECKSUM TEMPORARY
000027  0000	CHRCNT,	.-.				/CHARACTER COUNTER
000030  0000	CSUMTMP,.-.				/CHECKSUM TEMPORARY
000031  0000	DANGCNT,.-.				/DANGER COUNT
000032  0000	DATCNT,	.-.				/DATA COUNTER
000033  0000	DSTATE,	.-.				/DATA STATE VARIABLE
000034  0000	IDNUMBE,.-.				/INPUT DEVICE NUMBER
000035  0000	IMSW,	.-.				/IMAGE-MODE SWITCH
000036  0000	INITFLA,.-.				/INITIALIZE INPUT FLAG
000037  0000	INPUT,	.-.				/INPUT HANDLER POINTER
000040  0000	INRECOR,.-.				/INPUT RECORD
000041  0000	FCHKSUM,ZBLOCK	5			/FILE CHECKSUM
000046  0000	FNAME,	ZBLOCK	4			/OUTPUT FILENAME
000052  0000	GWTMP1,	.-.				/GETWORD TEMPORARY
000053  0000	GWTMP2,	.-.				/GETWORD TEMPORARY
000054  0000	GWVALUE,.-.				/LATEST WORD VALUE
000055  0000	ODNUMBE,.-.				/OUTPUT DEVICE NUMBER
000056  0000	OUTPUT,	.-.				/OUTPUT HANDLER POINTER
000057  0000	OUTRECO,.-.				/OUTPUT RECORD
000060  0000	PUTEMP,	.-.				/OUTPUT TEMPORARY
000061  0000	PUTPTR,	.-.				/OUTPUT POINTER
000062  0000	THIRD,	.-.				/THIRD BYTE TEMPORARY

		/	STATE TABLE.

000063  1215	P,	SCANIT				/0000 LOOKING FOR "(" OR "<"
000064  1225		FNDCOMMAND			/0001 FOUND "(" AND NOW LOOKING FOR ")"
000065  1232		FNDCEND				/0002 FOUND ")" AND NOW LOOKING FOR <CR>
000066  1237		FNDCR				/0003 FOUND <CR> AND NOW LOOKING FOR <LF> TO RESET
000067  1251		STORDATA			/4000 FOUND "<" AND PROCESSING 69 DATA BYTES
000070  1300		ENDATA				/4001 FOUND 69 DATA BYTES AND NOW LOOKING FOR ">"
000071  1305		ENDCR				/4002 FOUND ">" AND NOW LOOKING FOR <CR>
000072  1237		FNDCR/ENDLF			/4003 FOUND <CR> AND NOW LOOKING FOR <LF> TO RESET

/	OS/8 DECODING PROGRAM		  PAL8-V50X 13-JUL-87 PAGE 7

	0200		PAGE				/START AT THE USUAL PLACE

000200  7000	BEGIN,	NOP				/HERE IN CASE WE'RE CHAINED TO
000201  7200		CLA				/CLEAN UP
000202  6212	START,	CIF	USRFLD			/GOTO USR FIELD
000203  4577		JMS I	[USR]			/CALL USR ROUTINE
000204  0005		DECODE				/WANT COMMAND DECODER
000205  0516		"E^100+"N-300			/.EN IS DEFAULT EXTENSION
000206  6211		CDF	TBLFLD			/GOTO TABLE FIELD
000207  1777		TAD I	(TERMWRD)		/GET TERMINATOR WORD
000210  7710		SPA CLA				/SKIP IF <CR> TERMINATED THE LINE
000211  3324		DCA	EXITZAP			/ELSE CAUSE EXIT LATER
000212  3035		DCA	IMSW			/CLEAR IMAGE-MODE; MIGHT GET SET LATER THOUGH
000213  1776		TAD I	(OUTFILE)		/GET FIRST OUTPUT FILE DEVICE WORD
000214  7450		SNA				/SKIP IF FIRST OUTPUT FILE PRESENT
000215  5326		JMP	TSTMORE			/JUMP IF NOT THERE
000216  0176		AND	[17]			/JUST DEVICE BITS
000217  3055	ODNULL,	DCA	ODNUMBER		/SAVE OUTPUT DEVICE NUMBER
000220  1775		TAD I	(OUTFILE+5)		/GET SECOND OUTPUT FILE DEVICE WORD
000221  7450		SNA				/SKIP IF THERE
000222  1774		TAD I	(OUTFILE+12)		/ELSE GET THIRD OUTPUT FILE DEVICE WORD
000223  7640		SZA CLA				/SKIP IF BOTH NOT PRESENT
000224  5773		JMP I	(OUTERR)		/ELSE COMPLAIN
000225  1772		TAD I	(INFILE)		/GET FIRST INPUT FILE DEVICE WORD
000226  7450		SNA				/SKIP IF PRESENT
000227  5771		JMP I	(INERR)			/JUMP IF NOT
000230  0176		AND	[17]			/JUST DEVICE BITS
000231  3034		DCA	IDNUMBER		/SAVE INPUT DEVICE NUMBER
000232  1770		TAD I	(INFILE+2)		/GET SECOND INPUT FILE DEVICE WORD
000233  7640		SZA CLA				/SKIP IF ONLY ONE INPUT FILE
000234  5771		JMP I	(INERR)			/ELSE COMPLAIN
000235  1767		TAD I	(INFILE+1)		/GET FIRST INPUT FILE STARTING RECORD
000236  3040		DCA	INRECORD		/SET IT UP
000237  6201		CDF	PRGFLD			/BACK TO OUR FIELD
000240  6212		CIF	USRFLD			/GOTO USR FIELD
000241  4577		JMS I	[USR]			/CALL USR ROUTINE
000242  0013		RESET				/RESET SYSTEM TABLES

/	OS/8 DECODING PROGRAM		  PAL8-V50X 13-JUL-87 PAGE 8

000243  1366		TAD	(IHNDBUFFER+1)		/GET INPUT BUFFER POINTER+TWO-PAGE BIT
000244  3251		DCA	IHPTR			/STORE IN-LINE
000245  1034		TAD	IDNUMBER		/GET INPUT DEVICE NUMBER
000246  6212		CIF	USRFLD			/GOTO USR FIELD
000247  4577		JMS I	[USR]			/CALL USR ROUTINE
000250  0001		FETCH				/FETCH HANDLER
000251  0000	IHPTR,	.-.				/WILL BE BUFFER POINTER+TWO-PAGE BIT
000252  5765		JMP I	(FERROR)		/FETCH ERROR
000253  1251		TAD	IHPTR			/GET RETURNED ADDRESS
000254  3037		DCA	INPUT			/STORE AS INPUT HANDLER ADDRESS
000255  4764		JMS I	(GEOFILE)		/GET OUTPUT FILE INFORMATION
000256  1363		TAD	(OHNDBUFFER+1)		/GET BUFFER POINTER+TWO-PAGE BIT
000257  3264		DCA	OHPTR			/STORE IN-LINE
000260  1055		TAD	ODNUMBER		/GET OUTPUT DEVICE NUMBER
000261  6212		CIF	USRFLD			/GOTO USR FIELD
000262  4577		JMS I	[USR]			/CALL USR ROUTINE
000263  0001		FETCH				/FETCH HANDLER
000264  0000	OHPTR,	.-.				/WILL BE BUFFER POINTER+TWO-PAGE BIT
000265  5765		JMP I	(FERROR)		/FETCH ERROR
000266  1264		TAD	OHPTR			/GET RETURNED ADDRESS
000267  3056		DCA	OUTPUT			/STORE AS OUTPUT HANDLER ADDRESS
000270  1035		TAD	IMSW			/GET IMAGE-MODE SWITCH
000271  7650		SNA CLA				/SKIP IF SET
000272  5305		JMP	NOIMAGE			/JUMP IF NOT

		/	IF /2 IS SET,  THE  DATA  STARTS  HALF-WAY  INTO THE IMAGE.  OTHER IMAGE MODES
		/	START AT RECORD 0000.

000273  6211		CDF	TBLFLD			/GOTO TABLE FIELD
000274  1575		TAD I	[SWY9]			/GET /Y-/9 SWITCHES
000275  0362		AND	(200)			/JUST /2 SWITCH
000276  7650		SNA CLA				/SKIP IF SET
000277  5302		JMP	IMAGE1			/JUMP IF /1 OR NEITHER /1, /2 SET
000300  1574		TAD I	[EQUWRD]		/GET EQUALS PARAMETER
000301  7110		CLL RAR				/%2
000302  3057	IMAGE1,	DCA	OUTRECORD		/STORE STARTING OUTPUT RECORD
000303  6201		CDF	PRGFLD			/BACK TO OUR FIELD
000304  7410		SKP				/DON'T ENTER FILE NAME
000305  4761	NOIMAGE,JMS I	(FENTER)		/ENTER THE TENTATIVE FILE NAME
000306  3033		DCA	DSTATE			/SET INITIAL DATA STATE
000307  4760		JMS I	(CLRCHKSUM)		/CLEAR OUT CHECKSUM
000310  4757		JMS I	(DECODIT)		/GO DO THE ACTUAL DECODING
000311  5756		JMP I	(PROCERR)		/ERROR WHILE DECODING
000312  1035		TAD	IMSW			/GET IMAGE-MODE SWITCH
000313  7640		SZA CLA				/SKIP IF CLEAR
000314  5324		JMP	EXITZAP			/JUMP IF SET
000315  1055		TAD	ODNUMBER		/GET OUTPUT DEVICE NUMBER
000316  6212		CIF	USRFLD			/GOTO USR FIELD
000317  4577		JMS I	[USR]			/CALL USR ROUTINE
000320  0004		CLOSE				/CLOSE OUTPUT FILE
000321  0046		FNAME				/POINTER TO FILENAME
000322  0000	OUTCNT,	.-.				/WILL BE ACTUAL COUNT
000323  5755		JMP I	(CLSERR)		/CLOSE ERROR
000324  5202	EXITZAP,JMP	START			/**** <ESC> TERMINATION **** 0000
000325  5776		JMP I	(SBOOT)			/EXIT TO MONITOR

/	OS/8 DECODING PROGRAM		  PAL8-V50X 13-JUL-87 PAGE 9

		/	COMES HERE TO TEST FOR NULL LINE.

000326  1775	TSTMORE,TAD I	(OUTFILE+5)		/GET SECOND OUTPUT FILE DEVICE WORD
000327  7450		SNA				/SKIP IF PRESENT
000330  1774		TAD I	(OUTFILE+12)		/ELSE GET THIRD OUTPUT FILE DEVICE WORD
000331  7640		SZA CLA				/SKIP IF NO OUTPUT FILES
000332  5773		JMP I	(OUTERR)		/ELSE COMPLAIN OF SECOND/THIRD (WITHOUT FIRST) OUTPUT 
000333  1772		TAD I	(INFILE)		/GET FIRST OUTPUT FILE DEVICE WORD
000334  7640		SZA CLA				/SKIP IF NO INPUT FILES
000335  5217		JMP	ODNULL			/JUMP IF INPUT WITHOUT OUTPUT
000336  6201		CDF	PRGFLD			/BACK TO OUR FIELD
000337  5324		JMP	EXITZAP			/MIGHT BE LAST TIME, SO GO THERE FIRST

000355  0402
000356  0400
000357  0423
000360  1312
000361  1721
000362  0200
000363  6601
000364  1400
000365  0411
000366  7201
000367  7620
000370  7621
000371  0414
000372  7617
000373  0415
000374  7612
000375  7605
000376  7600
000377  7642
	0400		PAGE

/	OS/8 DECODING PROGRAM		  PAL8-V50X 13-JUL-87 PAGE 10

		/	ERROR WHILE PROCESSING INPUT FILE.

000400  7326	PROCERR,NL0002				/SET INCREMENT
000401  7410		SKP				/DON'T USE NEXT

		/	ERROR WHILE CLOSING THE OUTPUT FILE.

000402  7201	CLSERR,	NL0001				/SET INCREMENT
000403  7410		SKP				/DON'T CLEAR IT

		/	OUTPUT FILE TOO LARGE ERROR.

000404  7200	SIZERR,	CLA				/CLEAN UP
000405  1173		TAD	[3]			/SET INCREMENT
000406  7410		SKP				/DON'T USE NEXT

		/	ENTER ERROR.

000407  7326	ENTERR,	NL0002				/SET INCREMENT
000410  7410		SKP				/DON'T USE NEXT

		/	HANDLER FETCH ERROR.

000411  7201	FERROR,	NL0001				/SET INCREMENT

		/	I/O ERROR WHILE PROCESSING (FILE ) COMMAND.

000412  7001	NIOERR,	IAC				/SET INCREMENT

		/	FORMAT ERROR WHILE PROCESSING (FILE ) COMMAND.

000413  7001	CHARERR,IAC				/SET INCREMENT

		/	INPUT FILESPEC ERROR.

000414  7001	INERR,	IAC				/SET INCREMENT

		/	OUTPUT FILESPEC ERROR.

000415  3222	OUTERR,	DCA	ERRNUMBER		/STORE ERROR NUMBER
000416  6201		CDF	PRGFLD			/ENSURE OUR FIELD
000417  6212		CIF	USRFLD			/GOTO USR FIELD
000420  4577		JMS I	[USR]			/CALL USR ROUTINE
000421  0007		USERROR				/USER ERROR
000422  0000	ERRNUMB,.-.				/WILL BE PASSED ERROR NUMBER

/	OS/8 DECODING PROGRAM		  PAL8-V50X 13-JUL-87 PAGE 11

000423  0000	DECODIT,.-.				/DECODING ROUTINE
000424  1057		TAD	OUTRECORD		/GET STARTING RECORD OF TENTATIVE FILE
000425  3252		DCA	PUTRECORD		/STORE IN-LINE
000426  3777		DCA I	(OUTCNT)		/CLEAR ACTUAL FILE LENGTH
000427  7240		NL7777				/SETUP THE
000430  3036		DCA	INITFLAG		/INITIALIZE FLAG
000431  1376		TAD	(GWLOOP)		/INITIALIZE THE
000432  3775		DCA I	(GWNEXT)		/DECODE PACK ROUTINE
000433  1251	PUTNEWR,TAD	POUTBUFFER/(OUTBUFFER)	/SETUP THE
000434  3061		DCA	PUTPTR			/OUTPUT BUFFER POINTER
000435  4774	PUTLOOP,JMS I	(GETWORD)		/GET A WORD
000436  3461		DCA I	PUTPTR			/STORE IT
000437  2061		ISZ	PUTPTR			/BUMP TO NEXT
000440  1061		TAD	PUTPTR			/GET THE POINTER
000441  1373		TAD	(-2^200-OUTBUFFER)	/COMPARE TO LIMIT
000442  7640		SZA CLA				/SKIP IF AT END
000443  5235		JMP	PUTLOOP			/KEEP GOING
000444  2031		ISZ	DANGCNT			/TOO MANY RECORDS?
000445  7410		SKP				/SKIP IF NOT
000446  5772		JMP I	(SIZERROR)		/NOT ENOUGH SPACE AVAILABLE
000447  4456		JMS I	OUTPUT			/CALL OUTPUT HANDLER
000450  4200		2^100+WRITE			/WRITE LATEST RECORD
000451  5600	POUTBUF,OUTBUFFER			/OUTPUT BUFFER ADDRESS
000452  0000	PUTRECO,.-.				/WILL BE LATEST RECORD NUMBER
000453  5623	DECERR,	JMP I	DECODIT			/I/O ERROR
000454  2252		ISZ	PUTRECORD		/BUMP TO NEXT RECORD
000455  7000		NOP				/JUST IN CASE
000456  2777		ISZ I	(OUTCNT)		/BUMP ACTUAL LENGTH
000457  5233		JMP	PUTNEWRECORD		/GO DO ANOTHER ONE

		/	GOOD RETURN HERE.

000460  2223	DECBMP,	ISZ	DECODIT			/BUMP TO GOOD RETURN
000461  5623		JMP I	DECODIT			/RETURN

/	OS/8 DECODING PROGRAM		  PAL8-V50X 13-JUL-87 PAGE 12

		/	OS/8 FILE UNPACK ROUTINE.

000462  0000	GETBYTE,.-.				/GET A BYTE ROUTINE
000463  7650		SNA CLA				/INITIALIZING?
000464  5725		JMP I	PUTC			/NO, GO GET NEXT BYTE
000465  1040		TAD	INRECORD		/GET STARTING RECORD OF INPUT FILE
000466  3272		DCA	GETRECORD		/STORE IN-LINE
000467  4437	GETNEWR,JMS I	INPUT			/CALL I/O HANDLER
000470  0200		2^100				/READ TWO PAGES INTO BUFFER
000471  6200		INBUFFER			/BUFFER ADDRESS
000472  0000	GETRECO,.-.				/WILL BE LATEST RECORD NUMBER
000473  5662		JMP I	GETBYTE			/INPUT ERROR!
000474  1371		TAD	(INBUFFER)		/SETUP THE
000475  3020		DCA	BUFPTR			/BUFFER POINTER
000476  3062	GETLOOP,DCA	THIRD			/CLEAR THIRD BYTE NOW
000477  4311		JMS	PUTONE			/OBTAIN AND SEND BACK FIRST BYTE
000500  4311		JMS	PUTONE			/OBTAIN AND SEND BACK SECOND BYTE
000501  1062		TAD	THIRD			/GET THIRD BYTE
000502  4325		JMS	PUTC			/SEND IT BACK
000503  1020		TAD	BUFPTR			/GET THE POINTER
000504  1370		TAD	(-2^200-INBUFFER)	/COMPARE TO LIMIT
000505  7640		SZA CLA				/SKIP IF AT END
000506  5276		JMP	GETLOOP			/KEEP GOING
000507  2272		ISZ	GETRECORD		/BUMP TO NEXT RECORD
000510  5267		JMP	GETNEWRECORD		/GO DO ANOTHER ONE

000511  0000	PUTONE,	.-.				/SEND BACK A BYTE ROUTINE
000512  1420		TAD I	BUFPTR			/GET LATEST WORD
000513  0367		AND	(7400)			/JUST THIRD-BYTE NYBBLE
000514  7104		CLL RAL				/MOVE UP
000515  1062		TAD	THIRD			/GET OLD NYBBLE (IF ANY)
000516  7006		RTL;RTL				/MOVE UP NYBBLE BITS
000517  7006
000520  3062		DCA	THIRD			/SAVE FOR NEXT TIME
000521  1420		TAD I	BUFPTR			/GET LATEST WORD AGAIN
000522  4325		JMS	PUTC			/SEND BACK CURRENT BYTE
000523  2020		ISZ	BUFPTR			/BUMP TO NEXT WORD
000524  5711		JMP I	PUTONE			/RETURN

000525  0000	PUTC,	.-.				/SEND BACK LATEST BYTE ROUTINE
000526  0366		AND	(177)			/KEEP ONLY GOOD BITS
000527  1365		TAD	(-"Z!300)		/COMPARE TO <^Z>
000530  7450		SNA				/SKIP IF NOT ASCII <EOF>
000531  5334		JMP	GETEOF			/JUMP IF ASCII MODE <EOF>
000532  1364		TAD	("Z&37)			/RESTORE THE CHARACTER
000533  2262		ISZ	GETBYTE			/BUMP PAST <EOF> RETURN
000534  2262	GETEOF,	ISZ	GETBYTE			/BUMP PAST I/O ERROR RETURN
000535  5662		JMP I	GETBYTE			/RETURN TO MAIN CALLER

/	OS/8 DECODING PROGRAM		  PAL8-V50X 13-JUL-87 PAGE 13

000564  0032
000565  7746
000566  0177
000567  7400
000570  1200
000571  6200
000572  0404
000573  1600
000574  0600
000575  0602
000576  0637
000577  0322
	0600		PAGE

/	OS/8 DECODING PROGRAM		  PAL8-V50X 13-JUL-87 PAGE 14

		/	GET A DECODED WORD ROUTINE.

000600  0000	GETWORD,.-.				/GET A WORD ROUTINE
000601  5602		JMP I	GWNEXT			/GO WHERE YOU SHOULD GO

000602  0000	GWNEXT,	.-.				/EXIT ROUTINE
000603  7420		SNL				/SKIP IF CHECKSUM PREVENTED
000604  4777		JMS I	(DOCHECK)		/ELSE DO CHECKSUM
000605  5600		JMP I	GETWORD			/RETURN TO MAIN CALLER

		/	COMES HERE TO PROCESSED COMPRESSED DATA.

000606  4776	GWX,	JMS I	(GETCHR)		/GET NEXT CHARACTER
000607  4775		JMS I	(GWORD0)		/GET 12-BIT WORD
000610  4777		JMS I	(DOCHECK)		/INCLUDE IN CHECKSUM
000611  3054		DCA	GWVALUE			/SAVE AS COMPRESSED VALUE
000612  1053		TAD	GWTMP2			/GET LATEST CHARACTER
000613  0172		AND	[7]			/ISOLATE BITS[9-11]
000614  7112		CLL RTR;RTR			/BITS[9-11] => AC[0-2]
000615  7012
000616  3052		DCA	GWTMP1			/SAVE FOR NOW
000617  4322		JMS	GBIHEXBINARY		/GET A CHARACTER
000620  7106		CLL RTL;RTL			/BITS[7-11] => AC[3-7]
000621  7006
000622  1052		TAD	GWTMP1			/ADD ON BITS[0-2]
000623  4777		JMS I	(DOCHECK)		/INCLUDE IN CHECKSUM
000624  7112		CLL RTR;RTR			/BITS[0-7] => AC[4-11]
000625  7012
000626  7450		SNA				/SKIP IF NOT 256
000627  1171		TAD	[400]			/000 => 256
000630  7041		CIA				/INVERT FOR COUNTING
000631  3052		DCA	GWTMP1			/SAVE AS REPEAT COUNTER
000632  1054	GWXLUP,	TAD	GWVALUE			/GET THE VALUE
000633  7120		STL				/PREVENT CHECKSUMMING IT
000634  4202		JMS	GWNEXT			/RETURN IT TO THEM
000635  2052		ISZ	GWTMP1			/DONE ENOUGH?
000636  5232		JMP	GWXLUP			/NO, KEEP GOING

/	OS/8 DECODING PROGRAM		  PAL8-V50X 13-JUL-87 PAGE 15

		/	COMES HERE TO INITIATE ANOTHER DATA GROUP.

000637  4776	GWLOOP,	JMS I	(GETCHR)		/GET LATEST FILE CHARACTER
000640  1374		TAD	(-"Z!200)		/COMPARE TO EOF INDICATOR
000641  7450		SNA				/SKIP IF OTHER
000642  5262		JMP	GWZ			/JUMP IF IT MATCHES
000643  1373		TAD	(-"X+"Z)		/COMPARE TO COMPRESSION INDICATOR
000644  7650		SNA CLA				/SKIP IF OTHER
000645  5206		JMP	GWX			/JUMP IF IT MATCHES
000646  1060		TAD	PUTEMP			/GET THE CHARACTER BACK
000647  4775		JMS I	(GWORD0)		/GET A 12-BIT WORD
000650  4202		JMS	GWNEXT			/RETURN IT
000651  4772		JMS I	(GWORD1)		/GET NEXT 12-BIT WORD
000652  4202		JMS	GWNEXT			/RETURN IT
000653  4771		JMS I	(GWORD2)		/GET NEXT 12-BIT WORD
000654  4202		JMS	GWNEXT			/RETURN IT
000655  4770		JMS I	(GWORD3)		/GET NEXT 12-BIT WORD
000656  4202		JMS	GWNEXT			/RETURN IT
000657  4767		JMS I	(GWORD4)		/GET NEXT 12-BIT WORD
000660  4202		JMS	GWNEXT			/RETURN IT
000661  5237		JMP	GWLOOP			/KEEP GOING

		/	COMES HERE WHEN EOF INDICATOR FOUND.

000662  1366	GWZ,	TAD	(FCHKSUM-1)		/SETUP THE
000663  3010		DCA	XR1			/CHECKSUM POINTER
000664  4776		JMS I	(GETCHR)		/GET NEXT CHARACTER
000665  4775		JMS I	(GWORD0)		/GET A 12-BIT WORD
000666  3410		DCA I	XR1			/STORE IT
000667  4772		JMS I	(GWORD1)		/GET NEXT WORD
000670  3410		DCA I	XR1			/STORE IT
000671  4771		JMS I	(GWORD2)		/GET NEXT WORD
000672  3410		DCA I	XR1			/STORE IT
000673  4770		JMS I	(GWORD3)		/GET NEXT WORD
000674  3410		DCA I	XR1			/STORE IT
000675  4767		JMS I	(GWORD4)		/GET NEXT WORD
000676  3410		DCA I	XR1			/STORE IT
000677  1365		TAD	(CHKSUM-1)		/POINT TO
000700  3010		DCA	XR1			/CALCULATED CHECKSUM
000701  1366		TAD	(FCHKSUM-1)		/POINT TO
000702  3011		DCA	XR2			/FILE CHECKSUM
000703  1170		TAD	[-5]			/SETUP THE
000704  3021		DCA	CCNT			/COMPARE COUNT
000705  7100		CLL				/CLEAR LINK FOR TEST
000706  7004	GWCMPLP,RAL				/GET CARRY
000707  1410		TAD I	XR1			/GET A CALCULATED WORD
000710  1411		TAD I	XR2			/COMPARE TO FILE WORD
000711  7640		SZA CLA				/SKIP IF OK
000712  5764		JMP I	(DECERR)		/ELSE COMPLAIN
000713  2021		ISZ	CCNT			/DONE ALL?
000714  5306		JMP	GWCMPLP			/NO, KEEP GOING

/	OS/8 DECODING PROGRAM		  PAL8-V50X 13-JUL-87 PAGE 16

		/	THE CHECKSUM IS OK, CHECK IF FILE ENDED IN A PLAUSIBLE PLACE.

000715  1061		TAD	PUTPTR			/GET OUTPUT POINTER
000716  1363		TAD	(-OUTBUFFER-4)		/COMPARE TO LIMIT
000717  7740		SMA SZA CLA			/SKIP IF GOOD VALUE
000720  5764		JMP I	(DECERROR)		/JUMP IF NOT

		/	THE FILE ENDED OK, THERE WERE POSSIBLY A  FEW  CHARACTERS  LEFTOVER BECAUSE OF
		/	ALIGNMENT  CONSIDERATIONS.    THEY  SHOULD  BE  IGNORED SINCE OS/8  FILES  ARE
		/	MULTIPLES OF WHOLE RECORDS.

000721  5762		JMP I	(DECBMP)		/RETURN WITH ALL OK

000722  0000	GBIHEXB,.-.				/GET BINARY VALUE OF BIHEXADECIMAL CHARACTER
000723  7200		CLA				/CLEAN UP
000724  1322		TAD	GBIHEXBINARY		/GET OUR CALLER
000725  3330		DCA	BIHEXBINARY		/MAKE IT THEIRS
000726  4776		JMS I	(GETCHR)		/GET A CHARACTER
000727  7410		SKP				/DON'T EXECUTE HEADER!

000730  0000	BIHEXBI,.-.				/CONVERT BIHEXADECIMAL TO BINARY
000731  1361		TAD	(-"A!200)		/COMPARE TO ALPHABETIC LIMIT
000732  7500		SMA				/SKIP IF LESS
000733  1360		TAD	("9+1-"A)		/ELSE ADD ON ALPHABETIC OFFSET
000734  1365		TAD	(-"0+"A)		/MAKE IT BINARY, NOT ASCII
000735  3053		DCA	GWTMP2			/SAVE IT
000736  1053		TAD	GWTMP2			/GET IT BACK
000737  5730		JMP I	BIHEXBINARY		/RETURN

000760  7771
000761  7677
000762  0460
000763  2174
000764  0453
000765  0021
000766  0040
000767  1110
000770  1067
000771  1041
000772  1021
000773  0002
000774  7646
000775  1000
000776  1200
000777  1130
	1000		PAGE

/	OS/8 DECODING PROGRAM		  PAL8-V50X 13-JUL-87 PAGE 17

		/	GET  WORD[0]  ROUTINE.	  AC  MUST  ALREADY  CONTAIN THE FIRST  BI-HEXADECIMAL
		/	CHARACTER.

001000  0000	GWORD0,	.-.				/GET 12-BIT WORD[0]
001001  4777		JMS I	(BIHEXBINARY)		/CONVERT PASSED VALUE TO BINARY
001002  7112		CLL RTR;RTR;RTR			/BITS[7-11] => AC[0-4]
001003  7012
001004  7012
001005  3052		DCA	GWTMP1			/SAVE FOR NOW
001006  4776		JMS I	(GBIHEXBINARY)		/GET NEXT CHARACTER IN BINARY
001007  7106		CLL RTL				/BITS[7-11] => AC[5-9]
001010  1052		TAD	GWTMP1			/ADD ON BITS[0-4]
001011  3052		DCA	GWTMP1			/SAVE FOR NOW
001012  4776		JMS I	(GBIHEXBINARY)		/GET NEXT CHARACTER IN BINARY
001013  7012		RTR;RAR				/BITS[7-8] => AC[10-11]
001014  7010
001015  0173		AND	[3]			/ISOLATE BITS[10-11]
001016  1052		TAD	GWTMP1			/ADD ON BITS[0-9]
001017  7100		CLL				/CLEAR LINK
001020  5600		JMP I	GWORD0			/RETURN

		/	GET  WORD[1] ROUTINE.  GWORD0 MUST HAVE BEEN CALLED LAST, SO  GWTMP2  CONTAINS
		/	THE PREVIOUS CHARACTER.

001021  0000	GWORD1,	.-.				/GET 12-BIT WORD[1]
001022  1053		TAD	GWTMP2			/GET PREVIOUS CHARACTER
001023  0172		AND	[7]			/ISOLATE BITS[9-11]
001024  7112		CLL RTR;RTR			/BITS[9-11] => AC[0-2]
001025  7012
001026  3052		DCA	GWTMP1			/SAVE FOR NOW
001027  4776		JMS I	(GBIHEXBINARY)		/GET NEXT CHARACTER IN BINARY
001030  7106		CLL RTL;RTL			/BITS[7-11] => AC[3-7]
001031  7006
001032  1052		TAD	GWTMP1			/ADD ON BITS[0-2]
001033  3052		DCA	GWTMP1			/SAVE FOR NOW
001034  4776		JMS I	(GBIHEXBINARY)		/GET NEXT CHARACTER IN BINARY
001035  7110		CLL RAR				/BITS[7-10] => AC[8-11]
001036  1052		TAD	GWTMP1			/ADD ON BITS[0-7]
001037  7100		CLL				/CLEAR LINK
001040  5621		JMP I	GWORD1			/RETURN

/	OS/8 DECODING PROGRAM		  PAL8-V50X 13-JUL-87 PAGE 18

		/	GET  WORD[2]  ROUTINE.	GWORD1 MUST HAVE BEEN CALLED LAST, SO GWTMP2  CONTAINS
		/	THE PREVIOUS CHARACTER.

001041  0000	GWORD2,	.-.				/GET 12-BIT WORD[2]
001042  1053		TAD	GWTMP2			/GET PREVIOUS CHARACTER
001043  7010		RAR;CLA RAR			/BIT[11] => AC[0]
001044  7210
001045  3052		DCA	GWTMP1			/SAVE FOR NOW
001046  4776		JMS I	(GBIHEXBINARY)		/GET NEXT CHARACTER IN BINARY
001047  7106		CLL RTL;RTL;RTL			/BITS[7-11] => AC[1-5]
001050  7006
001051  7006
001052  1052		TAD	GWTMP1			/ADD ON BIT[0]
001053  3052		DCA	GWTMP1			/SAVE FOR NOW
001054  4776		JMS I	(GBIHEXBINARY)		/GET NEXT CHARACTER IN BINARY
001055  7104		CLL RAL				/BITS[7-11] => AC[6-10]
001056  1052		TAD	GWTMP1			/ADD ON BITS[0-5]
001057  3052		DCA	GWTMP1			/SAVE FOR NOW
001060  4776		JMS I	(GBIHEXBINARY)		/GET NEXT CHARACTER IN BINARY
001061  0375		AND	(20)			/ISOLATE BIT[7]
001062  7112		CLL RTR;RTR			/BIT[7] => AC[11]
001063  7012
001064  1052		TAD	GWTMP1			/ADD ON BITS[0-10]
001065  7100		CLL				/CLEAR LINK
001066  5641		JMP I	GWORD2			/RETURN

		/	GET  WORD[3]  ROUTINE.   GWORD2 MUST HAVE BEEN CALLED LAST, SO GWTMP2 CONTAINS
		/	THE PREVIOUS CHARACTER.

001067  0000	GWORD3,	.-.				/GET 12-BIT WORD[3]
001070  1053		TAD	GWTMP2			/GET PREVIOUS CHARACTER
001071  7112		CLL RTR;RTR;RAR			/BITS[8-11] => AC[0-3]
001072  7012
001073  7010
001074  3052		DCA	GWTMP1			/SAVE FOR NOW
001075  4776		JMS I	(GBIHEXBINARY)		/GET NEXT CHARACTER IN BINARY
001076  7106		CLL RTL;RAL			/BITS[7-11] => AC[4-8]
001077  7004
001100  1052		TAD	GWTMP1			/ADD ON BITS[0-3]
001101  3052		DCA	GWTMP1			/SAVE FOR NOW
001102  4776		JMS I	(GBIHEXBINARY)		/GET NEXT CHARACTER IN BINARY
001103  7012		RTR				/BITS[7-9] => AC[9-11]
001104  0172		AND	[7]			/ISOLATE BITS[9-11]
001105  1052		TAD	GWTMP1			/ADD ON BITS[0-8]
001106  7100		CLL				/CLEAR LINK
001107  5667		JMP I	GWORD3			/RETURN

/	OS/8 DECODING PROGRAM		  PAL8-V50X 13-JUL-87 PAGE 19

		/	GET WORD[4]  ROUTINE.	 GWORD3 MUST HAVE BEEN CALLED LAST, SO GWTMP2 CONTAINS
		/	THE PREVIOUS CHARACTER.

001110  0000	GWORD4,	.-.				/GET 12-BIT WORD[4]
001111  1053		TAD	GWTMP2			/GET PREVIOUS CHARACTER
001112  0173		AND	[3]			/ISOLATE BITS[10-11]
001113  7112		CLL RTR;RAR			/BITS[10-11] => AC[0-1]
001114  7010
001115  3052		DCA	GWTMP1			/SAVE FOR NOW
001116  4776		JMS I	(GBIHEXBINARY)		/GET NEXT CHARACTER IN BINARY
001117  7106		CLL RTL;RTL;RAL			/BITS[7-11] => AC[2-6]
001120  7006
001121  7004
001122  1052		TAD	GWTMP1			/ADD ON BITS[0-1]
001123  3052		DCA	GWTMP1			/SAVE FOR NOW
001124  4776		JMS I	(GBIHEXBINARY)		/GET NEXT CHARACTER IN BINARY
001125  1052		TAD	GWTMP1			/ADD ON BITS[0-6] TO BITS[7-11]
001126  7100		CLL				/CLEAR LINK
001127  5710		JMP I	GWORD4			/RETURN

001130  0000	DOCHECK,.-.				/CHECKSUM ROUTINE
001131  3030		DCA	CSUMTMP			/SAVE PASSED VALUE
001132  1374		TAD	(CHKSUM-1)		/SETUP THE
001133  3010		DCA	XR1			/INPUT POINTER
001134  1374		TAD	(CHKSUM-1)		/SETUP THE
001135  3011		DCA	XR2			/OUTPUT POINTER
001136  1170		TAD	[-5]			/SETUP THE
001137  3021		DCA	CCNT			/SUM COUNT
001140  1030		TAD	CSUMTMP			/GET THE VALUE
001141  7110		CLL RAR				/ADJUST FOR OPENING ITERATION
001142  7004	CSUMLUP,RAL				/GET CARRY
001143  1410		TAD I	XR1			/ADD ON A WORD
001144  3411		DCA I	XR2			/STORE BACK
001145  2021		ISZ	CCNT			/DONE ALL YET?
001146  5342		JMP	CSUMLUP			/NO, KEEP GOING
001147  1030		TAD	CSUMTMP			/GET LATEST VALUE
001150  5730		JMP I	DOCHECK			/RETURN

001174  0021
001175  0020
001176  0722
001177  0730
	1200		PAGE

/	OS/8 DECODING PROGRAM		  PAL8-V50X 13-JUL-87 PAGE 20

001200  0000	GETCHR,	.-.				/GET A VALID CHARACTER ROUTINE
001201  1036	GETMORE,TAD	INITFLAG		/GET INITIALIZE FLAG
001202  4567		JMS I	[GETBYTE]		/GET A CHARACTER
001203  5777		JMP I	(DECERR)		/I/O ERROR
001204  5777		JMP I	(DECERR)		/<EOF>
001205  3060		DCA	PUTEMP			/SAVE THE CHARACTER
001206  3036		DCA	INITFLAG		/CLEAR INITIALIZE FLAG
001207  1033		TAD	DSTATE			/GET DATA STATE
001210  7510		SPA				/SKIP IF NOT ONE OF THE DATA-ORIENTED STATES
001211  1376		TAD	(4004)			/ADD ON DATA-ORIENTED STATES OFFSET
001212  1375		TAD	(JMP I	P)		/SETUP JUMP INSTRUCTION
001213  3214		DCA	.+1			/STORE IN-LINE
001214  0000		.-.				/AND EXECUTE IT

		/	LOOKING FOR OPENING CHARACTER.

001215  1060	SCANIT,	TAD	PUTEMP			/GET THE CHARACTER
001216  1374		TAD	(-"<!200)		/COMPARE TO OPENING DATA CHARACTER
001217  7450		SNA				/SKIP IF NO MATCH
001220  5244		JMP	FNDATA			/JUMP IF IT MATCHES
001221  1373		TAD	(-"(+"<)		/COMPARE TO OPENING COMMAND CHARACTER
001222  7650		SNA CLA				/SKIP IF NO MATCH
001223  2033		ISZ	DSTATE			/INDICATE LOOKING FOR END OF COMMAND
001224  5201		JMP	GETMORE			/KEEP GOING

		/	FOUND OPENING COMMAND CHARACTER.

001225  1060	FNDCOMM,TAD	PUTEMP			/GET THE CHARACTER
001226  1372		TAD	(-")!200)		/COMPARE TO CLOSING COMMAND CHARACTER
001227  7650		SNA CLA				/SKIP IF NO MATCH
001230  2033		ISZ	DSTATE			/INDICATE LOOKING FOR <CR>
001231  5201		JMP	GETMORE			/KEEP GOING

		/	FOUND CLOSING COMMAND CHARACTER.

001232  1060	FNDCEND,TAD	PUTEMP			/GET THE CHARACTER
001233  1371		TAD	(-"M!300)		/COMPARE TO <CR>
001234  7650		SNA CLA				/SKIP IF NO MATCH
001235  2033		ISZ	DSTATE			/INDICATE LOOKING FOR <LF>
001236  5201		JMP	GETMORE			/KEEP GOING

		/	FOUND <CR> AFTER COMMAND.

001237  1060	FNDCR,	TAD	PUTEMP			/GET THE CHARACTER
001240  1370		TAD	(-"J!300)		/COMPARE TO <LF>
001241  7650		SNA CLA				/SKIP IF NO MATCH
001242  3033		DCA	DSTATE			/RESET TO SCANNING STATE
001243  5201		JMP	GETMORE			/KEEP GOING

/	OS/8 DECODING PROGRAM		  PAL8-V50X 13-JUL-87 PAGE 21

		/	FOUND OPENING DATA CHARACTER.

001244  1367	FNDATA,	TAD	(-WIDTH)		/SETUP THE
001245  3032		DCA	DATCNT			/DATA COUNTER
001246  7330		NL4000				/SETUP THE
001247  3033		DCA	DSTATE			/NEW STATE
001250  5201		JMP	GETMORE			/KEEP GOING

		/	PROCESSING ONE OF 69 DATA CHARACTERS.

001251  1060	STORDAT,TAD	PUTEMP			/GET THE CHARACTER
001252  1166		TAD	[-140]			/SUBTRACT UPPER-CASE LIMIT
001253  7510		SPA				/SKIP IF LOWER-CASE
001254  1165		TAD	[40]			/RESTORE UPPER-CASE
001255  1366		TAD	(100)			/RESTORE THE CHARACTER
001256  3060		DCA	PUTEMP			/SAVE IT BACK
001257  1060		TAD	PUTEMP			/GET IT AGAIN
001260  1365		TAD	(-"Z!200-1)		/SUBTRACT UPPER LIMIT
001261  7100		CLL				/CLEAR LINK FOR TEST
001262  1364		TAD	("Z-"A+1)		/ADD ON RANGE
001263  7630		SZL CLA				/SKIP IF NOT ALPHABETIC
001264  5273		JMP	ALPHAOK			/JUMP IF ALPHABETIC
001265  1060		TAD	PUTEMP			/GET THE CHARACTER
001266  1363		TAD	(-"9!200-1)		/ADD ON UPPER LIMIT
001267  7100		CLL				/CLEAR LINK FOR TEST
001270  1362		TAD	("9-"0+1)		/ADD ON RANGE
001271  7620		SNL CLA				/SKIP IF OK
001272  5201		JMP	GETMORE			/IGNORE IF NOT
001273  1060	ALPHAOK,TAD	PUTEMP			/GET THE CHARACTER
001274  2032		ISZ	DATCNT			/DONE 69 CHARACTERS?
001275  7410		SKP				/SKIP IF NOT
001276  2033		ISZ	DSTATE			/ADVANCE TO NEXT STATE
001277  5600		JMP I	GETCHR			/RETURN

		/	PROCESSED 69 DATA CHARACTERS; NOW LOOKING FOR ENDING DATA CHARACTER.

001300  1060	ENDATA,	TAD	PUTEMP			/GET THE CHARACTER
001301  1361		TAD	(-">!200)		/COMPARE TO ENDING DATA VALUE
001302  7650		SNA CLA				/SKIP IF NO MATCH
001303  2033		ISZ	DSTATE			/ELSE ADVANCE TO NEXT STATE
001304  5201		JMP	GETMORE			/KEEP GOING

		/	FOUND ENDING DATA CHARACTER; NOW LOOKING FOR <CR>.

001305  1060	ENDCR,	TAD	PUTEMP			/GET THE CHARACTER
001306  1371		TAD	(-"M!300)		/COMPARE TO <CR>
001307  7650		SNA CLA				/SKIP IF NO MATCH
001310  2033		ISZ	DSTATE			/ELSE ADVANCE TO NEXT STATE
001311  5201		JMP	GETMORE			/KEEP GOING

/	OS/8 DECODING PROGRAM		  PAL8-V50X 13-JUL-87 PAGE 22

		/	FOUND ENDING DATA CHARACTER AND <CR>; NOW LOOKING FOR <LF>.

		/ENDLF,	TAD	PUTEMP			/GET THE CHARACTER
		/	TAD	(-"J!300)		/COMPARE TO <LF>
		/	SNA CLA				/SKIP IF NO MATCH
		/	DCA	DSTATE			/RESET TO SCANNING STATE
		/	JMP	GETMORE			/KEEP GOING

001312  0000	CLRCHKS,.-.				/CLEAR CALCULATED CHECKSUM ROUTINE
001313  3022		DCA	CHKSUM+0		/CLEAR LOW-ORDER
001314  3023		DCA	CHKSUM+1		/CLEAR NEXT
001315  3024		DCA	CHKSUM+2		/CLEAR NEXT
001316  3025		DCA	CHKSUM+3		/CLEAR NEXT
001317  3026		DCA	CHKSUM+4		/CLEAR HIGH-ORDER
001320  5712		JMP I	CLRCHKSUM		/RETURN

001361  7702
001362  0012
001363  7706
001364  0032
001365  7645
001366  0100
001367  7673
001370  7766
001371  7763
001372  7727
001373  0024
001374  7704
001375  5463
001376  4004
001377  0453
	1400		PAGE

/	OS/8 DECODING PROGRAM		  PAL8-V50X 13-JUL-87 PAGE 23

001400  0000	GEOFILE,.-.				/GET OUTPUT FILE ROUTINE
001401  1055		TAD	ODNUMBER		/GET OUTPUT DEVICE NUMBER
001402  7640		SZA CLA				/SKIP IF NOT ESTABLISHED YET
001403  5224		JMP	GOTOD			/JUMP IF DETERMINED ALREADY
001404  1377		TAD	("D^100+"S-300)		/GET BEGINNING OF "DSK"
001405  3215		DCA	DEVNAME			/STORE IN-LINE
001406  1376		TAD	("K^100)		/GET REST OF "DSK"
001407  3216		DCA	DEVNAME+1		/STORE IN-LINE
001410  3217		DCA	RETVAL			/CLEAR HANDLER ENTRY WORD
001411  6201		CDF	PRGFLD			/INDICATE OUR FIELD
001412  6212		CIF	USRFLD			/GOTO USR FIELD
001413  4577		JMS I	[USR]			/CALL USR ROUTINE
001414  0012		INQUIRE				/INQUIRE ABOUT HANDLER
001415  0000	DEVNAME,ZBLOCK	2			/WILL BE DEVICE DSK
001417  0000	RETVAL,	.-.				/BECOMES HANDLER ENTRY POINT WORD
001420  7402		HLT				/DSK: NOT IN SYSTEM IS IMPOSSIBLE!
001421  1216		TAD	DEVNAME+1		/GET DEVICE NUMBER FOR DSK:
001422  0176		AND	[17]			/JUST DEVICE BITS
001423  3055		DCA	ODNUMBER		/STORE OUTPUT DEVICE
001424  6211	GOTOD,	CDF	TBLFLD			/BACK TO TABLE FIELD
001425  1775		TAD I	(OUTFILE+1)		/GET OUTPUT FILE FIRST NAME WORD
001426  7450		SNA				/SKIP IF PRESENT
001427  5241		JMP	GFLNAME			/JUMP IF NOT
001430  3046		DCA	FNAME			/MOVE TO OUR AREA
001431  1774		TAD I	(OUTFILE+2)		/GET SECOND NAME WORD
001432  3047		DCA	FNAME+1			/MOVE IT
001433  1773		TAD I	(OUTFILE+3)		/GET THIRD NAME WORD
001434  3050		DCA	FNAME+2			/MOVE IT
001435  1772		TAD I	(OUTFILE+4)		/GET EXTENSION WORD
001436  3051		DCA	FNAME+3			/MOVE IT
001437  6201	GEOFXIT,CDF	PRGFLD			/BACK TO OUR FIELD
001440  5600		JMP I	GEOFILE			/RETURN

		/	WE  MUST  TAKE  THE  FILENAME  FROM  THE IMBEDDED (FILE ) COMMAND.   THE  ONLY
		/	EXCEPTION IS IF WE ARE DOING AN IMAGE TRANSFER.

001441  1771	GFLNAME,TAD I	(SWAL)			/GET /A-/L SWITCHES
001442  0370		AND	(10)			/JUST /I BIT
001443  7640		SZA CLA				/SKIP IF NOT SET
001444  1574		TAD I	[EQUWRD]		/GET EQUALS PARAMETER
001445  7450		SNA				/SKIP IF SET TO SOMETHING
001446  5273		JMP	DOFLNAME		/JUMP IF PARAMETERS NOT SET
001447  7040		CMA				/INVERT IT
001450  3031		DCA	DANGCNT			/STORE AS DANGER COUNT
001451  2035		ISZ	IMSW			/SET IMAGE-MODE SWITCH
001452  1575		TAD I	[SWY9]			/GET /Y-/9 SWITCHES
001453  0367		AND	(600)			/JUST /1, /2 SWITCHES
001454  7450		SNA				/SKIP IF EITHER SET
001455  5237		JMP	GEOFXIT			/JUMP IF NEITHER SET
001456  0171		AND	[400]			/JUST /1 SWITCH
001457  7650		SNA CLA				/SKIP IF /1 SET
001460  5264		JMP	IM2			/JUMP IF /2 SET
001461  1574		TAD I	[EQUWRD]		/GET EQUALS PARAMETER
001462  7110		CLL RAR				/%2
001463  5270		JMP	IMCOMMON		/CONTINUE THERE

/	OS/8 DECODING PROGRAM		  PAL8-V50X 13-JUL-87 PAGE 24

001464  1574	IM2,	TAD I	[EQUWRD]		/GET EQUALS PARAMETER
001465  7110		CLL RAR				/%2
001466  7041		CIA				/SUBTRACT PART 1 VALUE
001467  1574		TAD I	[EQUWRD]		/FROM EQUALS PARAMETER
001470  7040	IMCOMMO,CMA				/INVERT IT
001471  3031		DCA	DANGCNT			/STORE AS DANGER COUNT
001472  5237		JMP	GEOFXIT			/EXIT THERE

001473  6201	DOFLNAM,CDF	PRGFLD			/BACK TO OUR FIELD
001474  7240		NL7777				/SETUP THE
001475  3036		DCA	INITFLAG		/INPUT FILE INITIALIZATION
001476  4766		JMS I	(SCNFILE)		/SCAN OFF "(FILE"

		/	HAVING FOUND THE (FILE ) COMMAND, WE MUST FIND THE FILENAME.

		/	ZERO OUT THE FILENAME AREA.

001477  1365		TAD	(-10)			/SETUP THE
001500  3027		DCA	CHRCNT			/CLEAR COUNTER
001501  1364		TAD	(ONAME-1)		/SETUP THE
001502  3010		DCA	XR1			/POINTER
001503  4763		JMS I	(CLRNAME)		/CLEAR THE NAME BUFFER

		/	SETUP FOR SCANNING THE NAME PORTION.

001504  1362		TAD	(-6)			/SETUP THE
001505  3027		DCA	CHRCNT			/SCAN COUNT
001506  1364		TAD	(ONAME-1)		/SETUP THE
001507  3010		DCA	XR1			/POINTER
001510  4761	FNCAGN,	JMS I	(GETAN)			/GET A CHARACTER
001511  5320		JMP	GOTSEPARATOR		/GOT "."; GOTO NEXT FIELD
001512  3410		DCA I	XR1			/STASH THE CHARACTER
001513  2027		ISZ	CHRCNT			/DONE ALL YET?
001514  5310		JMP	FNCAGN			/NO, KEEP GOING

		/	THROW AWAY EXTRA NAME CHARACTERS.

001515  4761	TOSSNAM,JMS I	(GETAN)			/GET A CHARACTER
001516  5320		JMP	GOTSEPARATOR		/GOT "."; GOTO NEXT FIELD
001517  5315		JMP	TOSSNAME		/KEEP GOING

		/	COMES HERE AFTER "." FOUND.

001520  4763	GOTSEPA,JMS I	(CLRNAME)		/CLEAR OUT THE REMAINING NAME FIELD
001521  7344		NL7776				/SETUP THE
001522  3027		DCA	CHRCNT			/SCAN COUNT
001523  4761	EXCAGN,	JMS I	(GETAN)			/GET A CHARACTER
001524  5564		JMP I	[CHARERROR]		/GOT "."; COMPLAIN
001525  3410		DCA I	XR1			/STASH THE CHARACTER
001526  2027		ISZ	CHRCNT			/DONE ENOUGH YET?
001527  5323		JMP	EXCAGN			/NO, KEEP GOING

/	OS/8 DECODING PROGRAM		  PAL8-V50X 13-JUL-87 PAGE 25

		/	TOSS ANY EXTRA EXTENSION CHARACTERS.

001530  4761	TOSSEXT,JMS I	(GETAN)			/GET A CHARACTER
001531  5564		JMP I	[CHARERROR]		/GOT "."; COMPLAIN
001532  5330		JMP	TOSSEXTENSION		/KEEP GOING

		/	COMES HERE WHEN TRAILING ")" IS FOUND.

001533  4763	GOTRPAR,JMS I	(CLRNAME)		/CLEAR ANY REMAINING EXTENSION CHARACTERS
001534  1760		TAD I	(ONAME)			/GET THE FIRST CHARACTER
001535  7650		SNA CLA				/SKIP IF SOMETHING THERE
001536  5564		JMP I	[CHARERROR]		/COMPLAIN IF NONE THERE
001537  1364		TAD	(ONAME-1)		/SETUP POINTER
001540  3010		DCA	XR1			/TO NAME CHARACTERS
001541  1357		TAD	(FNAME-1)		/SETUP POINTER
001542  3011		DCA	XR2			/TO PACKED NAME AREA
001543  1356		TAD	(-4)			/SETUP THE
001544  3027		DCA	CHRCNT			/MOVE COUNT
001545  1410	CHRLOOP,TAD I	XR1			/GET FIRST CHARACTER
001546  7106		CLL RTL;RTL;RTL			/MOVE UP
001547  7006
001550  7006
001551  1410		TAD I	XR1			/ADD ON SECOND CHARACTER
001552  3411		DCA I	XR2			/STORE THE PAIR
001553  2027		ISZ	CHRCNT			/DONE YET?
001554  5345		JMP	CHRLOOP			/NO, KEEP GOING
001555  5600		JMP I	GEOFILE			/YES, RETURN

001556  7774
001557  0045
001560  1711
001561  1663
001562  7772
001563  1626
001564  1710
001565  7770
001566  1600
001567  0600
001570  0010
001571  7643
001572  7604
001573  7603
001574  7602
001575  7601
001576  1300
001577  0423
	1600		PAGE

/	OS/8 DECODING PROGRAM		  PAL8-V50X 13-JUL-87 PAGE 26

001600  0000	SCNFILE,.-.				/SCAN "(FILE" ROUTINE
001601  4236	MATAGN,	JMS	GETNSPC			/GET A CHARACTER
001602  1377		TAD	(-"(!200)		/COMPARE TO "("
001603  7640		SZA CLA				/SKIP IF IT MATCHES
001604  5201		JMP	MATAGN			/JUMP IF NOT
001605  4236		JMS	GETNSPC			/GET NEXT CHARACTER
001606  1376		TAD	(-"F!300)		/COMPARE TO "F"
001607  7640		SZA CLA				/SKIP IF IT MATCHES
001610  5201		JMP	MATAGN			/JUMP IF NOT
001611  4236		JMS	GETNSPC			/GET NEXT CHARACTER
001612  1375		TAD	(-"I!300)		/COMPARE TO "I"
001613  7640		SZA CLA				/SKIP IF IT MATCHES
001614  5201		JMP	MATAGN			/JUMP IF NOT
001615  4236		JMS	GETNSPC			/GET NEXT CHARACTER
001616  1374		TAD	(-"L!300)		/COMPARE TO "L"
001617  7640		SZA CLA				/SKIP IF IT MATCHES
001620  5201		JMP	MATAGN			/JUMP IF NOT
001621  4236		JMS	GETNSPC			/GET NEXT CHARACTER
001622  1373		TAD	(-"E!300)		/COMPARE TO "E"
001623  7640		SZA CLA				/SKIP IF IT MATCHES
001624  5201		JMP	MATAGN			/JUMP IF NOT
001625  5600		JMP I	SCNFILE			/RETURN

001626  0000	CLRNAME,.-.				/NAME FIELD CLEARING ROUTINE
001627  1027		TAD	CHRCNT			/GET CHARACTER COUNTER
001630  7650		SNA CLA				/SKIP IF ANY TO CLEAR
001631  5626		JMP I	CLRNAME			/ELSE JUST RETURN
001632  3410		DCA I	XR1			/CLEAR A NAME WORD
001633  2027		ISZ	CHRCNT			/COUNT IT
001634  5232		JMP	.-2			/KEEP GOING
001635  5626		JMP I	CLRNAME			/RETURN

001636  0000	GETNSPC,.-.				/GET NON-<SPACE> CHARACTER
001637  4245	GETNAGN,JMS	GETCHAR			/GET A CHARACTER
001640  1372		TAD	(-" !200)		/COMPARE TO <SPACE>
001641  7650		SNA CLA				/SKIP IF OTHER
001642  5237		JMP	GETNAGN			/JUMP IF IT MATCHES
001643  1060		TAD	PUTEMP			/GET THE CHARACTER BACK
001644  5636		JMP I	GETNSPC			/RETURN

001645  0000	GETCHAR,.-.				/GET A CHARACTER ROUTINE
001646  7200		CLA				/CLEAN UP
001647  1036		TAD	INITFLAG		/GET INITIALIZE FLAG
001650  4567		JMS I	[GETBYTE]		/GET A CHARACTER
001651  5771		JMP I	(NIOERROR)		/COMPLAIN IF AN ERROR
001652  5564		JMP I	[CHARERROR]		/COMPLAIN IF <EOF> REACHED
001653  1166		TAD	[-140]			/COMPARE TO LOWER-CASE LIMIT
001654  7510		SPA				/SKIP IF LOWER-CASE
001655  1165		TAD	[40]			/RESTORE ORIGINAL IF UPPER-CASE
001656  0370		AND	(77)			/JUST SIX-BIT
001657  3060		DCA	PUTEMP			/SAVE IN CASE WE NEED IT
001660  3036		DCA	INITFLAG		/CLEAR INITIALIZE FLAG
001661  1060		TAD	PUTEMP			/GET IT BACK
001662  5645		JMP I	GETCHAR			/RETURN

/	OS/8 DECODING PROGRAM		  PAL8-V50X 13-JUL-87 PAGE 27

001663  0000	GETAN,	.-.				/GET ALPHANUMERIC ROUTINE
001664  4236		JMS	GETNSPC			/GET A NON-<SPACE> CHARACTER
001665  1367		TAD	(-".!200)		/COMPARE TO "."
001666  7450		SNA				/SKIP IF OTHER
001667  5663		JMP I	GETAN			/TAKE FIRST RETURN IF IT MATCHES
001670  1366		TAD	(-")+".)		/COMPARE TO ")"
001671  7450		SNA				/SKIP IF OTHER
001672  5765		JMP I	(GOTRPAREN)		/TAKE DEDICATED RETURN IF IT MATCHES
001673  1364		TAD	(-":+"))		/SUBTRACT UPPER LIMIT
001674  7100		CLL				/CLEAR LINK FOR TEST
001675  1363		TAD	(":-"0)			/ADD ON RANGE
001676  7630		SZL CLA				/SKIP IF NOT NUMERIC
001677  5306		JMP	GETANOK			/JUMP IF NUMERIC
001700  1060		TAD	PUTEMP			/GET THE CHARACTER BACK
001701  1362		TAD	(-"[!300)		/SUBTRACT UPPER LIMIT
001702  7100		CLL				/CLEAR LINK FOR TEST
001703  1361		TAD	("[-"A)			/ADD ON RANGE
001704  7620		SNL CLA				/SKIP IF ALPHABETIC
001705  5564		JMP I	[CHARERROR]		/ELSE COMPLAIN
001706  1060	GETANOK,TAD	PUTEMP			/GET GOOD ALPHANUMERIC CHARACTER
001707  2263		ISZ	GETAN			/BUMP TO SKIP RETURN
001710  5663		JMP I	GETAN			/RETURN

001711  0000	ONAME,	ZBLOCK	10			/OUTPUT NAME FIELD

001721  0000	FENTER, .-.                     	/FILE ENTER ROUTINE
001722  1360		TAD	(FNAME)			/POINT TO
001723  3331		DCA	ENTAR1			/STORED FILENAME
001724  3332		DCA	ENTAR2			/CLEAR SECOND ARGUMENT
001725  1055		TAD	ODNUMBER		/GET OUTPUT DEVICE NUMBER
001726  6212		CIF	USRFLD			/GOTO USR FIELD
001727  4577		JMS I	[USR]			/CALL USR ROUTINE
001730  0003		ENTER				/ENTER TENTATIVE FILENAME
001731  0000	ENTAR1,	.-.				/WILL POINT TO FILENAME
001732  0000	ENTAR2,	.-.				/WILL BE ZERO
001733  5757		JMP I	(ENTERR)		/ENTER ERROR
001734  1332		TAD	ENTAR2			/GET RETURNED EMPTY LENGTH
001735  7001		IAC				/ADD 2-1 FOR OS/278 CRAZINESS
001736  3031		DCA	DANGCNT			/STORE AS DANGER COUNT
001737  1331		TAD	ENTAR1			/GET RETURNED FIRST RECORD
001740  3057		DCA	OUTRECORD		/SETUP OUTPUT RECORD
001741  5721	        JMP I   FENTER          	/RETURN

/	OS/8 DECODING PROGRAM		  PAL8-V50X 13-JUL-87 PAGE 28

001757  0407
001760  0046
001761  0032
001762  7745
001763  0012
001764  7757
001765  1533
001766  0005
001767  7722
001770  0077
001771  0412
001772  7740
001773  7773
001774  7764
001775  7767
001776  7772
001777  7730
	2000		PAGE

			$				/THAT'S ALL FOLK!
000164  0413
000165  0040
000166  7640
000167  0462
000170  7773
000171  0400
000172  0007
000173  0003
000174  7646
000175  7645
000176  0017
000177  7700

/	OS/8 DECODING PROGRAM		  PAL8-V50X 13-JUL-87 PAGE 29

ALPHAO 1273      GETMOR 1201      OUTPUT 0056      
BEGIN  0200      GETNAG 1637      OUTREC 0057      
BIHEXB 0730      GETNEW 0467      P      0063      
BUFPTR 0020      GETNSP 1636      POUTBU 0451      
CCNT   0021      GETREC 0472      PRGFLD 0000      
CHARER 0413      GETWOR 0600      PROCER 0400      
CHKSUM 0022      GFLNAM 1441      PUTC   0525      
CHRCNT 0027      GOTOD  1424      PUTEMP 0060      
CHRLOO 1545      GOTRPA 1533      PUTLOO 0435      
CLOSE  0004      GOTSEP 1520      PUTNEW 0433      
CLRCHK 1312      GWCMPL 0706      PUTONE 0511      
CLRNAM 1626      GWLOOP 0637      PUTPTR 0061      
CLSERR 0402      GWNEXT 0602      PUTREC 0452      
CSUMLU 1142      GWORD0 1000      RESET  0013      
CSUMTM 0030      GWORD1 1021      RETVAL 1417      
DANGCN 0031      GWORD2 1041      SBOOT  7600      
DATCNT 0032      GWORD3 1067      SCANIT 1215      
DECBMP 0460      GWORD4 1110      SCNFIL 1600      
DECERR 0453      GWTMP1 0052      SIZERR 0404      
DECODE 0005      GWTMP2 0053      START  0202      
DECODI 0423      GWVALU 0054      STORDA 1251      
DEVNAM 1415      GWX    0606      SWAL   7643      
DOCHEC 1130      GWXLUP 0632      SWY9   7645      
DOFLNA 1473      GWZ    0662      TBLFLD 0010      
DSTATE 0033      IDNUMB 0034      TERMWR 7642      
ENDATA 1300      IHNDBU 7200      THIRD  0062      
ENDCR  1305      IHPTR  0251      TOSSEX 1530      
ENTAR1 1731      IMAGE1 0302      TOSSNA 1515      
ENTAR2 1732      IMCOMM 1470      TSTMOR 0326      
ENTER  0003      IMSW   0035      USERRO 0007      
ENTERR 0407      IM2    1464      USR    7700      
EQUWRD 7646      INBUFF 6200      USRFLD 0010      
ERRNUM 0422      INERR  0414      WIDTH  0105      
EXCAGN 1523      INFILE 7617      WRITE  4000      
EXITZA 0324      INITFL 0036      XR1    0010      
FCHKSU 0041      INPUT  0037      XR2    0011      
FENTER 1721      INQUIR 0012      
FERROR 0411      INRECO 0040      
FETCH  0001      MATAGN 1601      
FNAME  0046      NIOERR 0412      
FNCAGN 1510      NL0001 7201      
FNDATA 1244      NL0002 7326      
FNDCEN 1232      NL4000 7330      
FNDCOM 1225      NL7776 7344      
FNDCR  1237      NL7777 7240      
GBIHEX 0722      NOIMAG 0305      
GEOFIL 1400      ODNULL 0217      
GEOFXI 1437      ODNUMB 0055      
GETAN  1663      OHNDBU 6600      
GETANO 1706      OHPTR  0264      
GETBYT 0462      ONAME  1711      
GETCHA 1645      OUTBUF 5600      
GETCHR 1200      OUTCNT 0322      
GETEOF 0534      OUTERR 0415      
GETLOO 0476      OUTFIL 7600      



ERRORS DETECTED: 0
LINKS GENERATED: 0