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