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