Google
 

Trailing-Edge - PDP-10 Archives - decuslib20-01 - decus/20-0017/learns.mac
There are 2 other files named learns.mac in the archive. Click here to see a list.

	TITLE	SUBROUTINES
	SUBTTL	THAT ARE USED OFTEN

;    THE CODE ON THIS FILE WILL BE OF VERY GENERAL, OFTEN USED
; SUBROUTINES. THIS FILE WILL BE USED WITH "ACCUMU" AND OTHER
; FILES THAT MIGHT REQUIRE THESE SUBROUTINES. MAYBE AT A LATER
; DATE THIS CAN BE CODED WITH SWITCHES SO THAT ANY UN-NEEDED
; SUBROUTINES CAN BE SPECIALIZED OUT.



; #1

;    GENERAL SUBROUTINE TO INPUT ONE CHARACTER,  (SEE P. 415)


GETCHR:	0		;JSR HERE AND STORE PC
GETCNT:	SOSG	IBUF+2	;DECREMENT BYTE COUNT
	JRST	GETBUF	;BUFFER IS EMPTY
GETNXT:	ILDB	2,IBUF+1	;GET NEXT CHARACTER FROM BUFFER
	JUMPN	2,@GETCHR	;RETURN TO CALLER
	JRST	GETNXT		;IGNORE NULL AND GET NEXT CHAR.
GETBUF:	IN	2,		;CALL MONITOR TO REFILL BUFFER
	JRST	GETNXT		;RETURN HERE WHEN NEXT BUFFER FULL
	JRST	ENDTS7		;RETURN ONLY IF ERROR OR EOF
ENDTS7:	STATZ	3,740000	;CHECK FOUR ERROR BITS FIRST
	JRST	INERR		;WHERE TO GO WITH AN ERROR
	JRST	ENDFIL		;WHERE TO GO WITH END OF FILE
INERR:	HALT
	JRST	@GETCHR
ENDFIL:	MOVEI	2,32
	JRST	@GETCHR		;WAS A HALT HERE

	JRST	@GETCHR
IBUF:	BLOCK	3		;INPUT BUFFER RING HEADER


	PAGE





; #2

;   GENERAL SUBROUTINE TO OUT PUT ONE CHARACTER

PUTCHR:	0		;JSR HERE AND STORE PC
	SOSG	OBUF+2		;INCREMENT BYTE COUNT
	JRST	PUTBUF		;NO MORE ROOM, OR 1ST ONE
PUTNXT:	IDPB	3,OBUF+1	;STORE THIS CHARACTER
	JRST	@PUTCHR		;AND RETURN TO CALLER
PUTBUF:	OUT	3,		;CALLMONITOR TO EMPTY THIS BUFFER
	JRST	PUTNXT		;RETURN HERE WHEN BUFFER IS EMPTY
	JRST	OUTERR		;RETURN HERE ONLY IF ERROR
OUTERR:	HALT			;AND HALT, BUT YOU CAN CONTINUE
	JRST	@PUTCHR		;IF YOU REALLY WANT TO
OBUF:	BLOCK	3

	PAGE			;LISTING SKIPS TO HEAD OF FORM



;    THIS USES THE BUFFERED I/O TO PUT OUT A STRING OF 
;CHARACTERS THAT TERMINATE WITH A NULL.

PUTOUT:		0
	ILDB	3,16	;AC 16 HAS POINTER TO THE STRING
	JUMPE	3,+3	;JUMP TO CLOSE WHEN NULL COMES
	JSR 	PUTCHR
	JRST	.-3
	CLOSE	3,
	JRST	@PUTOUT

	PAGE


;    THIS IS FOR USING BUFFERED I/O TO GET OUT A CARRIAGE
;RETURN AND A LINE FEED.

RETFEE:		0
	MOVEI	3,15
	JSR	PUTCHR
	MOVEI	3,12
	JSR	PUTCHR
	CLOSE	3,
	JRST	@RETFEE

	PAGE


STARTS:		0
	CALLI
	INIT	2,
	SIXBIT	/TTY/
	XWD	0,IBUF
	JRST	.-3
	INIT	3,
	SIXBIT	/TTY/
	XWD	OBUF,
	JRST	.-3
	JRST	@STARTS

	PAGE






;    THIS PROGRAM WILL ACCEPT AN OPCODE, ACCUMULATOR CONTENTS, AND
; EFFECTIVE ADDRESS CONTENTS FROM THE TELETYPE. THEY WILL BE PUT 
; TOGETHER AND EXECUTED. THE RESULTANT CONTENTS OF THE ACCUMULATOR
; AND EFFECTIVE ADDRESS WILL THEN BE TYPE OUT ON TO THE TELETYPE.
;    A TYPED RUBOUT WILL ELIMINATE THAT LINE OF INPUT, AND THE WHOLE
; LINE MUST BE RETYPED.

STARTI:	CALLI
	INIT	2,
	SIXBIT	/TTY/
	XWD	0,IBUF
	JRST	.-3
	INIT	3,
	SIXBIT	/TTY/
	XWD	OBUF,
	JRST	.-3
CHANGI:	TLN			;THIS GETS CHANGED TO A  JRST
	MOVE	[JRST .+4]
	MOVEM	CHANGI
	TTCALL	3,MESS1I	;INSTRUCTIONS
	TTCALL	3,MESS2I	;MORE INSTRUCTIONS

	PAGE

;    THE OPCODE WILL BE DONE FIRST. AFTER ACCEPTING IT, A TABLE
; LOOK UP IS PERFORMED TO SEE IF IT IS ACCETABLE, AND TO GET THE
; MACHINE CODE.

OPCODI:	MOVE	17,[MOVE 13,16]

	TTCALL	3,MESS3I	;   "OPCODE"
	CLOSE	2,
	MOVEI	4,0		;0 OUT COUNTER
	MOVEM	4,UPCODI	;AND OPCODE WORD
	MOVEM	4,UPCODI+1
	MOVE	PTR1		;SET UP POINTER FOR OPCODE
	MOVEM	POINT1
MORE:	JSR	GETCHR
	CAIE	2,15		;IS IT A CARRIAGE RETURN
	JRST	COMEIN		;GO TO  "COMEIN" IF NOT
	MOVE	5,UPCODI
	SOJE	4,ONECHR	;JUMP TO ONE OF THESE WHEN 4 = 0
	SOJE	4,TWOCHR
	SOJE	4,TRECHR
	SOJE	4,FORCHR
	SOJE	4,FIVCHR
	SOJE	4,SIXCHR
	TTCALL	3,ERROR1	;SHOULD NEVER FALL THROUGH
	JRST	OPCODI

COMEIN:	CAIE	2,77		;IS IT A  RUBOUT
	JRST	.+2
	JRST	OPCODI		;RUBOUT WANTS LINE REPEATED
	IDPB	2,POINT1	;MOVE CHARACTER TO  "UPCODI"
	ADDI	4,1		;INCREMENT COUNTER
	CAIE	4,7		;AN ERROR IF IT IS 7
	JRST	MORE		;GET ANOTHER CHARACTER
	JRST	COMEIN-2	;ERROR MESSAGE TIME








;    OPCODE LIST SCANNING IS DONE HERE, AND THE LIST USED DEPENDS
; ON THE NUMBER OF CHARACTERS IN THE OPCODE.


ONECHR:	TTCALL	3,ERROR2	;NO 1 CHARACTER OPCODES
	JRST	OPCODI
ORCDE:	ASCII	"OR"

TWOCHR:	CAME	5,ORCDE	;ONLY ONE OPCODE WITH TWO CHRS.
	JRST	.+3		;THIS IS NOT IT
	MOVEI	6,434		;OCTAL CODE FOR THE   OR
	JRST	MACHCD		;PUT CODE INTO INSTRUCTION
	TTCALL	3,ERROR3
	JRST	OPCODI

TRECHR:	MOVE	7,TABL3(4)	;BRING CODE FROM THE LIST
	CAME	7,UPCODI	;COMPARE WITH INPUTED CODE
	JRST	NOTEQ3
	MOVE	6,TABL32(4)	;MOVE MACHINE CODE TO 6
	JRST	MACHCD		;PUT IT INTO INSTRUCTION
NOTEQ3:	ADDI	4,1		;INCREMENT THE INDEX
	JUMPN	7,TRECHR	;RETURN IF NOT OF TABLE
	JSR	PDP10
	TTCALL	3,ERROR4	;SEND OUT ERROR MESSAGE
	JRST	OPCODI

FORCHR:	MOVE	7,TABL4(4)	;BRING OPCODE FROMLIST
	CAME	7,UPCODI	;COMPARE WITH INPUTED CODE
	JRST	NOTEQ4
	MOVE	6,TABL42(4)	;MOVE MACHINE CODE TO 6
	JRST	MACHCD		;PUT IT INTO THE INSTRUCTION
NOTEQ4:	ADDI	4,1		;INCREMENT THE INDEX
	JUMPN	7,FORCHR	;CHECK FOR END OF TABLE
	JRST	NOTEQ3+2	;SEND OUT ERROR MESSAGE

FIVCHR:	MOVE	7,TABL5(4)	;    SAME AS  4
	CAME	7,UPCODI
	JRST	NOTEQ5
	MOVE	6,TABL52(4)
	JRST	MACHCD
NOTEQ5:	ADDI	4,1
	JUMPN	7,FIVCHR
	JRST	NOTEQ3+2

SIXCHR:	MOVE	7,TABL6(4)	;BRING OPCODE FROM LIST
	CAME	7,UPCODI	;COMPARE WITH INPUTED CODE
	JRST	NOTEQ6		;FIRST 5 CHARS. NOT EQUAL
	MOVE	6,TABL62(4)	;GET BASIC MACHINE CODE
	JRST	CHECK6		;GO LOOK AT 6TH CHARACTER
NOTEQ6:	ADDI	4,1		;INCREMENT THE INDEX
	JUMPN	7,SIXCHR	;END OF TABLE CHECK
	ADDI	4,0		;NOW TRY JUMPG/L AND SKIPG/L
	MOVE	7,TABL6(4)
	CAME	7,UPCODI
	JRST	NOTE62		;NOT EQUAL
	MOVE	6,TABL62(4)	;YES, GET MACHINE CODE
	JRST	CHEK62	;LOOK FOR  E  ON END
NOTE62:	ADDI	4,1		;INCREMENT THE INDEX
	JUMPN	7,NOTE62-5	;CHECK END OF TABLE
	JRST	NOTEQ3+2	;ERROR TIME
CHEK62:	MOVE	7,UPCODI+1	;MOVE THE 6TH CHARACTER
	LSH	7,-^D29		;ROTATE TO LOW ORDER
	CAIE	7,"E"		;IS IT AN   E
	JRST	NOTEQ3+2	;NO, SO THATS AN ERROR

	JRST	MACHCD

CHECK6:	MOVE	7,UPCODI+1	;NOW MOVE DOWN THE 6TH CHAR.
	LSH	7,-^D29		;ROTATE TO LOW ORDER BITS
	CAIE	7,"I"		;IS IT AN   I
	JRST	.+3		;NO
	ADD	6,ONEFRI	;YES, ADD 1 TO MACHINE CODE
	JRST	MACHCD
	CAIE	7,"M"		;IS IT AN   M
	JRST	.+3		;NO
	ADD	6,TWOFRM	;YES, ADD 2
	JRST	MACHCD
	CAIE	7,"B"		;IS IT A   B
	JRST	NOTEQ3+2	;NO SO AN ERROR
	ADD	6,THREEB	;YES ADD 3
	JRST	MACHCD
PDP10:	0
	SETZB	4,6
	MOVE	5,IOXWD
	DPB	5,[POINT 18,MESSSW,35]
	MOVE	5,PDPIO(4)
	CAME	5,UPCODI
	JRST	NOPDP
MESSSW:	TTCALL	3,IOMESS
	JRST	@PDP10
NOPDP:	ADDI	4,1
	JUMPN	5,MESSSW-3
	ADDI	6,1
	MOVE	5,IOXWD(6)
	JUMPE	5,@PDP10
	JRST	PDP10+3

IOXWD:	XWD	0,IOMESS
	XWD	0,UUOMES
	XWD	0,BYTEME
	XWD	0,PUSHME
		0

IOMESS:	ASCIZ	/
PDP-10 IO INSTRUCTION,BUT/
UUOMES:	ASCIZ	/
PDP-10 UUO, BUT/
BYTEME:	ASCIZ	/
PDP-10 BYTE INSTRUCTION, BUT/
PUSHME:	ASCIZ	/
PDP-10 PUSHDOWN LIST INSTRUCTION, BUT/

ONEFRI:	1
TWOFRM:	2
THREEB:	3

TABL6:	ASCII	"ANDCA"
	ASCII	"ANDCB"
	ASCII	"ANDCM"
	ASCII	"CLEAR"
	ASCII	"SETCA"
	ASCII	"SETCM"
		0
	ASCII	"JUMPG"
	ASCII	"JUMPL"
	ASCII	"SKIPG"
	ASCII	"SKIPL"
		0

TABL62:	410
	440
	420
	400
	450
	460
	0
	325
	323
	335
	333
	0


MACHCD:	MOVE	7,[POINT 9,17,8]
	DPB	6,7		;DEPOSIT MACHINE CODE INTO INSTR.
	MOVEM	17,THIS		;MOVE IT TO EXECUTABLE POSITION
	JRST	ACCUME		;GO GET ACCUMULATOR CONTENTS

	PAGE


;		C O N S T A N T S

MESS1I:	ASCIZ	/

    YOU ARE NOW RUNNING A LEARNING PROGRAM THAT WILL ALLOW YOU
 TO SELECT AN OPCODE, ACCUMULATOR CONTENTS, AND THE EFFECTIVE
 ADDRESS CONTENTS. THIS OPCODE WILL THEN BE EXECUTED, USING THE
 CONTENTS THAT YOU SELECTED, AND THE RESULTING CONTENTS OF THE
 ACCUMULATOR AND EFFECTIVE ADDRESS WILL BE TYPED ONTO YOUR 
 TELETYPE SO YOU CAN SEE EXACTLY HOW THE CONTENTS ARE AFFECTED
 BY THAT PARTICULAR OPCODE.

/
MESS2I:	ASCIZ	/      THERE ARE SOME RULES AND LIMITATIONS THOUGH:
  		1.  CONTENTS MUST BE OCTAL NUMBERS
  		2.  THEY ARE RIGHT JUSTIFIED IF < 12
  		3.  ALL 12 OCTAL CHARACTERS ARE TYPED OUT
  		4.  THE AC USED IS 13, AND THE E IS 16
  		5.  THESE INSTRUCTIONS ARE UNAVAILABLE:
			BYTE MANIPULATION ,
			INPUT-OUTPUT ,
			PUSHDOWN LIST ,
			UUO MNEMONICS ,
			EXECUTE,JRA, AND BLT , AND
			DOUBLE PRECISION FLOATING POINT
			DOESN'T GIVE BOTH WORDS .

/
MESS3I:	ASCIZ	/

	OPCODE: /
MESS6I:	ASCIZ	/

THE INSTRUCTION DID SKIP.

/
MESS4I:	ASCIZ	/
	    AC: /
MESS5I:	ASCIZ	/	     E: /
ERROR1:	ASCIZ	/

WE DO NOT SUPPORT OPCODES WITH MORE THAN 6 CHARACTERS.


/
ERROR2:	ASCIZ	/

NO 1 CHARACTER OPCODES.

/
ERROR3:	ASCIZ	/

OR   IS THE ONLY 2 CHARACTER OPCODE.

/
ERROR4:	ASCIZ	/
THAT OPCODE IS INVALID FOR THIS PROGRAM.

/
ERROR5:	ASCIZ	/

THAT IS TOO MANY CHARACTERS.

/
ERROR6:	ASCIZ	/

PLEASE SUBMIT ONLY OCTAL CHARACTERS.

/

PTR1:	POINT	7,UPCODI
POINT1:	POINT	7,UPCODI
UPCODI:	BLOCK	2
PTR2:	POINT	3,14
POINT2:	POINT	3,14
PTR3:	POINT	3,13
PTR4:	POINT	3,16
POINT3:	POINT	3,13
FORNOW:	ASCIZ	/

IT WORKED...........

/











ACCUME:	TTCALL	3,MESS4I
	JSR	GODOIT
	MOVE	13,14
	JSR	ISJUMP		;GO LOOK AT JUMP INSTRUCTIONS
	TTCALL	3,MESS5I
	JSR	GODOIT
	MOVE	16,14
	SETZ	4,		;ZERO OUT COUNTER
LOOKIT:	MOVE	5,UPCODI	;GET THE OPCODE
	AND	5,MASK		;JUST LOOK AT 1ST 3 CHARS.
	CAME	5,IMMEDI(4)
	JRST	.+3		;NOT EQUAL
DROPIT:	DPB	16,[POINT 18,THIS,35]
	JRST	THIS		;GO DO IT NOW
	MOVE	5,IMMEDI(4)	;TO CHECK OF LIST
	ADDI	4,1		;INCREMENT COUNTER
	JUMPN	5,LOOKIT	;RETURN IF IT WAS NOT A 0
	MOVE	5,UPCODI
	ANDI	5,077400	;GET 4TH CHARACTER
	CAIN	5,044400	;IS IT AN I FOR IMMEDIATE
	JRST	DROPIT		;YES IT IS AN  I
	MOVE	5,UPCODI
	ANDI	5,376		;GET THE 5TH CHARACTER
	CAIN	5,222		;IS THAT AN I
	JRST	DROPIT		;YES IT IS AN  I
	MOVE	5,UPCODI+1
	LSH	5,-^D29
	CAIE	5,"I"
	JRST	THIS
	JRST	DROPIT

MASK:	777777700000		;FOR THE 3 CHARS.
IMMEDI:	ASCII	"LSH"
	ASCII	"TRN"
	ASCII	"TRZ"
	ASCII	"TRC"
	ASCII	"TRO"
	ASCII	"TLN"
	ASCII	"TLZ"
	ASCII	"TLC"
	ASCII	"TLO"
	ASCII	"ROT"
	ASCII	"ASH"
	ASCII	"ORI"
	ASCII	"CAI"
		0


GODOIT:	0
	CLOSE	2,
	MOVE	PTR2
	MOVEM	POINT2
	MOVEI	4,0
	MOVEI	14,0
CHRLUP:	JSR	GETCHR
	CAIE	2,15		;CARRIAGE RETRN
	JRST	STILL
GOT12:	CAIE	4,14		;12 CHARACTERS ?
	JRST	.+2
	JRST	@GODOIT		;RETURN WITH 12
	LSH	14,-3		;SHIFT 1 TO THE RIGHT
	ADDI	4,1		;INCREMENT COUNTER
	JRST	GOT12		;RE-CHECK

STILL:	CAIE	2,77		;RUBOUT  ?
	JRST	.+4		;    NO
	MOVE	14,GODOIT	;  YES IT IS
	SUBI	14,2
	JRST	@14		;RETURN TO THE TTCALL
	CAIL	2,60		;SKIP IF LESS THAN DECIMAL 0
	CAILE	2,67		;SKIP IF LESS OR EQUAL
	JRST	BOBOO		;ITS NON OCTAL
	SUBI	2,60		;DE-ASCII-IZE
	IDPB	2,POINT2	;PUT TO AC14
	ADDI	4,1
	CAIE	4,15		;IS THAT 13 ?
	JRST	CHRLUP		;NO, GET SOME MORE
	TTCALL	3,ERROR5
	JRST	STILL+2
BOBOO:	TTCALL	3,ERROR6
	JRST	STILL+2

;  HERE IS WHERE IT GETS EXECUTED.

THIS:	MOVE	13,16		;THIS IS THE INSTRUCTION
	JRST	.+2
	TTCALL	3,MESS6I	;IF IT  SKIPS PRINT MESSAGE
	TTCALL	3,MESS4I	;JUST SENDING OUT RESULTS
	MOVE	PTR3
	MOVEM	POINT3		;BRING OUT THE AC
	JSR	ACANDE
	MOVE	4,FLAG
	AOJE	4,.+2		;JUMPS IF =0 ,WAS  -1
	JRST	.+3
	SETZM	FLAG		;SET FLAG BACK TO 0
	JRST	OPCODI		;EXIT WITHOUT PRINTING OUT E CONTENTS
	TTCALL	3,MESS5I
	MOVE	PTR4
	MOVEM	POINT3		;BRING OUT THE  E
	JSR	ACANDE
	JRST	OPCODI

ACANDE:	0
	SETZ	4,
	SETZ	3,
	ILDB	3,POINT3
	ADDI	3,60
	JSR	PUTCHR
	ADDI	4,1
	CAIE	4,14		;IS THAT ALL 12
	JRST	ACANDE+2
	MOVEI	3,15
	JSR	PUTCHR
	MOVEI	3,12
	JSR	PUTCHR		;THAT FINISHES OFF WITH RETURN FEED
	CLOSE	3,
	JRST	@ACANDE







ISJUMP:	0			;FOR A  JSR
	SETZ	4,		;ZERO OUT COUNTER
	MOVE	5,UPCODI			;MOVE IN THE OPCODE
	AND	5,MASK		;GET 1ST 3 CHARACTERS
	CAME	5,JUMPIS(4)	;COMPARE WITH LIST
	JRST	NOTYET
	MOVE	4,[XWD 0,JUMPED]	;SET
	DPB	4,[POINT 18,THIS,35]	;OPERAND TO ADDR
	SETOM	FLAG		;SET FLAG FOR  E SUPPRESSION
	JRST	THIS
NOTYET:	ADDI	4,1		;INCREMENT THE COUNTER
	MOVE	5,JUMPIS(4)
	JUMPN	5,ISJUMP+2	;CHECK OF LIST
	MOVE	5,UPCODI

	CAME	5,JSRCDE	;IS IT A JSR
	JRST	.+3		;NO IT ISNT
SETJMP:	MOVE	17,[JRST JUMPE1]	;JSR JUMPS TO E+1
	JRST	NOTYET-2		;GO SET THE FLAG
	CAME	5,JSACDE	;IS IT A JSA
	JRST	@ISJUMP		;NO, SO RETURN
	JRST	SETJMP		;YES, SO EXIT AS JSR

JUMPED:	TTCALL	3,MESSJP	;DID JUMP MESSAGE
	JRST	THIS+3
JUMPE1:	TTCALL	3,MESSE1	;JUMPED TO E+1 MESSAGE
	SETZM	FLAG		;CLEAR FLAG SO E IS PRINTED
	JRST	THIS+3

MESSJP:	ASCIZ	/

THAT INSTRUCTION DID JUMP.

/
MESSE1:	ASCIZ	/

THAT INSTRUCTION JUMPED TO E+1 .

/
FLAG:	0
JSACDE:	ASCII	"JSA"
JSRCDE:	ASCII	"JSR"
JUMPIS:	ASCII	"AOB"		;AOBJP  AND AOBJN
	ASCII	"JFF"		;JFFO
	ASCII	"JFC"		;JFCL
	ASCII	"JSP"
	ASCII	"JRS"
	ASCII	"JRA"
	ASCII	"AOJ"
	ASCII	"SOJ"
	ASCII	"JUM"		;JUMP S
		0


;    TABLES OF OPCODES AND THEIR OCTAL CONFIGURATIONS.

TABL3:	ASCII	"ADD"
	ASCII	"AND"
	ASCII	"AOJ"
	ASCII	"AOS"
	ASCII	"ASH"
	ASCII	"BBB"		;BLT
	ASCII	"CAI"
	ASCII	"CAM"
	ASCII	"DFN"
	ASCII	"DIV"
	ASCII	"DDD"	;DPB
	ASCII	"EQV"
	ASCII	"FAD"
	ASCII	"FDV"
	ASCII	"FMP"
	ASCII	"FSB"
	ASCII	"FSC"
	ASCII	"HLL"
	ASCII	"HLR"
	ASCII	"HRL"
	ASCII	"HRR"
	ASCII	"III"	;IBP
	ASCII	"IOR"
	ASCII	"JJJ"		;JRA
	ASCII	"JSA"
	ASCII	"JSP"
	ASCII	"JSR"
	ASCII	"LLL"	;LDB
	ASCII	"LSH"
	ASCII	"MUL"
	ASCII	"ORB"
	ASCII	"ORI"
	ASCII	"ORM"
	ASCII	"PPP"		;POP
	ASCII	"ROT"
	ASCII	"SOJ"
	ASCII	"SOS"
	ASCII	"SUB"
	ASCII	"TDC"
	ASCII	"TDN"
	ASCII	"TDO"
	ASCII	"TDZ"
	ASCII	"TLC"
	ASCII	"TLN"
	ASCII	"TLO"
	ASCII	"TLZ"
	ASCII	"TRC"
	ASCII	"TRN"
	ASCII	"TRO"
	ASCII	"TRZ"
	ASCII	"TSC"
	ASCII	"TSN"
	ASCII	"TSO"
	ASCII	"TSZ"
	ASCII	"UFA"
	ASCII	"XCT"
	ASCII	"XOR"
		0

TABL4:	ASCII	"ADDB"
	ASCII	"ADDI"
	ASCII	"ADDM"
	ASCII	"ANDB"
	ASCII	"ANDI"
	ASCII	"ANDM"
	ASCII	"AOJA"
	ASCII	"AOJE"
	ASCII	"AOJG"
	ASCII	"AOJL"
	ASCII	"AOJN"
	ASCII	"AOSA"
	ASCII	"AOSE"
	ASCII	"AOSG"
	ASCII	"AOSL"
	ASCII	"AOSN"
	ASCII	"ASHC"
	ASCII	"CAIA"
	ASCII	"CAIE"
	ASCII	"CAIG"
	ASCII	"CAIL"
	ASCII	"CAIN"
	ASCII	"CAMA"
	ASCII	"CAME"
	ASCII	"CAMG"
	ASCII	"CAML"
	ASCII	"CAMN"
	ASCII	"DIVB"
	ASCII	"DIVI"
	ASCII	"DIVM"
	ASCII	"EQVB"
	ASCII	"EQVI"
	ASCII	"EQVM"
	ASCII	"EXCH"
	ASCII	"FADB"
	ASCII	"FADL"
	ASCII	"FADM"
	ASCII	"FADR"
	ASCII	"FDVB"
	ASCII	"FDVL"
	ASCII	"FDVM"
	ASCII	"FDVR"
	ASCII	"FMPB"
	ASCII	"FMPL"
	ASCII	"FMPM"
	ASCII	"FMPR"
	ASCII	"FSBB"
	ASCII	"FSBL"
	ASCII	"FSBM"
	ASCII	"FSBR"
	ASCII	"HLLE"
	ASCII	"HLLI"
	ASCII	"HLLM"
	ASCII	"HLLO"
	ASCII	"HLLS"
	ASCII	"HLLZ"
	ASCII	"HLRE"
	ASCII	"HLRI"
	ASCII	"HLRM"
	ASCII	"HLRO"
	ASCII	"HLRS"
	ASCII	"HLRZ"
	ASCII	"HRLE"
	ASCII	"HRLI"
	ASCII	"HRLM"
	ASCII	"HRLO"
	ASCII	"HRLS"
	ASCII	"HRLZ"
	ASCII	"HRRE"
	ASCII	"HRRI"
	ASCII	"HRRM"
	ASCII	"HRRO"
	ASCII	"HRRS"
	ASCII	"HRRZ"
	ASCII	"IDIV"
	ASCII	"IIII"	;IDPB
	ASCII	"IIII"	;ILDB
	ASCII	"IMUL"
	ASCII	"IORB"
	ASCII	"IORI"
	ASCII	"IORM"
	ASCII	"JFCL"
	ASCII	"JFFO"
	ASCII	"JUMP"
	ASCII	"LSHC"
	ASCII	"MOVE"
	ASCII	"MOVM"
	ASCII	"MOVN"
	ASCII	"MOVS"
	ASCII	"MULB"
	ASCII	"MULI"
	ASCII	"MULM"
	ASCII	"ORCA"
	ASCII	"ORCB"
	ASCII	"ORCM"
	ASCII	"PPPP"		;PUSH
	ASCII	"ROTC"
	ASCII	"SETA"
	ASCII	"SETM"
	ASCII	"SETO"
	ASCII	"SETZ"
	ASCII	"SKIP"
	ASCII	"SOJA"
	ASCII	"SOJE"
	ASCII	"SOJG"
	ASCII	"SOJL"
	ASCII	"SOJN"
	ASCII	"SOSA"
	ASCII	"SOSE"
	ASCII	"SOSG"
	ASCII	"SOSL"
	ASCII	"SOSN"
	ASCII	"SUBB"
	ASCII	"SUBI"
	ASCII	"SUBM"
	ASCII	"TDCA"
	ASCII	"TDCE"
	ASCII	"TDCN"
	ASCII	"TDNA"
	ASCII	"TDNE"
	ASCII	"TDNN"
	ASCII	"TDOA"
	ASCII	"TDOE"
	ASCII	"TDON"
	ASCII	"TDZA"
	ASCII	"TDZE"
	ASCII	"TDZN"
	ASCII	"TLCA"
	ASCII	"TLCE"
	ASCII	"TLCN"
	ASCII	"TLNA"
	ASCII	"TLNE"
	ASCII	"TLNN"
	ASCII	"TLOA"
	ASCII	"TLOE"
	ASCII	"TLON"
	ASCII	"TLZA"
	ASCII	"TLZE"
	ASCII	"TLZN"
	ASCII	"TRCA"
	ASCII	"TRCE"
	ASCII	"TRCN"
	ASCII	"TRNA"
	ASCII	"TRNE"
	ASCII	"TRNN"
	ASCII	"TROA"
	ASCII	"TROE"
	ASCII	"TRON"
	ASCII	"TRZA"
	ASCII	"TRZE"
	ASCII	"TRZN"
	ASCII	"TSCA"
	ASCII	"TSCE"
	ASCII	"TSCN"
	ASCII	"TSNA"
	ASCII	"TSNE"
	ASCII	"TSNN"
	ASCII	"TSOA"
	ASCII	"TSOE"
	ASCII	"TSON"
	ASCII	"TSZA"
	ASCII	"TSZE"
	ASCII	"TSZN"
	ASCII	"XORB"
	ASCII	"XORI"
	ASCII	"XORM"




TABL32:	270
	404
	340
	350
	240
	251
	300
	310
	131
	234
	137
	444
	140
	170
	160
	150
	132
	500
	544
	504
	540
	133
	435
	267
	266
	265
	264
	135
	242
	224
	437
	434
	436
	262
	241
	360
	370
	274
	650
	610
	670
	630
	641
	601
	661
	621
	640
	600
	660
	620
	651
	611
	671
	631
	130
	256
	430
	0

TABL42:	273
	271
	272
	407
	405
	406
	344
	342
	347
	341
	346
	354
	352
	357
	351
	356
	244
	304
	302
	307
	301
	306
	314
	312
	317
	311
	316
	237
	235
	236
	447
	445
	446
	250
	143
	141
	142
	144
	173
	171
	172
	174
	163
	161
	162
	164
	153
	151
	152
	154
	530
	501
	502
	520
	503
	510
	574
	545
	546
	564
	547
	554
	534
	505
	506
	524
	507
	514
	570
	541
	542
	560
	543
	550
	230
	136
	134
	220
	437
	435
	436
	255
	243
	320
	246
	200
	214
	210
	204
	227
	225
	226
	454
	470
	464
	261
	245
	424
	414
	474
	400
	330
	364
	362
	367
	361
	366
	374
	372
	377
	371
	376
	277
	275
	276
	654
	652
	656
	614
	612
	616
	674
	672
	676
	634
	632
	636
	645
	643
	647
	605
	603
	607
	665
	663
	667
	625
	623
	627
	644
	642
	646
	604
	602
	606
	664
	662
	666
	624
	622
	626
	655
	653
	657
	615
	613
	617
	675
	673
	677
	635
	633
	637
	433
	431
	432
	0






	


TABL5:	ASCII	"ANDCA"
	ASCII	"ANDCB"
	ASCII	"ANDCM"
	ASCII	"AOBJN"
	ASCII	"AOBJP"
	ASCII	"AOJGE"
	ASCII	"AOJLE"
	ASCII	"AOSGE"
	ASCII	"AOSLE"
	ASCII	"CAIGE"
	ASCII	"CAILE"
	ASCII	"CAMGE"
	ASCII	"CAMLE"
	ASCII	"FADRB"
	ASCII	"FADRI"
	ASCII	"FADRM"
	ASCII	"FDVRB"
	ASCII	"FDVRI"
	ASCII	"FDVRM"
	ASCII	"FMPRB"
	ASCII	"FMPRI"
	ASCII	"FMPRM"
	ASCII	"FSBRB"
	ASCII	"FSBRI"
	ASCII	"FSBRM"
	ASCII	"HLLEI"
	ASCII	"HLLEM"
	ASCII	"HLLES"
	ASCII	"HLLOI"
	ASCII	"HLLOM"
	ASCII	"HLLOS"
	ASCII	"HLLZI"
	ASCII	"HLLZM"
	ASCII	"HLLZS"
	ASCII	"HLREI"
	ASCII	"HLREM"
	ASCII	"HLRES"
	ASCII	"HLROI"
	ASCII	"HLROM"
	ASCII	"HLROS"
	ASCII	"HLRZI"
	ASCII	"HLRZM"
	ASCII	"HLRZS"
	ASCII	"HRLEI"
	ASCII	"HRLEM"
	ASCII	"HRLES"
	ASCII	"HRLOI"
	ASCII	"HRLOM"
	ASCII	"HRLOS"
	ASCII	"HRLZI"
	ASCII	"HRLZM"
	ASCII	"HRLZS"
	ASCII	"HRREI"
	ASCII	"HRREM"
	ASCII	"HRRES"
	ASCII	"HRROI"
	ASCII	"HRROM"
	ASCII	"HRROS"
	ASCII	"HRRZI"
	ASCII	"HRRZM"
	ASCII	"HRRZS"
	ASCII	"IDIVB"
	ASCII	"IDIVI"
	ASCII	"IDIVM"
	ASCII	"IMULB"
	ASCII	"IMULI"
	ASCII	"IMULM"
	ASCII	"JUMPA"
	ASCII	"JUMPE"
	ASCII	"JUMPG"
	ASCII	"JUMPL"
	ASCII	"JUMPN"
	ASCII	"MOVEI"
	ASCII	"MOVEM"
	ASCII	"MOVES"
	ASCII	"MOVMI"
	ASCII	"MOVMM"
	ASCII	"MOVMS"
	ASCII	"MOVNI"
	ASCII	"MOVNM"
	ASCII	"MOVNS"
	ASCII	"MOVSI"
	ASCII	"MOVSM"
	ASCII	"MOVSS"
	ASCII	"ORCAB"
	ASCII	"ORCAI"
	ASCII	"ORCAM"
	ASCII	"ORCBB"
	ASCII	"ORCBI"
	ASCII	"ORCBM"
	ASCII	"ORCMB"
	ASCII	"ORCMI"
	ASCII	"ORCMM"
	ASCII	"PPPPP"		;PUSHJ
	ASCII	"SETAB"
	ASCII	"SETAI"
	ASCII	"SETAM"
	ASCII	"SETCA"
	ASCII	"SETCM"
	ASCII	"SETMB"
	ASCII	"SETMI"
	ASCII	"SETMM"
	ASCII	"SETOB"
	ASCII	"SETOI"
	ASCII	"SETOM"
	ASCII	"SETZB"
	ASCII	"SETZI"
	ASCII	"SETZM"
	ASCII	"SKIPA"
	ASCII	"SKIPE"
	ASCII	"SKIPG"
	ASCII	"SKIPL"
	ASCII	"SKIPN"
	ASCII	"SOJGE"
	ASCII	"SOJLE"
	ASCII	"SOSGE"
	ASCII	"SOSLE"
		0


TABL52:	410
	440
	420
	253
	252
	345
	343
	355
	353
	315
	313
	315
	313
	147
	145
	146
	177
	175
	176
	167
	165
	166
	157
	155
	156
	531
	532
	533
	521
	522
	523
	511
	512
	513
	575
	576
	577
	565
	566
	567
	555
	556
	557
	535
	536
	537
	525
	526
	527
	515
	516
	517
	571
	572
	573
	561
	562
	563
	551
	552
	553
	233
	231
	232
	223
	221
	222
	324
	322
	327
	321
	326
	201
	202
	203
	215
	216
	217
	211
	212
	213
	205
	206
	207
	457
	455
	456
	473
	471
	472
	467
	465
	466
	260
	427
	425
	426
	450
	460
	417
	415
	416
	477
	475
	476
	403
	401
	402
	334
	332
	337
	331
	336
	365
	363
	375
	373
	0
PDPIO:	ASCII	"CONSO"
	ASCII	"CONSZ"
	ASCII	"CONO"
	ASCII	"CONI"
	ASCII	"DATAI"
	ASCII	"DATAO"
	ASCII	"BLKO"
	ASCII	"BLKI"
		0
	ASCII	"CALL"
	ASCII	"CALLI"
	ASCII	"OPEN"
	ASCII	"TTCAL"
	ASCII	"RENAM"
	ASCII	"IN"
	ASCII	"OUT"
	ASCII	"SETST"
	ASCII	"STATO"
	ASCII	"STATU"
	ASCII	"GETST"
	ASCII	"STATZ"
	ASCII	"INBUF"
	ASCII	"INIT"
	ASCII	"OUTBU"
	ASCII	"INPUT"
	ASCII	"OUTPU"
	ASCII	"CLOSE"
	ASCII	"RELEA"
	ASCII	"MTAPE"
	ASCII	"UGETF"
	ASCII	"USETI"
	ASCII	"USETO"
	ASCII	"LOOKU"
	ASCII	"ENTER"
		0
	ASCII	"LDB"
	ASCII	"DPB"
	ASCII	"IBP"
	ASCII	"ILDB"
	ASCII	"IDPB"
		0
	ASCII	"PUSHJ"
	ASCII	"PUSH"
	ASCII	"POP"
	ASCII	"POPJ"
		0
		0
;  THE LAST LIST (PDPIO) IS OF CODES THAT ARE UNEXECUTABLE HERE.


GOGOGO:	JRST	STARTI

	END	GOGOGO