;MAINDEC-10-DAKBA DECVER=002 MCNVER=000 XLIST DEFINE NAME (MCNVER,DECVER),< TITLE DAKBA PDP-10 KA10 BASIC INSTRUCTION RELIABILITY TEST (1), VERSION MCNVER,DECVER > LIST LALL NAME \MCNVER,\DECVER XALL ;TEST DESIGNED FOR RANDOM NUMBER TESTING OF THE PDP-10 BASIC INSTRUCTIONS ;(COMPARES,SKIPS,EXCHANGES,BOOLE,ROTATES,TESTS,ETC.) ;COPYRIGHT 1977 ;DIGITAL EQUIPMENT CORPORATION ;MARLBORO, MASS. 01752 ;JOHN R. KIRCHOFF LOC 137 MCNVER,,DECVER NOSYM SUBTTL DIAGNOSTIC PARAMETERS ;LUUO DEFINITIONS OPDEF ERR [1B8] OPDEF ERRM [2B8] OPDEF ERRI [3B8] OPDEF ERROR [4B8] OPDEF ER [5B8] OPDEF EERR [11B8] OPDEF EERRM [12B8] OPDEF EERRI [13B8] LUUO1=ERRMES LUUO2=ERRMES LUUO3=ERRMES LUUO4=ERRMES LUUO5=ERRMES LUUO11=ERRMES LUUO12=ERRMES LUUO13=ERRMES ;SUBROUTINE ASSEMBLY DEFINITIONS EXCASB==1 USRASB==1 DEBUG==40 KLOLD==1 KA10=10 PGMEND==1 ERRELB==1 SADR1==BEGIN SADR2==RESRT1 SADR3==RENTR1 SADR4==BEGIN SADR5==BEGIN SADR6==BEGIN SADR7==HALT BEGIN SADR8==HALT BEGIN SADR9==HALT BEGIN SADR10==HALT BEGIN SADR11==HALT BEGIN PAREA1==123457,,654321 PAREA2==0 PAREA3==SIXBIT/DAKBA/ PAREA4==SIXBIT/TMP/ PAREA5==0 PAREA6==0 ITERAT==1 ENDPGM==1 ;MACROS DEFINE SETUP (A,B)< AC1=&17 AC2=&17 AC3=&17 AC4=&17 AC5=&17 RAN1=&17 MOVEI AC-1,. MOVEM AC-1,TESTPC ;SETUP SUBTEST PC MOVEI AC-1,&17 ;INFORM ERROR ROUTINE MOVEM AC-1,ERRLOP# ;WHICH AC IS USED FOR ITERATION MOVEI AC-1,A ;ROUTINE WEIGHTING ASH AC-1,@CMPLXT+B ;ROUTINE COMPLEXITY ASH AC-1,@RTIME ;RUN TIME CONTROLLER > DEFINE RANDOM (A)< MOVE AC,RAN# ;GENERATE A PSEUDO RANDOM NUMBER ADD AC,[142536475076] ROT AC,-1 ;IN BOTH AC AND EQVB AC,RAN ;REGISTER RAN > DEFINE LOOP (A,B)< SOJG AC-1,A ;ITERATION COUNTER MOVE AC,RAN ;RESTORE RANDOM NUMBER JUMPL AC-1,B ;LOOP ON ERROR SWITCH > SUBTTL *PARAM* CONSOLE DATA SWITCH ASSIGNMENTS, SEPT 18,1979 DEFINE S,<; *********************************************************************> ; ********************************************************************** ;*DATA SWITCHES (READ FROM CONSOLE IN EXEC MODE OR TYPED IN IN USER MODE) ;*LEFT HALF SWITCHES ARE PRE-ASSIGNED FOR SUBROUTINE PACKAGE USE ;*AND CONTROL LOOPING, PRINTING (TTY OR OTHER DEVICE) AND MISC. FUNCTIONS ; ********************************************************************** ABORT== 400000 ;ABORT PROGRAM ON PASS COMPLETION RSTART==200000 ;RESTART TEST, PRINT TOTALS TOTALS==100000 ;PRINT TOTALS, CONTINUE NOPNT== 040000 ;INHIBIT ALL PRINT/TYPE OUT (EXCEPT FORCED) PNTLPT==020000 ;PRINT ALL DATA ON LPT (LOGICAL DEVICE, USER MODE) DING== 010000 ;RING BELL ON ERROR LOOPER==004000 ;ENTER EXERCISE/CHECK LOOP ON ERROR ERSTOP==002000 ;HALT ON TEST ERROR PALERS==001000 ;PRINT ALL ERRORS RELIAB==000400 ;RELIABILITY MODE TXTINH==000200 ;INHIBIT ERROR TEXT INHPAG==000100 ;INHIBIT PAGING MODDVC==000040 ;MODIFY DEVICE CODE INHCSH==000020 ;INHIBIT CACHE OPRSEL==000010 ;OPERATOR SELECTION CHAIN== 000004 ;CHAIN CONTROL SWITCH KAHZ50==000002 ;KA10 50 HERTZ POWER ;SWITCH 17 RESERVED !!! SUBTTL *PARAM* PROGRAM/SUBROUTINE PARAMETERS, SEPT 18,1979 ; ********************************************************************** ;*SPECIAL SUBPROGRAM LINKAGES ; ********************************************************************** FSELNK= 27772 ;FILE SELECT LINK FRDLNK= 27773 ;FILE READ LINK LDLNK= 27774 ;LOAD LINKAGE ADDRESS DDTLNK= 27775 ;DDT LINKAGE ADDRESS MODLNK= 27776 ;OPERATIONAL MODE CHECK LINKAGE ADDRESS SUBLNK= 27777 ;SUBROUTINE LINKAGE ADDRESS ; ********************************************************************** ;*SPECIAL SUBROUTINE FATAL HALTS ;*USED TO REPORT ERRORS THAT CAUSE THE SUBROUTINES TO BE UNUSABLE ; ********************************************************************** ;ADDRESS TAG REASON ;--------------------- ; 1010 NOEXEC ;PROGRAM NOT CODED FOR EXEC MODE OPERATION ; 1011 PLERR ;FATAL PUSH LIST POINTER ERROR ; 1012 PLERR1 ;INITIAL PUSH LIST POINTER ERROR ; 1013 MUOERR ;MUUO WITH LUUO HANDLER WIPED OUT ; 1014 DTEBER ;DTE20 INTERRUPT WITHOUT DOORBELL ; 1015 DTECER ;DTE20 CLOCK INTERRUPT WITHOUT FLAG SET ; 1016 CPIERR ;CPU INITIALIZATION ERROR ; 1017 EOPERR ;END OF PROGRAM ERROR ; 1020 LUOERR ;INTERRUPT WITH LUUO HANDLER WIPED OUT ; ********************************************************************** ; ********************************************************************** ;OPERATOR DEFINITIONS (NON-UUO'S) ; ********************************************************************** OPDEF GO [PUSHJ P,] ;SUBROUTINE CALL OPDEF RTN [POPJ P,] ;SUBROUTINE RETURN OPDEF PUT [PUSH P,] ;PUT DATA ON PUSH LIST OPDEF GET [POP P,] ;GET DATA FROM PUSH LIST OPDEF PJRST [JRST ] ;JRST TO ROUTINE THAT RTN'S OPDEF HALT [JRST 4,] ;DEFINITION FOR DDT OPDEF JRSTF [JRST 2,] ;DEFINITION FOR DDT OPDEF JEN [JRST 12,] ;DEFINITION FOR DDT ; ********************************************************************** ;SUBROUTINE INITIALIZATION CALL ; ********************************************************************** OPDEF PGMINT [JSP 0,SBINIT] ;SUBROUTINE INITIALIZATION ; ********************************************************************** ;HALTING UUO'S (A MORE GRACEFUL HALT THAN SIMPLY USING THE HALT INSTRUCTION). ; ********************************************************************** OPDEF FATAL [37B8!15B12!4] ;FATAL PROGRAMMING HALT OPDEF ERRHLT [37B8!14B12!4] ;PROGRAM ERROR HALT ; ********************************************************************** ;TERMINAL INPUT UUO'S ;ALWAYS COME FROM THE CONSOLE TERMINAL IN EXEC MODE OR THE ;CONTROLLING TERMINAL (REAL TERMINAL OR PTY) IN USER MODE. ; ********************************************************************** OPDEF TTICHR [37B8!0B12!3] ;TTY, INPUT ANY CHARACTER OPDEF TTIYES [37B8!1B12!3] ;TTY, NORMAL RETURN Y OPDEF TTINO [37B8!2B12!3] ;TTY, NORMAL RETURN N OPDEF TTIOCT [37B8!3B12!3] ;TTY, INPUT OCTAL WORD OPDEF TTIDEC [37B8!4B12!3] ;TTY, INPUT DECIMAL WORD OPDEF TTICNV [37B8!5B12!3] ;TTY, INPUT CONVERTABLE WORD OPDEF TTLOOK [37B8!6B12!3] ;TTY, KEYBOARD CHECK OPDEF TTALTM [37B8!7B12!3] ;TTY, ALT-MODE CHECK OPDEF TTSIXB [37B8!10B12!3] ;TTY, INPUT SIXBIT WORD OPDEF TTYINP [37B8!11B12!3] ;TTY, IMAGE MODE INPUT OPDEF TTICLR [37B8!12B12!3] ;TTY, CLEAR INPUT ;TERMINAL OUTPUT UUO'S. OPDEF PNTA [37B8!0B12!0] ;PRINT ASCII WORD OPDEF PNTAF [37B8!0B12!1] ;PRINT ASCII WORD FORCED OPDEF PNTAL [37B8!17B12!0] ;PRINT ASCIZ LINE OPDEF PNTALF [37B8!17B12!1] ;PRINT ASCIZ LINE FORCED OPDEF PSIXL [37B8!14B12!3] ;PRINT SIXBIT'Z LINE OPDEF PSIXLF [37B8!15B12!3] ;PRINT SIXBIT'Z LINE FORCED OPDEF PNTMSG [37B8!0B12!0] ;PRINT MESSAGE IMMEDIATE OPDEF PNTMSF [37B8!1B12!0] ;PRINT MESSAGE IMMEDIATE FORCED OPDEF PSIXM [37B8!2B12!0] ;PRINT SIXBIT'Z MSG IMMEDIATE OPDEF PSIXMF [37B8!4B12!0] ;PRINT SIXBIT'Z MSG IMM FORCED OPDEF PNTCI [37B8!0B12!0] ;PRINT CHARACTER IMMEDIATE OPDEF PNTCIF [37B8!1B12!0] ;PRINT CHARACTER IMMEDIATE FORCED OPDEF PNTCHR [37B8!12B12!0] ;PRINT CHARACTER OPDEF PNTCHF [37B8!12B12!1] ;PRINT CHARACTER FORCED OPDEF PNT1 [37B8!1B12!0] ;PRINT ONE OCTAL DIGIT OPDEF PNT1F [37B8!1B12!1] ;PRINT 1 OCTAL DIGIT FORCED OPDEF PNT2 [37B8!2B12!0] ;PRINT TWO OCTAL DIGITS OPDEF PNT2F [37B8!2B12!1] ;PRINT 2 OCTAL DIGITS FORCED OPDEF PNT3 [37B8!3B12!0] ;PRINT THREE OCTAL DIGITS OPDEF PNT3F [37B8!3B12!1] ;PRINT THREE OCTAL DIGITS FORCED OPDEF PNT4 [37B8!4B12!0] ;PRINT FOUR OCTAL DIGITS OPDEF PNT4F [37B8!4B12!1] ;PRINT FOUR OCTAL DIGITS FORCED OPDEF PNT5 [37B8!5B12!0] ;PRINT FIVE OCTAL DIGITS OPDEF PNT5F [37B8!5B12!1] ;PRINT FIVE OCTAL DIGITS FORCED OPDEF PNT6 [37B8!6B12!0] ;PRINT SIX OCTAL DIGITS OPDEF PNT6F [37B8!6B12!1] ;PRINT SIX OCTAL DIGITS FORCED OPDEF PNT7 [37B8!7B12!0] ;PRINT 7 OCTAL DIGITS OPDEF PNT7F [37B8!7B12!1] ;PRINT 7 OCTAL DIGITS FORCED OPDEF PNT11 [37B8!11B12!0] ;PRINT 11 OCTAL DIGITS OPDEF PNT11F [37B8!11B12!1] ;PRINT 11 OCTAL DIGITS FORCED. OPDEF PNTADR [37B8!10B12!0] ;PRINT PHYSICAL ADDRESS OPDEF PNTADF [37B8!10B12!1] ;PRINT PHYSICAL ADDRESS FORCED OPDEF PNTOCT [37B8!14B12!0] ;PRINT FULL WORD OCTAL OPDEF PNTOTF [37B8!14B12!1] ;PRINT FULL WORD OCTAL FORCED OPDEF PNTHW [37B8!13B12!0] ;PRINT OCTAL HALF WORDS, 6 SP 6 OPDEF PNTHWF [37B8!13B12!1] ;PRINT OCTAL HALF WORDS, 6 SP 6 FORCED OPDEF PNTOCS [37B8!16B12!3] ;PRINT OCTAL, SUPPRESS LEADING 0'S OPDEF PNTOCF [37B8!17B12!3] ;PRINT OCTAL, SUPPRESS LEADING 0'S FORCED OPDEF PNTDEC [37B8!15B12!0] ;PRINT DECIMAL, SUPRESS LEADING 0'S OPDEF PNTDCF [37B8!15B12!1] ;PRINT DECIMAL, SUPRESS LEADING 0'S FORCED OPDEF PNTDS [37B8!16B12!0] ;PRINT DECIMAL, SPACES FOR LD 0'S OPDEF PNTDSF [37B8!16B12!1] ;PRINT DECIMAL, SPACES FOR LD 0'S FORCED OPDEF PNTNM [37B8!4B12!2] ;PRINT PROGRAM NAME OPDEF PNTSIX [37B8!0B12!2] ;PRINT SIXBIT WORD OPDEF PNTSXF [37B8!1B12!2] ;PRINT SIXBIT WORD FORCED OPDEF DROPDV [37B8!5B12!2] ;CLOSE LOGICAL FILE, USER MODE OPDEF PNTCW [37B8!2B12!2] ;PRINT DF10 CONTROL WORD OPDEF PNTCWF [37B8!3B12!2] ;PRINT DF10 CONTROL WORD FORCED OPDEF PCRL [37B8!0B12!CRLF] ;PRINT CARRIAGE RETURN/LINE FEED OPDEF PCRLF [37B8!1B12!CRLF] ;PRINT CARRIAGE RETURN/LINE FEED FORCED OPDEF PSP [37B8!0B12!40] ;PRINT SPACE OPDEF PSPF [37B8!1B12!40] ;PRINT SPACE FORCED OPDEF PCRL2 [37B8!0B12!CRLF2] ;PRINT CARRIAGE RETURN/LINE FEED (TWICE) OPDEF PCRL2F [37B8!1B12!CRLF2] ;PRINT CARRIAGE RETURN/LINE FEED (TWICE) FORCED OPDEF PBELL [37B8!1B12!7] ;PRINT TTY BELL OPDEF PFORCE [37B8!1B12!26] ;PRINT FORCE, CONTROL O OVERRIDE DEFINE PMSG (ARG),< PSIXM [SIXBIT\ARG'_\]> DEFINE PMSGF (ARG),< PSIXMF [SIXBIT\ARG'_\]> ;SIXBTZ -- MACRO TO GENERATE SIXBIT DATA FOR PRINTING ; CONSERVES CORE OVER ASCIZ DEFINE SIXBTZ (ARG),< [SIXBIT\ARG'_\]> ;CONSOLE SWITCH INPUT UUO. ;READS CONSOLE SWITCHES IF IN EXEC MODE OR ASKS FOR THEM IF ; USER MODE. OPDEF SWITCH [37B8!10B12!2] ;INPUT CONSOLE SWITCHES ;CLOCK INITIALIZATION UUO - TO SET DESIRED CLOCK OPERATION ;EITHER IGNORE CLOCK, ONLY LET IT TICK OR CAUSE INTERRUPT TO OCCUR. OPDEF CLOKOP [37B8!13B12!4] ;CLOCK OPERATION UUO - PDP-11 CLOCK OPDEF MTROP [37B8!4B12!4] ;CLOCK OPERATION UUO - DK20 METER ;KL10 ONLY CACHE OPERATION UUO'S OPDEF CINVAL [37B8!1B12!4] ;CACHE INVALIDATE OPDEF CFLUSH [37B8!2B12!4] ;CACHE FLUSH OPDEF CWRTBI [37B8!3B12!4] ;CACHE WRITE-BACK & INVALIDATE ;END OF PASS/PROGRAM UUOS ;PERFORMS THE END OF PASS FUNCTIONS. INCREMENT PASS COUNT, ;DECREMENT ITERATION COUNT, CHECK IF FINISHED WITH THIS PROGRAM ETC. OPDEF ENDUUO [37B8!12B12!4] ;UUO TO DISPLAY LIGHTS OPDEF EOPUUO [37B8!16B12!4] ;END OF PROGRAM UUO ;MEMORY MANAGEMENT UUO'S ;UUO'S TO PERFORM VARIOUS MEMORY FUNCTIONS. MAPPING, ZEROING, PAGING, ;ADDRESS CONVERSION, ETC... OPDEF MAPMEM [37B8!0B12!4] ;MAP MEMORY OPDEF MEMZRO [37B8!12B12!2] ;ZERO MEMORY OPDEF MEMSEG [37B8!11B12!2] ;SETUP MEMORY SEGMENT OPDEF MAPADR [37B8!13B12!2] ;VIRTUAL TO PHYSICAL ADR CONVERT OPDEF MAPCNK [37B8!15B12!2] ;MAP MEMORY CHUNK OPDEF MAPSET [37B8!14B12!2] ;SET KI10 EXEC PAGE MAP OPDEF MAPPNT [37B8!17B12!2] ;PRINT MEMORY MAP ;DEVICE CODE MODIFICATION UUO ;ALLOWS THE MODIFICATION OF IOT'S TO ONE DEVICE TO BE CHANGED TO ;IOT'S TO A DIFFERENT DEVICE CODE. OPDEF MODPCU [37B8!7B12!2] ;MODIFY PERHIPERAL CODE, USER OPDEF MODPCP [37B8!6B12!2] ;MODIFY PERHIPERAL CODE, PROGRAM IFNDEF MODDVL, IFNDEF MODDVU, ;"DIAMON" FILE SELECTION AND READ UUOS OPDEF FSELECT [37B8!5B12!4] ;FILE SELECTION OPDEF FREAD [37B8!6B12!4] ;FILE READ - ASCII DATA OPDEF FRD36 [37B8!7B12!4] ;FILE READ - 36 BIT DATA OPDEF FRD8 [37B8!10B12!4] ;FILE READ - 8 BIT DATA ;KI10 ONLY UUO FOR PRINTING MARGIN VALUES OPDEF PNTMGN [37B8!16B12!2] ;PRINT MARGIN VALUE XLIST IFNDEF KLOLD, ;A MACRO TO REPORT AN ERROR AND NOT LOOP DEFINE ERROR1 (FORMAT,CORECT,ACTUAL,F,D,ERR)< SALL ERUUO FORMAT,[T,,[SIXBIT\F'_\] CORECT,,ACTUAL [SIXBIT\D'_\],,ERR] XALL> >;END OF KLOLD CONDITIONAL XLIST IFDEF $PAPER, SUBTTL STANDARD PROGRAM ASSIGNMENTS ; ********************************************************************** ;ACCUMULATORS ; ********************************************************************** P= 17 ;PUSHDOWN POINTER AC (IF PUSH LIST USED) REPT== 15 ;ERROR HANDLER REPEAT AC REPT1== 16 ; " ; ********************************************************************** ;PDP-10 STANDARD PC CONTROL FLAGS (SAVED ON PUSHJ, JSR, ETC..) ; ********************************************************************** AROV== 400000 ;ARITHMETIC OVERFLOW CRY0== 200000 ;CARRY 0 CRY1== 100000 ;CARRY 1 FOV== 40000 ;FLOATING POINT OVERFLOW BIS== 20000 ;BYTE INTERRUPT USERF== 10000 ;USER MODE EXIOT== 4000 ;USER PRIV I/O FXU== 100 ;FLOATING POINT UNDERFLOW DCK== 40 ;DIVIDE CHECK ; ********************************************************************** ;PDP-10 STANDARD ADDRESS ASSIGNMENTS ; ********************************************************************** LUUO== 40 ;UUO STORAGE, UUO 1-37 LUUOI== 41 ;UUO SERVICE INSTRUCTION ; ********************************************************************** ;JOB DATA AREA EXTERNALS (OLD DEFINITIONS) ; ********************************************************************** JOBUUO==40 JOB41== 41 JOBREL==44 JOBDDT==74 JOBSYM==116 JOBUSY==117 JOBSA== 120 JOBFF== 121 JOBREN==124 JOBAPR==125 JOBCNI==126 JOBTPC==127 JOBOPC==130 JOBVER==137 ; ********************************************************************** ;JOB DATA AREA EXTERNALS (NEW DEFINITIONS) ; ********************************************************************** .JBUUO==40 .JB41== 41 .JBREL==44 .JBDDT==74 .JBSYM==116 .JBUSY==117 .JBSA== 120 .JBFF== 121 .JBREN==124 .JBAPR==125 .JBCNI==126 .JBTPC==127 .JBOPC==130 .JBVER==137 ; ********************************************************************** ;USER MODE APR ASSIGNMENTS (FOR "APRENB" CALL) ; ********************************************************************** PDLOVU==200000 ;PUSHDOWN LIST OVERFLOW MPVU== 20000 ;MEMORY PROTECTION VIOLATION NXMU== 10000 ;NON-X-MEMORY PARU== 4000 ;PARITY ERROR CLKU== 1000 ;CLOCK FOVU== 100 ;FLOATING OVERFLOW AROVU== 10 ;ARITHMETIC OVERFLOW ; ********************************************************************** ;USER MODE PRINT OUTPUT CHANNEL ASSIGNMENTS (FOR SUBROUTINE PACKAGE) ;THE USER SHOULD BE CAUTIONED NOT TO USE THESE CHANNELS WHEN ;USING THE SUBROUTINE PACKAGE AND CODING USER MODE PROGRAMS. ; ********************************************************************** $DEVCH==17 ;LOGICAL DEVICE CHANNEL $DVCH1==16 ;LOGICAL DEV UPDATE INPUT CHANNEL ; ********************************************************************** ;PDP-10 SPECIAL COMPATABILITY ASSIGNMENTS ; ********************************************************************** PAG== 010 ;PAGING I/O DEVICE CODE, KI/KL CCA== 014 ;CACHE I/O DEVICE CODE, KL10 ; ********************************************************************** ;PDP-10 STANDARD APR CONO ASSIGNMENTS ; ********************************************************************** IOCLR== 200000 ;CLEAR ALL I/O DEVICES CLKDIS==4000 ;DISABLE CLOCK INTERRUPTS CLKENB==2000 ;ENABLE CLOCK INTERRUPTS CLKCLR==1000 ;CLEAR CLOCK FLAG ; ********************************************************************** ;PDP-10 STANDARD APR CONI ASSIGNMENTS, RIGHT HALF ; ********************************************************************** CLKENB==2000 ;CLOCK INTERRUPT ENABLED CLK== 1000 ;CLOCK FLAG ANXM== 10000 ;KA10, NON-X-MEMORY INXM== 100 ;KI10 ; ********************************************************************** ;PDP-10 STANDARD PI CONO ASSIGNMENTS ; ********************************************************************** PWFCLR==400000 ;CLEAR POWER FAIL FLAG PARCLR==200000 ;CLEAR PARITY ERROR FLAG PARDIS==100000 ;DISABLE PARITY INTERRUPTS PARENB==40000 ;ENABLE PARITY INTERRUPTS PICLR== 10000 ;CLEAR PI SYSTEM REQSET==4000 ;SET PROGRAM PI REQUEST CHNON== 2000 ;TURN ON CHANNEL CHNOFF==1000 ;TURN OFF CHANNEL PIOFF== 400 ;TURN OFF PI SYSTEM PION== 200 ;TURN ON PI SYSTEM ; ********************************************************************** ;PDP-10 STANDARD PI CONI ASSIGNMENTS ; ********************************************************************** PION== 200 ;PI SYSTEM ON ; ********************************************************************** ;PDP-10 STANDARD PI CHANNEL ASSIGNMENTS ; ********************************************************************** PICHN1==100 ;PI CHANNEL 1 PICHN2==40 ;PI CHANNEL 2 PICHN3==20 ;PI CHANNEL 3 PICHN4==10 ;PI CHANNEL 4 PICHN5==4 ;PI CHANNEL 5 PICHN6==2 ;PI CHANNEL 6 PICHN7==1 ;PI CHANNEL 7 PICHNA==177 ;ALL PI CHANNELS, 1 THRU 7 XLIST IFDEF KA10,< IFDEF $PAPER, ; ********************************************************************** ;KA10 APR CHANNEL ASSIGNMENTS ; ********************************************************************** AAPRC1==1 ;APR INTERRUPT CHANNEL ; ********************************************************************** ;KA10 APR CONO ASSIGNMENTS ; ********************************************************************** APDCLR==400000 ;CLEAR PUSHDOWN OVERFLOW AABCLR==40000 ;CLEAR ADDRESS BREAK AMPCLR==20000 ;CLEAR MEMORY PROTECTION ANXCLR==10000 ;CLEAR NON-X-MEMORY AFODIS==400 ;DISABLE FLOATING POINT OVERFLOW AFOENB==200 ;ENABLE FLOATING POINT OVERFLOW AFOCLR==100 ;CLEAR FLOATING POINT OVERFLOW AOVDIS==40 ;DISABLE OVERFLOW AOVENB==20 ;ENABLE OVERFLOW AOVCLR==10 ;CLEAR OVERFLOW ; ********************************************************************** ;KA10 APR CONI ASSIGNMENTS ; ********************************************************************** APDLOV==200000 ;PUSHDOWN OVERFLOW AUSRIO==100000 ;USER I/O AADRBK==40000 ;ADDRESS BREAK AMPV== 20000 ;MEMORY PROTECTION VIOLATION ANXM== 10000 ;NON-EXISTENT MEMORY AFOENB==200 ;FLT PT INTERRUPT ENABLED AFOV== 100 ;FLOATING POINT OVERFLOW ATRPOS==40 ;TRAPS OFFSET AOVENB==20 ;OVERFLOW INTERRUPT ENABLED AOVFLO==10 ;ARITHMETIC OVERFLOW ; ********************************************************************** ;KA10 PI CONI ASSIGNMENTS ; ********************************************************************** APWRFL==400000 ;POWER FAILURE APARER==200000 ;PARITY ERROR APAREN==100000 ;PARITY INTERRUPT ENABLED > ;END CONDITIONAL ON KA10 XLIST IFDEF KI10,< IFDEF $PAPER, ; ********************************************************************** ;KI10 PC CONTROL FLAGS ; ********************************************************************** LIP== 2000 ;LAST INSTRUCTION PUBLIC TN0== 400 ;TN=00, NO TRAP ;TN=01, ARITH TRAP TN1== 200 ;TN=10, PDL OV ;TN=11, TRAP 3 ; ********************************************************************** ;KI10 SPECIAL EXEC MODE FLAGS ; ********************************************************************** UOLIP== 400000 ;UUO OLD L.I.P. UOUSR== 4000 ;UUO OLD USER ; ********************************************************************** ;KI10 APR CHANNEL ASSIGNMENTS ; ********************************************************************** IAPRC1==1 ;APR CLOCK CHANNEL IAPRE1==10 ;APR ERROR CHANNEL ; ********************************************************************** ;KI10 APR CONO ASSIGNMENTS ; ********************************************************************** ITMSET==400000 ;SET TIME OUT TIMER ITMDIS==100000 ;DISABLE TIME OUT ITMENB==40000 ;ENABLE TIME OUT IASRTC==20000 ;CLEAR AUTO RESTART IASRTS==10000 ;SET AUTO RESTART IIOPFC==200 ;CLEAR I/O PAGE FAIL INXCLR==100 ;CLEAR NON-X-MEM ; ********************************************************************** ;KI10 APR CONI ASSIGNMENTS, RIGHT HALF ; ********************************************************************** ITMOUT==400000 ;TIMER TIMED OUT IPARER==200000 ;PARITY ERROR IPAREN==100000 ;PARITY ENABLED ITMOEN==40000 ;TIME OUT ENABLED IPWRFL==20000 ;POWER FAIL IASRTE==10000 ;AUTO RESTART ENABLED IIOPFL==200 ;I/O PAGE FAIL INXM== 100 ;NON-X-MEMORY ; ********************************************************************** ;KI10 APR CONI ASSIGMENTS, LEFT HALF ; ********************************************************************** IMLAPD==200000 ;MEMORY OVERLAP DISABLED IFMMAN==100000 ;FAST MEMORY MANUAL IMIPGD==40000 ;MI PROGRAM DISABLE ICNSLR==20000 ;CONSOLE READ ONLY ICNSLL==10000 ;CONSOLE LOCKED IP50HZ==4000 ;50 HZ POWER IMGINM==2000 ;MANUAL MARGINS IMAINT==1000 ;MAINTENANCE MODE IPWRLO==400 ;POWER LOW IMGNLO==200 ;MARGIN COMPARATOR LOW SENSE1==40 ;SENSE SWITCHES 1 SENSE2==20 ; 2 SENSE3==10 ; 3 SENSE4==4 ; 4 SENSE5==2 ; 5 SENSE6==1 ; 6 ; ********************************************************************** ;KI10 APR DATAO ASSIGNMENTS ; ********************************************************************** IEVNPR==20000 ;WRITE EVEN PARITY ISPDOF==10000 ;SPEED MARGINS OFF ISPDON==4000 ;SPEED MARGINS ON IMGNOF==2000 ;MARGINS OFF - LH IMGNON==1000 ;MARGINS ON - LH ; ********************************************************************** ;KI10 PI CONO ASSIGNMENTS ; ********************************************************************** IRQCLR==20000 ;CLEAR PROGRAM PI REQUEST ; ********************************************************************** ;KI10 PI CONI ASSIGNMENTS ; ********************************************************************** IINSTF==400000 ;ADDRESS CONDITIONS, INST FETCH IDATAF==200000 ; DATA FETCH IWRITE==100000 ; WRITE IADSTP==40000 ;ADDRESS STOP IADBRK==20000 ;ADDRESS BREAK IADEXC==10000 ;ADDRESS SWITCHES EXEC IADUSR==4000 ; " " USER IPRSTP==2000 ;PARITY STOP INXSTP==1000 ;NON-X-MEM STOP ; ********************************************************************** ;KI10 PAG CONI ASSIGNMENTS ; ********************************************************************** EXCMEM==400 ;EXEC MEMORY SPACE AMCLRB==40 ;ASSOCIATIVE MEMORY CLEAR BIT ; ********************************************************************** ;KI10 PAG DATAO ASSIGNMENTS, LEFT HALF ; ********************************************************************** LDUSRB==400000 ;LOAD USER BASE REGISTER SMLUSR==40000 ;SMALL USER, 32K OR UNDER USRCMP==20000 ;USER ADR COMPARE ENABLE ; ********************************************************************** ;KI10 PAG DATAO ASSIGNMENTS, RIGHT HALF ; ********************************************************************** LDEXCB==400000 ;LOAD EXEC BASE REGISTER TRPENB==20000 ;ENABLE TRAPS ; ********************************************************************** ;KI10 PAG DATAI ASSIGNMENTS ; ********************************************************************** SMLUSR==40000 ;SMALL USER USRCMP==20000 ;USER ADR COMPARE ENABLED TRPENB==20000 ;RH, TRAPS ENABLED ; ********************************************************************** ;KI10 PTR DATAO ASSIGNMENTS ; ********************************************************************** ;ADDRESS CONDITIONS, ADDRESS BREAK ;AS ABOVE, PI CONI ;ADDRESS SWITCHES, 14-35 ; ********************************************************************** ;KI10 EXEC PAGE MAP PAGE ASSIGNMENTS ; ********************************************************************** PGFTRP==420 ;PAGE FAULT TRAP AROVTP==421 ;ARITHMETIC TRAP PDOVTP==422 ;PUSHDOWN OVERFLOW TRAP TRP3TP==423 ;TRAP 3 TRAP ; ********************************************************************** ;KI10 USER PAGE MAP PAGE ASSIGNMENTS ; ********************************************************************** PGFTRP==420 ;PAGE FAULT TRAP AROVTP==421 ;ARITHMETIC TRAP PDOVTP==422 ;PUSHDOWN OVERFLOW TRAP TRP3TP==423 ;TRAP 3 TRAP MUUO== 424 ;MUUO STORAGE MUUOPC==425 ;C(PC) OF MUUO STORAGE EXCPFW==426 ;EXEC PAGE FAIL WORD USRPFW==427 ;USER PAGE FAIL WORD KNTRP== 430 ;KERNAL NO TRAP - NEW PC'S- KTRP== 431 ;" TRAP SNTRP== 432 ;SUPERVISOR NO TRAP STRP== 433 ;" TRAP CNTRP== 434 ;CONCEAL NO TRAP CTRP== 435 ;" TRAP PNTRP== 436 ;PUBLIC NO TRAP PTRP== 437 ;" TRAP > ;END CONDITIONAL ON KI10 XLIST IFDEF KL10,< IFNDEF KL10P0,< IFDEF $PAPER, ;KL10 CONO APR 000 ASSIGMENTS ; ********************************************************************** LIOCLR==200000 ;CLEAR ALL I/O DEVICES LFLGEN==100000 ;ENABLE SELECTED FLAG LFLGDS==40000 ;DISABLE SELECTED FLAG LFLGCL==20000 ;CLEAR SELECTED FLAG LFLGST==10000 ;SET SELECTED FLAG LSBUSE==4000 ;SBUS ERROR FLAG LNXMER==2000 ;NON-EXISTENT MEMORY FLAG LPARER==1000 ;PARITY ERROR FLAG LIOPFE==400 ;I/O PAGE FAIL FLAG LPWRFL==100 ;POWER FAIL FLAG LCASWD==20 ;CACHE SWEEP DONE FLAG LAPRP7==7 ;APR PI CHANNEL 7 LAPRP6==6 ;APR PI CHANNEL 6 LAPRP5==5 ;APR PI CHANNEL 5 LAPRP4==4 ;APR PI CHANNEL 4 LAPRP3==3 ;APR PI CHANNEL 3 LAPRP2==2 ;APR PI CHANNEL 2 LAPRP1==1 ;APR PI CHANNEL 1 LESBER==104000 ;ENABLE SBUS ERRORS LDSBER==044000 ;DISABLE SBUS ERRORS LCSBER==024000 ;CLR SBUS ERRORS LSSBER==014000 ;SET SBUS ERROR LENXER==102000 ;ENABLE NON-EXISTENT MEMORY LDNXER==042000 ;DISABLE NON-EXISTENT MEORY LCNXER==022000 ;CLR NON-EXISTENT MEMORY LSNXER==012000 ;SET NON-EXISTENT MEMORY LEPAER==101000 ;ENABLE PARITY ERRORS LDPAER==041000 ;DISABLE PARITY ERRORS LCPAER==021000 ;CLR PARITY ERROR LSPAER==011000 ;SET PARITY ERROR LEIOPF==100400 ;ENABLE I/O PAGE FAILS LDIOPF==040400 ;DISABLE I/O PAGE FAILS LCIOPF==020400 ;CLR I/O PAGE FAIL LSIOPF==010400 ;SET I/O PAGE FAIL LEPWRF==100100 ;ENABLE POWER FAIL LDPWRF==040100 ;DISABLE POWER FAIL LCPWRF==020100 ;CLR POWER FAIL LSPWRF==010100 ;SET POWER FAIL LECASD==100020 ;ENABLE CACHE SWEEP DONE LDCASD==040020 ;DISABLE CACHE SWEEP DONE LCCASD==020020 ;CLR CACHE SWEEP DONE LSCASD==010020 ;SET CACHE SWEEP DONE LAPRAL==127520 ;CLR ALL ERROR FLAGS & ENABLE ; ********************************************************************** ;KL10 CONI APR 000 ASSIGMENTS (LEFT HALF) ; ********************************************************************** LSBSEN==4000 ;SBUS ERRORS ENABLED LNXMEN==2000 ;NON-EXISTENT MEMORY ERRORS ENABLED LPAREN==1000 ;PARITY ERRORS ENABLED LIOPFE=400 ;I/O PAFE FAILURES ENABLED LPWRFE==100 ;POWER FAILURES ENABLED LCASDE==20 ;CACHE SWEEP DONE ENABLED ; ********************************************************************** ;KL10 CONI APR 000 ASSIGMENTS (RIGHT HALF) ; ********************************************************************** LCASWB==200000 ;CACHE SWEEP BUSY LSBUSE==4000 ;SBUS ERROR FLAG LNXMER==2000 ;NON-EXISTENT MEMORY FLAG LPARER==1000 ;PARITY ERROR FLAG LIOPFE==400 ;I/O PAGE FAIL FLAG LPWRFL==100 ;POWER FAIL FLAG LCASWD==20 ;CACHE SWEEP DONE FLAG LAPRP7==7 ;APR PI CHANNEL 7 LAPRP6==6 ;APR PI CHANNEL 6 LAPRP5==5 ;APR PI CHANNEL 5 LAPRP4==4 ;APR PI CHANNEL 4 LAPRP3==3 ;APR PI CHANNEL 3 LAPRP2==2 ;APR PI CHANNEL 2 LAPRP1==1 ;APR PI CHANNEL 1 LINT==10 ;APR INTERRUPT ; ********************************************************************** ;KL10 DATAO APR 000 ASSIGMENTS (LEFT HALF) ; ********************************************************************** LINSTF==400 ;ADDRESS BREAK REQUEST FOR INST. FETCH LDATAF==200 ;ADDRESS BREAK REQUEST FOR DATA FETCH LWRITE==100 ;ADDRESS BREAK REQUEST FOR DATA WRITE LUSCMP==40 ;USER ADDRESS COMPARE LEXCMP==0 ;EXEC ADDRESS COMPARE ; ********************************************************************** ;KL10 DATAO APR 000 ASSIGMENTS (RIGHT HALF) ; ********************************************************************** ;DATAO APR,ADDRESS SWITCHES=13-35 > XLIST IFDEF KL10P0,< IFDEF $PAPER, ;KL10 CONO APR 000 ASSIGMENTS ; ********************************************************************** LIOCLR==200000 ;CLEAR ALL I/O DEVICES LFLGEN==100000 ;ENABLE SELECTED FLAG LFLGDS==40000 ;DISABLE SELECTED FLAG LFLGCL==20000 ;CLEAR SELECTED FLAG LFLGST==10000 ;SET SELECTED FLAG LSBUSE==4000 ;SBUS ERROR FLAG LNXMER==2000 ;NON-EXISTENT MEMORY FLAG LIOPFE==1000 ;I/O PAGE FAIL FLAG LPARER==400 ;MB PARITY ERROR FLAG LCADRP==200 ;CACHE ADDRESS PARITY ERROR FLAG LSADRP==100 ;S-BUS ADDRESS PARITY ERROR FLAG LPWRFL==40 ;POWER FAIL FLAG LCASWD==20 ;CACHE SWEEP DONE FLAG LAPRP7==7 ;APR PI CHANNEL 7 LAPRP6==6 ;APR PI CHANNEL 6 LAPRP5==5 ;APR PI CHANNEL 5 LAPRP4==4 ;APR PI CHANNEL 4 LAPRP3==3 ;APR PI CHANNEL 3 LAPRP2==2 ;APR PI CHANNEL 2 LAPRP1==1 ;APR PI CHANNEL 1 LESBER==104000 ;ENABLE SBUS ERRORS LDSBER==044000 ;DISABLE SBUS ERRORS LCSBER==024000 ;CLR SBUS ERRORS LSSBER==014000 ;SET SBUS ERROR LENXER==102000 ;ENABLE NON-EXISTENT MEMORY LDNXER==042000 ;DISABLE NON-EXISTENT MEORY LCNXER==022000 ;CLR NON-EXISTENT MEMORY LSNXER==012000 ;SET NON-EXISTENT MEMORY LEIOPF==101000 ;ENABLE I/O PAGE FAILS LDIOPF==041000 ;DISABLE I/O PAGE FAILS LCIOPF==021000 ;CLR I/O PAGE FAIL LSIOPF==011000 ;SET I/O PAGE FAIL LEPAER==100400 ;ENABLE PARITY ERRORS LDPAER==040400 ;DISABLE PARITY ERRORS LCPAER==020400 ;CLR PARITY ERROR LSPAER==010400 ;SET PARITY ERROR LECAER==100200 ;ENABLE CACHE ADR PARITY ERRORS LDCAER==040200 ; " DISABLE LCCAER==020200 ; " CLR LSCAER==010200 ; " SET LESAER==100100 ;ENABLE S-BUS ADR PARITY ERRORS LDSAER==040100 ; " DISABLE LCSAER==020100 ; " CLR LSSAER==010100 ; " SET LEPWRF==100040 ;ENABLE POWER FAIL LDPWRF==040400 ;DISABLE POWER FAIL LCPWRF==020040 ;CLR POWER FAIL LSPWRF==010040 ;SET POWER FAIL LECASD==100020 ;ENABLE CACHE SWEEP DONE LDCASD==040020 ;DISABLE CACHE SWEEP DONE LCCASD==020020 ;CLR CACHE SWEEP DONE LSCASD==010020 ;SET CACHE SWEEP DONE LAPRAL==127760 ;CLR ALL ERROR FLAGS & ENABLE ; ********************************************************************** ;KL10 CONI APR 000 ASSIGMENTS (LEFT HALF) ; ********************************************************************** LSBSEN==4000 ;SBUS ERRORS ENABLED LNXMEN==2000 ;NON-EXISTENT MEMORY ERRORS ENABLED LIOPFE==1000 ;I/O PAGE FAILURES ENABLED LPAREN==400 ;PARITY ERRORS ENABLED LCADEN==200 ;CACHE ADR PARITY ERRORS ENABLED LSADEN==100 ;S-BUS ADR PARITY ERRORS ENABLED LPWRFE==40 ;POWER FAILURES ENABLED LCASDE==20 ;CACHE SWEEP DONE ENABLED ; ********************************************************************** ;KL10 CONI APR 000 ASSIGMENTS (RIGHT HALF) ; ********************************************************************** LCASWB==200000 ;CACHE SWEEP BUSY LSBUSE==4000 ;SBUS ERROR FLAG LNXMER==2000 ;NON-EXISTENT MEMORY FLAG LIOPFE==1000 ;I/O PAGE FAIL FLAG LPARER==400 ;PARITY ERROR FLAG LCADRP==200 ;CACHE ADR PARITY ERROR FLAG LSADRP==100 ;S-BUS ADR PARITY ERROR FLAG LPWRFL==40 ;POWER FAIL FLAG LCASWD==20 ;CACHE SWEEP DONE FLAG LAPRP7==7 ;APR PI CHANNEL 7 LAPRP6==6 ;APR PI CHANNEL 6 LAPRP5==5 ;APR PI CHANNEL 5 LAPRP4==4 ;APR PI CHANNEL 4 LAPRP3==3 ;APR PI CHANNEL 3 LAPRP2==2 ;APR PI CHANNEL 2 LAPRP1==1 ;APR PI CHANNEL 1 LINT==10 ;APR INTERRUPT ; ********************************************************************** ;KL10 DATAO APR 000 ASSIGMENTS (LEFT HALF) ; ********************************************************************** LINSTF==400 ;ADDRESS BREAK REQUEST FOR INST. FETCH LDATAF==200 ;ADDRESS BREAK REQUEST FOR DATA FETCH LWRITE==100 ;ADDRESS BREAK REQUEST FOR DATA WRITE LUSCMP==40 ;USER ADDRESS COMPARE LEXCMP==0 ;EXEC ADDRESS COMPARE ; ********************************************************************** ;KL10 DATAO APR 000 ASSIGMENTS (RIGHT HALF) ; ********************************************************************** ;DATAO APR,ADDRESS SWITCHES=13-35 > XLIST IFDEF $PAPER, ; ********************************************************************** ;KL10 DATAI APR 000 ASSIGMENTS (LEFT HALF) ; ********************************************************************** LINSTF==400 ;ADDRESS BREAK REQUEST FOR INST. FETCH LDATAF==200 ;ADDRESS BREAK REQUEST FOR DATA FETCH LWRITE==100 ;ADDRESS BREAK REQUEST FOR DATA WRITE LUSCMP==40 ;USER ADDRESS COMPARE LEXCMP==0 ;EXEC ADDRESS COMPARE ; ********************************************************************** ;KL10 DATAI APR 000 ASSIGMENTS (RIGHT HALF) ; ********************************************************************** ;DATAI APR,ADDRESS SWITCHES=13-35 ; ********************************************************************** ;KL10 BLKO APR 000 ASSIGMENTS (IMMEDIATE MODE) ; ********************************************************************** ;REFILL ALGORITHM BITS 18-20 ;REFILL ALGORITHM ADDRESS 27-33 ; ********************************************************************** ;KL10 BLKI APR 000 ASSIGMENTS ; ********************************************************************** ;MICRO-CODE OPTIONS = 0-8 ;MICRO-CODE VERSION NUMBER = 9-17 ;HARDWARE OPTIONS =18-23 ;PROCESSOR SERIAL NUMBER = 24-35 ; ********************************************************************** ;KL10 CONO PI 004 ASSIGMENTS ; ********************************************************************** LEVNPA==400000 ;WRITE EVEN PARITY ADDRESS LEVNPD==200000 ;WRITE EVEN PARITY DATA LEVNCD==100000 ;WRITE EVEN CACHE DIRECTORY PARITY *P0 LRQCLR==20000 ;DROP INTERRUPT ON SELECTED CHANNEL LPICLR==10000 ;CLEAR PI SYSTEM LREQSE==4000 ;REQUEST INTERRUPT ON SELECTED CHANNEL LCHNON=2000 ;TURN ON SELECTED CHANNEL LCHNOF==1000 ;TURN OFF SELECTED CHANNEL LPIOFF==400 ;TURN PI SYSTEM OFF LPION==200 ;TURN PI SYSTEM ON LPICH1==100 ;PI CHANNEL 1 LPICH2==40 ;PI CHANNEL 2 LPICH3==20 ;PI CHANNEL 3 LPICH4==10 ;PI CHANNEL 4 LPICH5==4 ;PI CHANNEL 5 LPICH6==2 ;PI CHANNEL 6 LPICH7==1 ;PI CHANNEL 7 LPICHA==177 ;ALL PI CHANNELS ; ********************************************************************** ;KL10 CONI PI 004 ASSIGMENTS (LEFT HALF) ; ********************************************************************** LPRCH1==100 ;PROGRAM REQUEST ON CHANNEL 1 LPRCH2==40 ;PROGRAM REQUEST ON CHANNEL 2 LPRCH3==20 ;PROGRAM REQUEST ON CHANNEL 3 LPRCH4==10 ;PROGRAM REQUEST ON CHANNEL 4 LPRCH5==4 ;PROGRAM REQUEST ON CHANNEL 5 LPRCH6==2 ;PROGRAM REQUEST ON CHANNEL 6 LPRCH7==1 ;PROGRAM REQUEST ON CHANNEL 7 ; ********************************************************************** ;KL10 CONI PI 004 ASSIGMENTS (RIGHT HALF) ; ********************************************************************** LEVNPA==400000 ;WRITE EVEN PARITY ADDRESS LEVNPD==200000 ;WRITE EVEN PARITY DATA LEVNCD==100000 ;WRITE EVEN CACHE DIRECTORY PARITY *P0 LPIIP1==40000 ;PI IN PROGRESS ON CHANNEL 1 LPIIP2==20000 ;PI IN PROGRESS ON CHANNEL 2 LPIIP3==10000 ;PI IN PROGRESS ON CHANNEL 3 LPIIP4==4000 ;PI IN PROGRESS ON CHANNEL 4 LPIIP5==2000 ;PI IN PROGRESS ON CHANNEL 5 LPIIP6==1000 ;PI IN PROGRESS ON CHANNEL 6 LPIIP7==400 ;PI IN PROGRESS ON CHANNEL 7 LPION==200 ;PI SYSTEM ON LPICH1==100 ;PI CHANNEL 1 ON LPICH2==40 ;PI CHANNEL 2 ON LPICH3==20 ;PI CHANNEL 3 ON LPICH4==10 ;PI CHANNEL 4 ON LPICH5==4 ;PI CHANNEL 5 ON LPICH6==2 ;PI CHANNEL 6 ON LPICH7==1 ;PI CHANNEL 7 ON ; ********************************************************************** ;KL10 DATAO PAG 010 ASSIGMENTS (LEFT HALF) ; ********************************************************************** LLACBL==400000 ;LOAD AC BLOCKS LLPRCN==200000 ;LOAD PREVIOUS CONTEXT SECTION LLDUSB==100000 ;LOAD USER BASE REGISTER LCWSX==40 ; ;CURRENT AC BLOCKS BITS 6 - 8 ;PREVIOUS AC BLOCKS BITS 9 - 11 ;PREVIOUS CONTEXT SECTION BITS 13 - 17 ; ********************************************************************** ;KL10 DATAO PAG 010 ASSIGMENTS (RIGHT HALF) ; ********************************************************************** ;USER BASE REGISTER BITS 23 - 35 ; ********************************************************************** ;KL10 DATAI PAG 010 ASSIGMENTS (LEFT HALF) ; ********************************************************************** LLACBL==400000 ;LOAD AC BLOCKS LLPRCN==200000 ;LOAD PREVIOUS CONTEXT SECTION LLDUSB==100000 ;LOAD USER BASE REGISTER LCWSX==40 ; ;CURRENT AC BLOCKS BITS 6 - 8 ;PREVIOUS AC BLOCKS BITS 9 - 11 ;PREVIOUS CONTEXT SECTION BITS 13 - 17 ; ********************************************************************** ;KL10 DATAI PAG 010 ASSIGMENTS (RIGHT HALF) ; ********************************************************************** ;USER BASE REGISTER BITS 23 - 35 ; ********************************************************************** ;KL10 CONO PAG 010 ASSIGMENTS ; ********************************************************************** LCASLO==400000 ;CACHE STRATEGY LOOK LCASLD==200000 ;CACHE STRATEGY LOAD LSMODE==40000 ;SECTION MODE LTRPEN==20000 ;TRAP AND PAGE ENABLE ;EXEC BASE REGISTER = 23-35 ; ********************************************************************** ;KL10 CONI PAG 010 ASSIGMENTS ; ********************************************************************** LCSLOO==400000 ;CACHE STRATEGY LOOK LCSLOA==200000 ;CACHE STRATEGY LOAD LSECMO==40000 ;SECTION MODE LTRPAE==20000 ;TRAP AND PAGE ENABLE ;EXEC BASE REGISTER = 23-35 ; ********************************************************************** ;KL10 BLKO PAG 010 ASSIGMENTS (IMMEDIATE MODE) ; ********************************************************************** XLIST IFNDEF KL10P0,< IFDEF $PAPER, ; ********************************************************************** ;KL10 EXEC PAGE MAP PAGE ASSIGNMENTS ; ********************************************************************** LAROVT==421 ;ARITHMETIC TRAP LPDOVT==422 ;PUSHDOWN OVERFLOW TRAP LTRP3T==423 ;TRAP 3 TRAP ; ********************************************************************** ;KL10 USER PAGE MAP PAGE ASSIGNMENTS ; ********************************************************************** LEUPFW==420 ;EXEC & USER PAGE FAIL WORD LAROVT==421 ;ARITHMETIC TRAP LPDOVT==422 ;PUSHDOWN OVERFLOW TRAP LTRP3T==423 ;TRAP 3 TRAP LMUUO== 424 ;MUUO STORAGE LMUUOP==425 ;C(PC) OF MUUO STORAGE LPFWPC==426 ;C(PC) OF PAGE FAIL WORD LPGFTR==427 ;PAGE FAIL NEW PC TRAP LKNTRP==430 ;KERNAL NO TRAP - NEW PC'S- LKTRP== 431 ;" TRAP LSNTRP==432 ;SUPERVISOR NO TRAP LSTRP== 433 ;" TRAP LCNTRP==434 ;CONCEAL NO TRAP LCTRP== 435 ;" TRAP LPNTRP==436 ;PUBLIC NO TRAP LPTRP== 437 ;" TRAP > XLIST IFDEF KL10P0,< IFDEF $PAPER, ; ********************************************************************** ;KL10 EXEC PAGE MAP PAGE ASSIGNMENTS ; ********************************************************************** LAROVT==421 ;ARITHMETIC TRAP LPDOVT==422 ;PUSHDOWN OVERFLOW TRAP LTRP3T==423 ;TRAP 3 TRAP LTBASH==510 ;TIME-BASE, HI LTBASL==511 ;TIME-BASE, LO LPRFMH==512 ;PERFORMANCE ANAYLYSIS, HI LPRFML==513 ;PERFORMANCE ANAYLYSIS, LO ; ********************************************************************** ;KL10 USER PAGE MAP PAGE ASSIGNMENTS ; ********************************************************************** LAROVT==421 ;ARITHMETIC TRAP LPDOVT==422 ;PUSHDOWN OVERFLOW TRAP LTRP3T==423 ;TRAP 3 TRAP LMUUO== 424 ;MUUO STORAGE LMUUOP==425 ;C(PC) OF MUUO STORAGE LCNTXT==426 ;PROCESS CONTEXT WORD LKNTRP==430 ;KERNAL NO TRAP - NEW PC'S- LKTRP== 431 ;" TRAP LSNTRP==432 ;SUPERVISOR NO TRAP LSTRP== 433 ;" TRAP LCNTRP==434 ;CONCEAL NO TRAP LCTRP== 435 ;" TRAP LPNTRP==436 ;PUBLIC NO TRAP LPTRP== 437 ;" TRAP LEUPFW==500 ;EXEC & USER PAGE FAIL WORD LPFWPC==501 ;C(PC) OF PAGE FAIL WORD LPGFTR==502 ;PAGE FAIL NEW PC LEBXMH==504 ;E-BOX CLOCK TICK METER, HI LEBXML==505 ;E-BOX CLOCK TICK METER, LO LMBXMH==506 ;M-BOX CYCLE METER, HI LMBXML==507 ;M-BOX CYCLE METER, LO >> ;END CONDITIONAL ON KL10 LIST SUBTTL *FIXED* FIXED CONTROL AND DISPATCH STORAGE, SEPT 18,1979 LOC 30000 ; ********************************************************************** ;PROGRAM STARTING ADDRESSES ;THESE ADDRESSES CALL VARIOUS SPECIAL START ROUTINES AND OR OPTIONS ;NORMAL START ADDRESS IS 30000 ALL OTHERS ARE SPECIAL. INVOKED BECAUSE ;OF END OF PASS, POWER FAILURE, DDT START, RE-ENTERING(TYPICALLY USER ;MODE), OR ANY NUMBER OF SPECIAL FEATURE TESTS. ; ********************************************************************** BEGIN: JRST @MODLNK ;STAND-ALONE START $START: JRST START ;MODE CHECK STARTING ADDRESS DIAGMN: JRST @LDLNK ;DIAGNOSTIC MONITOR START SYSEXR: JRST @LDLNK ;SYSTEM EXERCISER START SFSTRT: JRST SADR1 ;SPECIAL FEATURE START PFSTRT: JRST SADR2 ;POWER FAIL RESTART REENTR: JRST SADR3 ;REENTER START(USUALLY USER MODE ONLY) SRTDDT: ;COMMONLY MISTAKEN NAME FOR "DDTSRT" DDTSRT: JRST @DDTLNK ;DDT START BEGIN1: JRST STARTA ;LOOP START(END OF PASS COMES HERE) SBINIT: JRST @SUBLNK ;PMGINT LINKAGE RETURN: 0 ;RETURN ADDRESS STORAGE START1: SADR7 ;OPTIONAL STARTING ADR/INSTRUCTIONS START2: SADR8 ; " START3: SADR9 ; " START4: SADR10 ; " START5: SADR11 ; " ; ********************************************************************** ;PROGRAM FIXED PARAMETER AREA ; ********************************************************************** PNTNAM: PAREA3 ;SIXBIT PROGRAM NAME PNTEXT: PAREA4 ;SIXBIT PROGRAM EXTENSION RANDBS: PAREA1 ;RANDOM BASE NUMBER SWTEXR: PAREA2 ;SYSTEM EXERCISER SWITCHES ITRCNT: ITERAT ;PROGRAM ITERATIONS $PNAME: PGMNAM ;POINTER TO PROGRAMS NAME $PVER: MCNVER,,DECVER ;MCN & DEC VERSION LEVEL $MODVL: MODDVL ;DEVICE CODE CHANGE LOWER LIMIT $MODVU: MODDVU ;DEVICE CODE CHANGE UPPER LIMIT $EMODE: IFNDEF EXCASB,<0> IFDEF EXCASB,<-1> ;EXEC ALLOWED $UMODE: IFNDEF USRASB,<0> IFDEF USRASB,<-1> ;USER ALLOWED $DSKUP: IFNDEF DSKUPD,<0> IFDEF DSKUPD,<-1> ;DISK UPDATE MODE $MMAP: IFNDEF MEMMAP,<0> IFDEF MEMMAP,<-1> ;ALLOW MEMORY RTNS PAREA7: PAREA5 ;OPTIONAL PARAMETER PAREA8: PAREA6 ;OPTIONAL PARAMETER ; ********************************************************************** ;PROGRAM VARIABLE PARAMETER AREA ; ********************************************************************** USER: 0 ; 0 = EXEC, -1 = USER MODE FLAG KAIFLG: 0 ;PROCESSOR TYPE, 0 = KA10, -1 = KI10 KLFLG: 0 ;PROCESSOR TYPE, 0 = KA/KI, -1 = KL10 MONFLG: -1 ;DIAG MONITOR SPECIAL USER FLAG MONCTL: 0 ;DIAG MON/SYS EXR FLAG MONTEN: 0 ;-1= LOADED BY 10 CLOCKF: 0 ;CLOCK TICKED FLAG CONSW: 0 ;CONSOLE SWITCH SETTINGS PASCNT: 0 ;PROGRAM PASS COUNT RUNFLG: 0 ;PROGRAM RUN FLAG TESTPC: 0 ;SUBTEST PC ERRPC: 0 ;ERROR PC ERRTLS: 0 ;ERROR TOTALS TICKS: 0 ;PROGRAM RUNNING TIME MARGIN: 0 ;KI10 MARGIN WORD VALUE $ONETM: 0 ;SUBROUTINE INITIALIZATION FLAG ; ********************************************************************** ;SPECIAL PROGRAM DISPATCH ADDRESSES ; ********************************************************************** BEGEND: ENDUUO ;END OF PASS $BEND1: JRST BEGIN1 ;KEEP RUNNING PROGRAM $BEND2: EOPUUO ;END OF PROGRAM - NO RETURN CNTLC: SADR5 ;CONTROL C XFER ADDRESS ALTMGO: SADR6 ;ALTMODE XFER ADDRESS CPOPJ1: ;SKIP RETURN UUOSKP: AOS (P) ;SKIP RETURN FROM UUO CPOPJ: ;NON-SKIP REGULAR RETURN UUOEXT: RTN ;UUO RETURN UUORTN: JFCL ;ADDITIONAL USERS UUO ROUTINE $UORTX: JFCL ;ADDITIONAL UUO LINKAGE $UUOER: JFCL ;INITED AS (JRST $UOERX) $ITRHL: JFCL ;ADDITIONAL INTERRUPT LINKAGE $ITRX1: JFCL ; " $USRHL: JFCL ; " $RSRTX: JFCL ;ADDITIONAL POWER FAIL LINKAGE $RSRTY: JFCL ; " RESRT1: JFCL ; INITED AS (JRST RESRTX) RESRT2: JFCL ; " $PARER: JFCL ;ADDITIONAL PARITY ERROR LINKAGE ERMORE: JFCL ;ADDITIONAL ERROR HANDLER LINKAGE HALT . ;IMPROPER TRANSFER HALT $PSHER: 0 ;INITED AS (JRST PSHERR) ITRCH1: 0 ;PC & FLAGS OF CURRENT INTERRUPT 0 ;INITED AS (JRST $ITRC1) ; ********************************************************************** ;PROCESSOR CONTROL STORAGE ; ********************************************************************** $ACC0: 0 ;INTERRUPT SAVED AC0 $SVPI: 0 ;INTERRUPT SAVED PI $SVAPR: 0 ;INTERRUPT SAVED APR $SVPAG: 0 ;INTERRUPT SAVED PAG (DATAI) $SPAG1: 0 ;INTERRUPT SAVED PAG (CONI) $SVUUO: 0 ;CURRENT USERS UUO $SVUPC: 0 ;PC OF CURRENT USERS UUO REPTU: 0 ;REPEAT UUO ITERATIONS SCOPE: 0 ;ERROR HANDLER SCOPE LOOP FLAG %CORFLG:0 ; " CORRECT FLAG %COREC: 0 ; " CORRECT DATA %ACTFL: 0 ; " ACTUAL FLAG %ACTUL: 0 ; " ACTUAL DATA %DISCR: 0 ; " DISCREPENCY DATA ; ********************************************************************** ;UUO DISPATCH TABLE ; ********************************************************************** XLIST IFNDEF LUUO1, IFNDEF LUUO2, IFNDEF LUUO3, IFNDEF LUUO4, IFNDEF LUUO5, IFNDEF LUUO6, IFNDEF LUUO7, IFNDEF LUUO10, IFNDEF LUUO11, IFNDEF LUUO12, IFNDEF LUUO13, IFNDEF LUUO14, IFNDEF LUUO15, IFNDEF LUUO16, IFNDEF LUUO17, IFNDEF LUUO20, IFNDEF LUUO21, IFNDEF LUUO22, IFNDEF LUUO23, IFNDEF LUUO24, IFNDEF LUUO25, IFNDEF LUUO26, IFNDEF LUUO27, IFNDEF LUUO30, IFNDEF LUUO31, IFNDEF LUUO32, IFNDEF LUUO33, LIST UUODIS: LUUO1,,$UUOER LUUO3,,LUUO2 LUUO5,,LUUO4 LUUO7,,LUUO6 LUUO11,,LUUO10 LUUO13,,LUUO12 LUUO15,,LUUO14 LUUO17,,LUUO16 LUUO21,,LUUO20 LUUO23,,LUUO22 LUUO25,,LUUO24 LUUO27,,LUUO26 LUUO31,,LUUO30 LUUO33,,LUUO32 ; ********************************************************************** ;MEMORY MANAGMENT STORAGE ; ********************************************************************** DF22F: 0 ;DF10 CONTROL FLAG, 0 = 18, -1 = 22 BIT MAPNEW: 0 ;MEMORY MAPPING CONTROL FLAG, -1 = 4096K MAPPING MEMTOT: 0 ;TOTAL MEMORY SIZE IN K (1024.) MEMLOW: 0 ;LOWEST USABLE MEMORY MEMSIZ: BLOCK ^D41 ;MEMORY SEGMENT POINTER TABLE ; ********************************************************************** ;PRINT CONTROL STORAGE ; ********************************************************************** PNTFLG: 0 ;PRINT FLAG, -1 WHILE IN PRINT ROUTINE PNTENB: 0 ;PRINT ENABLE PDISF: 0 ;PRINT DISABLED FLAG PNTINH: 0 ;INHIBIT PRINT INPUT CHECKS PNTSPC: 0 ;PRINT SPACE CONTROL OPTIME: 0 ;TYPE-IN WAIT TIME $TWCNT: 0 ;TIME WAITED $DVOFF: 0 ;LOGICAL DEVICE INITED FLAG TTYFIL: 0 ;TTY EXEC FILLERS FLAG TTYSPD: 0 ;TTY EXEC BAUD RATE $TTCHR: 0 ;ACTUAL TYPED IN CHAR $CHRIN: 0 ;UPPER CASED & PARITY STRIPPED CHAR $TYPNB: 0 ;TYPED IN NUMBER $CRLF: 0 ;FREE CR/LF FLAG $TABF: 0 ;TAB CONVERSION FLAG $FFF: 0 ;FORM FEED CONVERSION FLAG $VTF: 0 ;VERTICAL TAB CONVERSION FLAG USRLFF: 0 ;USER LF FILLERS USRCRF: 0 ;USER CR FILLERS ; ********************************************************************** ;THE FOLLOWING MISCELLANEOUS PRINT CHARACTERS ARE INCLUDED ;TO FACILITATE PRINTING AND ARE CALLED AS FOLLOWS: ; MOVEI NAME ; PNTA ;OR PNTAF ; ********************************************************************** CRLF: ASCII/ / CRLF2: ASCII/ / COMMA: ASCII/,/ PERIOD: ASCII/./ SPACE: ASCII/ / TAB: ASCII/ / MINUS: HYPEN: ASCII/-/ PLUS: ASCII/+/ AST: ASCII/*/ ATSIN: ASCII/@/ LFP: ASCII/(/ RTP: ASCII/)/ BELL: BYTE (7) 007 QUEST: ASCII/?/ SLASH: ASCII!/! DOLLAR: ASCII/$/ RADIX: ^D10 ;DECIMAL PRINT RADIX RADLSP: 40 ;DECIMAL PRINT LEADING CHAR RADLSC: ^D10 ;DECIMAL PRINT LEADING CHAR COUNT ; ********************************************************************** ;USER MODE OUTPUT FILE INFORMATION ; ********************************************************************** $OBUF: BLOCK 3 ;LOGICAL FILE OUTPUT BUFFER HEADER $OUTNM: SIXBIT /PRINT/ ;FILE NAME $OUTEX: SIXBIT /PNT/ ;FILE NAME EXTENSION BLOCK 2 ; ********************************************************************** ;DISK UPDATE MODE FILE INFORMATION ; ********************************************************************** $IBUF: BLOCK 3 $INNM: SIXBIT /PRINT/ $INEXT: SIXBIT /PNT/ BLOCK 2 ; ********************************************************************** ;PUSHDOWN LIST CONTROL INFORMATION ; ********************************************************************** PLIST: PLIST-PLISTE,,PLIST PLISTS: BLOCK 200 PLISTE: 0 ;END OF PUSHDOWN LIST ; ********************************************************************** ;POWER LINE CLOCK FREQUENCY FLAG ; ********************************************************************** CYCL60: 0 ;0 = 60, -1 = 50 CYCLE ; ********************************************************************** ;KL10 CACHE CONTROL FLAGS ; ********************************************************************** CSHFLG: 0 ;ALLOW CACHE IF 0 CSHMEM: 0 ;CACHE MEMORY SEGMENTS IF 0 ; ********************************************************************** ;NUMBER INPUT DIGIT FLAG ; ********************************************************************** TTNBRF: 0 ;-1 IF ANY DIGIT TYPED ; ********************************************************************** ;KL10 & KI10 "INHPAG" SWITCH PAGING PREVENTION ; ********************************************************************** PVPAGI: 0 ;IF NON-ZERO, OVERRIDE "INHPAG" SWITCH ACTION ; ********************************************************************** ;ERROR REPORTING ROUTINE ADDITIONAL USERS CONTROL INSTRUCTIONS ; ********************************************************************** %ERHI1: 0 ;IF NON-ZERO, XCT'D AT START OF %ERUUO %ERHI2: 0 ;IF NON-ZERO, XCT'D AT END OF %ERUUO %ERHI3: 0 ;IF NON-ZERO, XCT'D AFTER "PC" OF %ERUUO ; ********************************************************************** ;SPECIAL USERS UUO INTERCEPT INSTRUCTION ; ********************************************************************** $$UUO: 0 ;IF NON-ZERO, XCT'D AT START OF $UORTN ; ********************************************************************** ;USER MODE MONITOR TYPE FLAG ; ********************************************************************** MONTYP: 0 ;0 = TOPS10, -1 = TOPS20 ;*********************************************************************^ ;*KL10 PROCESSOR TYPE FLAG, 0=P0, 1=BBD NEW, 2=BBD OLD ;*********************************************************************^ KLTYP: 0 ; ********************************************************************** ;SPECIAL USERS MUUO INTERCEPT INSTRUCTION ; ********************************************************************** $$MUUO: 0 ;IF NON-ZERO, XCT'D AT START OF MUUOER ; ********************************************************************** ;SPECIAL USERS USER MODE OUTPUT ERROR INTERCEPT INSTUCTION ; ********************************************************************** $$OUTER:0 ;IF NON-ZERO, XCT'D AT END OF USER MODE ERROR ; ********************************************************************** ;"SWITCH" CALL USAGE CONTROL ; ********************************************************************** $$TOGGLE:0 ;IF NON-ZERO, USE C(CONSW) FOR SWITCHES ; ********************************************************************** ;SPECIAL USERS ALTMODE SWITCH CALL INTERCEPT INSTRUCTIONS ; ********************************************************************** $$TAX1: 0 ;IF NON-ZERO, XCT'D AT START OF ALTMODE SWITCH CALL $$TAX2: 0 ;IF NON-ZERO, XCT'D AT END OF ALTMODE SWITCH CALL ; ********************************************************************** ;SM10 (KS-10) PROCESSOR TYPE FLAG ; ********************************************************************** SM10: 0 ;IF -1 THIS IS A KS-10 ; ********************************************************************** ;RIGHT HALF SWITCHES PROMPT TABLE ADDRESS ; ********************************************************************** SWPTAB: 0 ;0 = NO PROMPT, ADR = ADR OF SIXBIT PROMPT TABLE ; ********************************************************************** ;SPECIAL FUTURE EXPANSION ROOM ; ********************************************************************** ; ********************************************************************** ;END OF FIXED STORAGE ; ********************************************************************** LOC 30577 ENDFIX: 0 ;END OF FIXED STORAGE ;INITIALIZE UUO HANDLER START: ;PGMINT ;INITIALIZE SUBROUTINES MOVE 0,RANDBS ;EXEC, SETUP RANDOM BASE SKIPE USER ;USER, USE TIME OF DAY IN JIFFIES ;CALL 0,[SIXBIT/TIMER/] MOVEM 0,RAN ;SETUP RANDOM BASE ;INITIALIZE COMPLEXITY TABLE A=0 STARTA: SETZM CMPLXT ;STORE A TABLE OF POWERS OF 2 MOVEI 1,1 ;OR 0. ;SWITCH TLNN RELIAB ;FAST CYCLE SWITCH SET ? SETZM 1 ;YES, STORE ZERO'S REPEAT 7, < MOVEM 1,CMPLXT+1+A LSH 1,1 A=A+1> ;INITIALIZE RUN TIME MOVEI 1,1 TLNE RELIAB ;FAST CYCLE SWITCH SET ? MOVEI 1,7 ;NO, MULTIPLY RUNNING TIME MOVEM 1,RTIME ;STORE IN RTIME JRST CAM1 ;GO PERFORM DIAGNOSTIC RENTR1: ;DROPDV ;CLOSE LOGICAL OUTPUT FILE ;CALL [SIXBIT .EXIT.] PGMNAM: ASCIZ/ PDP-10 KA10 BASIC INSTRUCTION RELIABILITY TEST 1 (DAKBA) (COMPARES, SKIPS, EXCHANGES, BOOLE, ROTATES, TESTS, ETC.) / ;CONSTANTS RTIME: 0 CMPLXT: BLOCK 20 SUBTTL DIAGNOSTIC SECTION LALL ;TEST CAMN,CAME (SIMPLE) ;THE CONTENTS OF THE AC IS COMPARED WITH ITSELF ;AN ERROR WILL OCCUR IF CAMN SKIPS OR CAME FAILS TO SKIP ;ERRORS ARE IN THE FORM (PC,AC,C(AC),CORRECT) ;15 ACS ARE USED IN THE TEST AC=2 CAM1: SETUP 20,0 RANDOM CAMNE1: REPEAT ^D10, < MOVE AC,RAN CAMN AC,AC ;C(AC) = C(AC) CAME AC,AC ERROR AC,AC ;CHECK CAME,CAMN AC=&17 > AC=2 LOOP CAMNE1-3,CAMNE1 ;TEST MOVE TO AC,FURTHER TEST OF CAME ;THE C(AC) IS COMPARED WITH THE CONTENTS OF THE RANDOM ;NUMBER GENERATOR. 15 ACS ARE USED IN THE TEST ;ERRORS ARE PRINTED IN THE FORM (PC,AC,C(AC),CORRECT) AC=2 MOVAC: SETUP 20,0 RANDOM MOVAC1: REPEAT ^D10, < MOVE AC,RAN ;MOVE RAN INTO AC. CAME AC,RAN ;RANDOM SHOULD EQUAL AC ERROR AC,RAN ;IF NOT MOVE FAILED CAME AC,RAN# ;IF AC=RAN CAME FAILED ERROR AC,RAN# ;IF PREVIOUS WORKED,INHIBIT STORE AC=&17 ;AC ON CAME FAILED > AC=2 LOOP MOVAC1-3,MOVAC1 ;TEST THE SKIP INST FOR NO SKIP,ABILITY TO LOAD ;AN AC,AC SELECTION,AND AC0 LOGIC(NOT LOADING 0) ;ERRORS ARE PRESENTED IN THE FORM(PC,AC,C(AC),CORRECT) AC=5 SKP: SETUP 30,0 RANDOM SKP1: MOVE [0] ;DO NOT USE AC0 FOR SKIP REPEAT ^D8, < SKIP AC1,RAN# ;STORE IN AC,DO NOT SKIP,CHECK CAME AC1,AC ;NEW AC AGAINST PREVIOUSLY ERROR AC1,AC ;STORED AC. IF AC=AC+1(SKIP LOGIC) CAME [0] ;IF NOT= STORE CYCLE ERROR [0] ;IF 0 NONE ZERO ADDR/STORE AC=&17 AC1=&17 > AC=5 LOOP SKP1-4,SKP1 ;TEST SKIPA INST FOR PC INCREMENT,ABILITY TO LOAD AN AC, ;AC SELECTION AND AC0 LOGIC(NOT LOADING 0).ERRORS ARE ;PRESENTED IN THE FORM (PC,AC,C(AC),CORRECT) AC=5 SKPA: SETUP 30,0 RANDOM SKPA1: MOVE [0] ;DO NOT USE AC0 FOR SKIPA REPEAT ^D8, < SKIPA AC1,AC ;LOAD AC1 AND SKIP ER AC,[ASCII /SKP/] ;FAILED TO SKIP. CAME AC,RAN ;C(E) GET CHANGED? ERROR AC,RAN ;YES. CAME AC1,RAN ;AC GET LOADED WITH RAN? ERROR AC1,RAN ;NO. CAME 0,[0] ;C(AC0) STILL = 0? ERROR [0] ;CHECK STORE CYCLE,AC ADDRESS AC=&17 AC1=&17 > AC=5 LOOP SKPA1-4,SKPA1 ;TEST EXCH. BOTH AC AND E ARE AC'S. CHECK FOR ;CORRECT DATA IN AC AND C(E). ;C(E) = -1, C(AC) = RAN NUM. AC=5 EXCH1: SETUP 200,0 EXCH2: RANDOM EXCH3: SETOB AC1,RAN1 ;MAKE C(E) = -1. EXCH AC,AC1 ;DO THE EXCH. CAME AC,RAN1 ;THE C(AC) SHOULD = ORIG C(E). ERR RAN1,RAN CAME AC1,RAN ;THE C(E) SHOULD = ORIG C(AC). ERR RAN1,RAN LOOP EXCH2,EXCH3 ;TEST SETCA FOR COMPLEMENT AC AND NOT STORING IN C(E) ;ERRORS ARE IN THE FORM (PC,AC,C(AC),CORRECT) ;SETCA DOES NOT NORMALLY CHANGE THE CONTENTS OF "E" AC=10 BOLCA: REPEAT 2, < SETUP 100,2 RANDOM MOVE AC2,[0] ;CLEAR AC2, USED TO INSURE SETCA AC,AC2 ;SETCA DOES NOT STORE IN C(E) CAMN AC,RAN# ;IF AC UNCHANGED CNTL PULSES ERROR AC,RAN ;FOR INST SETCA FAILED REPEAT 3, < SETCA AC,AC2> CAME AC,RAN# ;A TOTAL OF 4 COMPLEMENTS ERROR AC,RAN ;SHOULD PRODUCE ORIGINAL NUM CAME AC2,[0] ;IF SETCA STORED C(E) ERROR AC2,[0] ;C(AC2) WILL NO LONGER BE 0. LOOP .-16,.-15 AC=AC+17 > ;TEST SETCAI ABILITY TO COMPLEMENT AC AND FAILURE TO FETCH C(E) ;ERRORS ARE IN THE FORM (PC,AC,C(AC),CORRECT ;SETCA IS INDEXED FOR NOISE PURPOSES AC=5 BOLCAI: SETUP 40,0 BOLCA1: RANDOM BOLCA2: REPEAT 4, < MOVE AC1,AC ;MOVE RANDOM TO AN AC SETCAI AC1,-1(AC) ;TWO COMP SHOULD PRODUCE SETCAI AC1,777000(AC) ;ORIGINAL NUMBER CAME AC1,AC ;SETCAI FAILED ERROR AC1,AC AC=&17 AC1=&17 > AC=5 LOOP BOLCA1,BOLCA2 ;TEST XOR TO ZERO,XOR 0 TO N,N TO N,-1 TO N ;THREE ACS ARE USED IN THE TEST ;ERRORS ARE IN THE FORM (PC,AC,C(AC),CORRECT AC=1 BOLX: REPEAT 3, < SETUP 200,0 RANDOM MOVE AC,[0] ;CLEAR THE AC XOR AC,RAN ;0 EXCLUSIVE ORED WITH CAME AC,RAN ;RANDOM SHOULD = RANDOM ERROR AC,RAN ;XOR FAILED XOR AC,[0] ;ANY NUMBER XORED CAME AC,RAN ;WITH THE NUMBER 0 ERROR AC,RAN ;SHOULD REMAIN UNCHANGED XOR AC,RAN ;ANY NUMBER XORED CAME AC,[0] ;WITH ITSELF SHOULD ERROR AC,[0] ;EQUAL 0 XOR AC,[-1] ;SET AC TO ALL ONES XOR AC,RAN ;AC SHOULD CONTAIN COMP OF RAN XOR AC,[-1] ;RECOMPLEMENT AC TO ORIG CAME AC,RAN ;CHECK FOR RANDOM ERROR AC,RAN ;XOR FAILED LOOP .-22,.-21 AC=AC+1 > ;TEST SETZI AND IOR. SETZI ABILITY TO CLEAR,IOR RAN TO 0, ;RANDOM TO RANDOM,RANDOM TO COMP RANDOM,0 TO RANDOM ;ERROR IN THE FORM (PC,AC,C(AC),CORRECT) AC=5 BOLZI: SETUP 100,0 RANDOM BOLZI1: REPEAT 2, < MOVE AC,RAN# ;LOAD THE AC THEN SETZI AC,(AC) ;TRY TO CLEAR IT,INDEX REDUNDANT CAME AC,[0] ;IF NOT 0 ERROR AC,[0] ;SETZI FAILED IOR AC,RAN ;INCLUSIVE OR OF A CAME AC,RAN ;NUMBER TO 0 SHOULD PRODUCE ERROR AC,RAN ;THE NUMBER IOR AC,RAN ;IOR SAME NUMBERS CAME AC,RAN ;SHOULD HAVE NO EFFECT ERROR AC,RAN ;ON AC.IOR FAILED IOR AC,[0] ;IOR OF NO BITS SHOULD DO NOTHING CAME AC,RAN ERROR AC,RAN ;IOR FAILED SETCA AC,0 IOR AC,RAN ;INCLUSIVE OR OF COMP NUMBERS CAME AC,[-1] ;SHOULD SET ALL BITS ERROR AC,[-1] ;IOR FAILED IOR AC,[-1] ;ALL BITS TO ALL BITS CAME AC,[-1] ;PRODUCE ALL BITS ERROR AC,[-1] AC=&17 > AC=5 LOOP BOLZI1-4,BOLZI1 ;TEST AND FOR 0 TO 0,1 TO 1,0 TO 1,1 TO 0 ;ERRORS ARE IN THE FORM (PC,AC,C(AC),CORRECT) AC=10 BOLA: SETUP 400,0 RANDOM BOLA1: AND AC,RAN ;NUMBER AND NUMBeR CAME AC,RAN ;SHOULD EQUAL NUMBER ERROR AC,RAN ;IF NOT, "AND" FAILED. AND AC,[-1] ;"AND" OF ALL BITS WITH CAME AC,RAN ;ANY NUMBER SHOULD ERROR AC,RAN ;LEAVE THE NUMBER UNCHANGED SETCA AC, AND AC,RAN ;"AND" OF A NUMBER WITH ITS CAME AC,[0] ;COMPLEMENT SHOULD ERROR AC,[0] ;PRODUCE 0 LOOP BOLA1-4,BOLA1 ;TEST ORCA AND SETO. 1 TO 0,1 TO 1, 0 TO 0, 1 TO 0,0 TO 1 ;ERRORS ARE IN THE FORM (PC,AC,C(AC),CORRECT) ;ONE AC IS USED FOR TESTING AC=12 BOLOS: SETUP 300,0 RANDOM BOLOS1: SETO AC,. ;WILL CHANGE THIS INST IF FETCH/STORE C(E). CAME AC,[-1] ;CHECK FOR ALL BITS SET ERROR AC,[-1] ;SETO FAILED ORCA AC,RAN ;-1 ORED TO RANDOM CAME AC,RAN ;SHOULD PRODUCE RANDOM ERROR AC,RAN ;IF AC COMP PROBELY ORCA AC,RAN ;RANDOM TO RANDOM SHOULD CAME AC,[-1] ;PRODUCE -1 ERROR AC,[-1] ;IF AC COMPLEMENTED PROPERLY ORCA AC,[0] ;WITH NO BITS EFFECT IC COMP AC ORCA AC,RAN CAME AC,[-1] ;NO BITS COMPLEMENTS TO PRODUCE ERROR AC,[-1] ;ALL ONES LOOP BOLOS1-4,BOLOS1 ;TEST ANDCA.1 TO 1,0 TO 0, 0 TO 1,0 TO 0,1 TO 1,1 TO 0 ;ERRORS ARE IN THE FORM(PC,AC,C(AC),CORRECT ;ONE AC IS USED AC=13 BOLAC: SETUP 200,1 RANDOM BOLAC1: ANDCA AC,RAN ;ANDCA OF LIKE NUMBERS CAME AC,[0] ;SHOULD PRODUCE 0 ERROR AC,[0] ;ANDCA FAILED ANDCA AC,RAN CAME AC,RAN ;ANDCA OF ZERO AND NUMBER ERROR AC,RAN ;SHOULD PRODUCE NUMBER SETO AC,. ;SET ALL BITS ANDCA AC,RAN CAME AC,[0] ;ANDCA OF ALL BITS WITH NUMBER ERROR AC,[0] ;SHOULD PRODUCE 0 LOOP BOLAC1-4,BOLAC1 ;TEST EQV,1 TO 1,0 TO 0,1 TO 0,0 TO 1. EQV =(SET ALL LIKE BITS) ;ERRORS ARE IN THE FORM (PC,AC,C(AC),CORRECT) AC=14 BOLEQ: SETUP 200,2 RANDOM BOLEQ1: EQV AC,RAN ;WHEN NUMBERS ARE EQUAL CAME AC,[-1] ;EQV SHOULD PRODUCE ALL ERROR AC,[-1] ;BITS SET.EQV FAILED EQV AC,RAN# CAME AC,RAN ;WITH AC SET,EQV SHOULD ERROR AC,RAN ;PRODUCE C(E) IN THE AC SETZI AC,-1 EQV AC,RAN ;WHEN AC=0 EQV SHOULD SETCA AC,. ;PRODUCE COMPLEMENT OF CAME AC,RAN ;C(E) ERROR AC,RAN ;EQV FAILED LOOP BOLEQ1-3,BOLEQ1 ;TEST SETM. SET THE CONTENTS OF MEMORY TO THE AC ;ERRORS ARE IN THE FORM (PC,AC,C(AC),CORRECT) AC=10 BOLSM: SETUP 100,0 RANDOM BOLSM1: REPEAT 2, < SETM AC1,RAN ;THE NET RESULT OF SETM CAME AC1,AC ;IS THE SAME AS MOVE ERROR AC1,RAN ;SETM FAILED AC=&17 AC1=&17 > AC=10 LOOP BOLSM1-4,BOLSM1 ;TEST SETCM. (MOVE THE COMPLEMENT OF MEMORY TO AC) ;ERRORS ARE IN THE FORM (PC,AC,C(AC),CORRECT) AC=14 BOLCM: SETUP 100,0 RANDOM BOLCM1: SETCM AC1,RAN ;COMP OF RANDOM TO AC SETCM AC2,AC1 ;RECOMP TO AC2 CAME AC2,RAN ERROR AC2,RAN ;SETCM 1 OR 2 FAILED LOOP BOLCM1-3,BOLCM1 ;TEST ORCM. (INCLUSIVE OR THE CONTENTS OF COMPLEMENTED MEMORY ;TO THE CONTENTS OF AC.) ERRORS ARE IN THE FORM (PC,AC, ;C(AC),CORRECT AC=5 BOLOC: SETUP 140,0 RANDOM BOLOC1: ORCM AC,RAN ;LIKE NUMBERS SHOULD PRODUCE CAME AC,[-1] ;ALL BITS SET ERROR AC,[-1] ORCM AC,RAN ;ANY NUMBER ORED WITH ALL CAME AC,[-1] ;ONES SHOULD PRODUCE ERROR AC,[-1] ;ALL ONES SETZI AC,-1 ORCM AC,RAN ;THE RANDOM NUMBER IS SETCA AC,. ;ORED TO 0. THIS SHOULD CAME AC,RAN ;PRODUCE THE COMPLEMENT ERROR AC,RAN ;OF RANDOM ORCM AC,[-1] CAME AC,RAN ;ORING -1 SHOULD LEAVE ERROR AC,RAN ;AC UNCHANGED LOOP BOLOC1-3,BOLOC1 ;TEST ANDCM (AND WITH THE COMP OF MEMORY) ;ERRORS ARE IN THE FORM (PC,AC,C(AC),CORRECT) AC=10 BOLAX: SETUP 140,0 RANDOM BOLAX1: ANDCM AC,RAN ;LIKE NUMBERS SHOULD CAME AC,[0] ;PRODUCE 0 ERROR AC,[0] ;ANDCM FAILED ANDCM AC,RAN ;ANYTHING ANDED TO CAME AC,[0] ;ZERO SHOULD = 0 ERROR AC,[0] SETO AC, ANDCM AC,RAN ;AC SHOULD - COMP OF MEMORY ANDCM AC,[0] ;AC SHOULD REMAIN UNCHANGED XOR AC,[-1] ;COMP AC CAME AC,RAN ;AFTER COMP SHOULD EQUAL ERROR AC,RAN ;RANDOM. ANDCM FAILED LOOP BOLAX1-3,BOLAX1 ;TEST ORCB (INCLUSIVE OR THE COMPLEMENT OF AC AND C(E)) ;ERRORS ARE IN THE FORM (PC,AC,C(AC),CORRECT) AC=1 BOLOB: SETUP 140,0 RANDOM BOLOB1: ORCB AC,RAN ;PRODUCE COMP OF RAN ORCB AC,[-1] ;COMP AC CAME AC,RAN ;CHECK ORCB ERROR AC,RAN ORCB AC,[-1] ;COMP AC ORCB AC,RAN ;ANY TWO COMPLEMENTED NUMBERS CAME AC,[-1] ;SHOULD PRODUCE ALL ONES ERROR AC,[-1] ORCB AC,[0] ;AC COMPLEMENTS TO 0 CAME AC,[-1] ERROR AC,[-1] ;ORCB FAILED LOOP BOLOB1-4,BOLOB1 ;TEST ANDCB (AND WITH BOTH OPERANDS COMPLEMENTED) ;ERRORS ARE IN THE FORM (PC,AC,C(AC),CORRECT) AC=2 BOLAB: SETUP 140,0 RANDOM BOLAB1: ANDCB AC,RAN ;PRODUCE COMP OF RAN ANDCB AC,[0] ;COMP AC CAME AC,RAN ;CHECK FOR ORIGIONAL NUMBER ERROR AC,RAN ;ANDCB FAILED ANDCB AC,[0] ;COMPLEMENT AC ANDCB AC,[0] ;RECOMPLEMENT AC CAME AC,RAN ;SHOULD PRODUCE ORIGIONAL ERROR AC,RAN ;ANDCB FAILED ANDCB AC,[-1] ;RESULT SHOULD BE 0 IF CAME AC,[0] ;CONTENTS OF E ERROR AC,[0] ;CONTAINS NO BITS AFTER COMP ANDCB AC,RAN ;AC SHOULD EQUAL COMP OF RAN ANDCB AC,[0] ;COMP AC CAME AC,RAN ;THE AND TO 0 ERROR AC,RAN ;FAILED LOOP BOLAB1-3,BOLAB1 ;TEST SETA (EFFECTIVELY A NO OPERATION IN THIS MODE) ;ERRORS ARE IN THE FORM (PC,AC,C(AC),CORRECT) AC=3 BOLSA: SETUP 100,0 RANDOM ;DO 7 SETA'S. BOLSA1: REPEAT 7,< SETA AC,.> CAME AC,RAN ;C(AC) SHOULD = ORIG. C(AC) ERROR AC,RAN LOOP BOLSA1-3,BOLSA1 ;TEST IORM, WHERE E IS AN AC. THE INST IS TESTED ;FOR NOT STORING IN AC AS WELL AS STORING PROPERLY ;IN E. ;ERRORS ARE IN THE FORM (PC,AC,C(AC),CORRECT) AC=11 BMIOR: SETUP 100,1 BMIOR1: RANDOM BMIOR2: MOVS AC1,AC ;AC=C(E) ORIG CAMN AC,AC1 ;HALVES SAME? JRST BMIOR1 ;YES. REJECT. SETCM AC ;SIM AN AND AC1 ;IOR XOR AC ;INST IORM AC,AC1 ;RESULT TO AC1 CAMN AC,AC1 ;BOTH SAME? ERROR AC,AC1 ;YES. STORED IN AC. CAME AC1,0 ;C(E) = SIM. ANS? ERROR AC,0 ;NO. IORM FAILED. LOOP BMIOR1,BMIOR2 ;TEST ORCAM, WHERE E IS AN AC. THE INSTRUCTION IS TESTED ;FOR NOT STORING IN AC AS WELL AS STORING PROPERLY IN C(E). ;ERRORS ARE IN THE FORM (PC,AC,C(AC),CORRECT) AC=12 BMICA: SETUP 100,1 BMICA1: RANDOM BMICA2: MOVS AC1,AC ;SECOND RANDOM NUMBER SETCM AC2,AC1 ;MOVE COMPLEMENT OF NUMBER SETCM AC ;SIMULATE AND AC2 ;THE INSTRUCTION XOR AC ;IN AC0. ORCAM AC1,AC ;RESULT TO C(E) CAMN AC1,AC ;EQUAL? ERROR AC1,AC ;YES. STORED IN AC. CAME AC,0 ;C(E) = SIM. ANS? ERROR AC,0 ;NO. ORCAM FAILED. LOOP BMICA1,BMICA2 ;TEST ORCMM, WHERE E IS AN AC. THE INSTRUCTION ;IS TESTED FOR NOT STORING IN AC AS WELL AS THE ;CORRECT ANSWER IN C(E). ;ERRORS ARE IN THE FORM (PC,AC,C(AC),CORRECT) AC=13 BMICM: SETUP 100,0 BMICM1: RANDOM BMICM2: MOVS AC1,AC ;SECOND RANDOM NUMBER SETCM AC2,AC ;SIMULATE SETCM AC1 ;THE AND AC2 ;INSTRUCTION XOR AC1 ;IN AC0 CAMN 0,AC1 ;IS SIMULATED ANS JRST BMICM1 ;= C(AC)?...REJECT. ORCMM AC1,AC ;IF AC1 = AC, STORE INHIBIT CAMN AC1,AC ERROR AC1,AC ;FAILED. CAME AC,0 ;C(E) SHOULD = SIM. ANS. ERROR AC,0 ;ORCMM FAILED. LOOP BMICM1,BMICM2 ;TEST ORCBM, WHERE E IS AN AC. THE INSTRUCTION ;IS TESTED FOR NOT STORING IN AC AS WELL AS THE ;CORRECT ANSWER IN C(E). ;ERRORS ARE IN THE FORM (PC,AC,C(AC),CORRECT) AC=14 BMICB: SETUP 200,0 BMICB1: RANDOM BMICB2: MOVS AC1,AC ;AC1= 0101,0011 SETCM AC2,AC ;AC2= 1100,1010 SETCM AC2 ;AC0 = 0011,0101 ANDCM AC1 ;AC0 = 0010,0100 XOR AC2 ;AC0 = 1110,1110 ORCBM AC1,AC ;SHOULD PRODUCE SAME LOGIC CAMN AC1,AC ;EQUAL? ERROR AC1,AC ;YES. INHIBIT STORE AC FAILED. CAME AC,0 ;C(E) SHOULD = SIM. ANS. ERROR AC,0 ;ORCBM FAILED. LOOP BMICB1,BMICB2 ;TEST XORM, WHERE E IS AN AC. THE INSTRUCTION IS ;TESTED FOR NOT STORING AC AS WELL AS CONTENTS ;OF E CORRECTNESS. ;ERRORS ARE IN THE FORM (PC,AC,C(AC),CORRECT) AC=10 BMX: SETUP 200,1 BMX1: RANDOM BMX2: JUMPE AC,BMX1 ;REJECT IF RAN = 0. MOVS AC1,AC ;SECOND RANDOM NUMBER. SETCM AC ANDCA AC1 ;PERFORM MOVE AC2,AC ;A PSEUDO IOR AC2,AC1 ;EXCLUSIVE ANDCA AC2 ;OR INSTRUCTION XORM AC1,AC ;DO THE XOR CAMN AC1,AC ;EQUAL? ERROR AC1,AC ;YES. INHIBIT STORE AC FAILED. CAME AC,0 ;C(E) SHOULD = SIM. ANS. ERROR AC,0 ;XORM FAILED. LOOP BMX1,BMX2 ;TEST EQVM, WHERE E IS AN AC. THE INSTRUCTION ;IS TESTED FOR NOT STORING AC AS WELL AS ;CORRECTNESS OF C(E). ;ERRORS ARE IN THE FORM (PC,AC,C(AC),CORRECT) AC=10 BMEQ: SETUP 100,0 BMEQ1: RANDOM BMEQ2: MOVS AC1,AC ;SECOND RANDOM NUMBER SETCM AC1 ;EQV IS SAME LOGIC XOR AC ;AS XOR WITH COMP AC EQVM AC1,AC ;EQV SETS ALL LIKE BITS CAMN AC1,AC ;EQUAL? ERROR AC1,AC ;YES. INHIBIT STORE AC FAILED. CAME AC,0 ;C(E) SHOULD = SIM. ANS. ERROR AC,0 ;EQVM FAILED. LOOP BMEQ1,BMEQ2 ;TEST ANDM, WHERE E IS AN AC. THE INSTRUCTION IS ;TESTED FOR NOT STORING IN AC AS WELL AS STORING ;PROPERLY IN C(E). ;ERRORS ARE IN THE FORM (PC,AC,C(AC),CORRECT) AC=3 BMAN: SETUP 100,0 BMAN1: RANDOM BMAN2: MOVS AC1,AC ;SECOND RANDOM NUMBER MOVE AC ;SIMULATE IOR AC1 ;AN "AND" XOR AC1 ;INSTRUCTION. XOR AC ;IN AC0 CAMN AC1,AC ;REJECT THE NUMBER JRST BMAN1 ;IF EQUAL. ANDM AC1,AC ;THE INSTRUCTION CAMN AC1,AC ;EQUAL? ERROR AC1,AC ;YES. INHIBIT STORE AC FAILED. CAME AC,0 ;C(E) SHOULD = SIM. ANS. ERROR AC,0 ;AND FAILED. LOOP BMAN1,BMAN2 ;TEST ANDCAM, WHERE E IS AN AC. THE INSTRUCTION IS ;TESTED FOR NOT STORING IN AN AC AS WELL AS ;STORING C(E) PROPERLY. ;ERRORS ARE IN THE FORM (PC,AC,C(AC),CORRECT) AC=4 BMACA: SETUP 100,0 BMACA1: RANDOM BMACA2: JUMPE AC,BMACA1 ;REJECT IF RAN = 0. MOVS AC1,AC ;SECOND RANDOM NUMBER SETM AC ;SIMULATE ORCA AC1 ;ANDCA SETCA ;LOGIC ANDCAM AC1,AC ;THE INSTRUCTION CAMN AC1,AC ;EQUAL? ERROR AC1,AC ;YES. INHIBIT STORE AC FAILED. CAME AC,0 ;C(E) SHOULD = SIM. ANS. ERROR AC,0 ;ANDCA FAILED. LOOP BMACA1,BMACA2 ;TEST ANDCMM, WHERE E IS AN AC. THE INSTRUCTION IS ;TESTED FOR NOT STORING IN AN AC AS WELL AS ;STORING C(E) PROPERLY. ;ERRORS ARE IN THE FORM (PC,AC,C(AC),CORRECT) AC=5 BMACM: SETUP 100,0 BMACM1: RANDOM BMACM2: JUMPE AC,BMACM1 ;REJECT IF RAN = 0. MOVS AC1,AC ;SECOND RANDOM NUMBER SETAM AC1,0 ;AC1 TO AC0. IOR AC ;SIMULATE XOR AC ;THE INSTUCTION CAMN 0,AC1 ;SIM ANS = C(AC)? JRST BMACM1 ;YES. REJECT. ANDCMM AC1,AC ;DO AN ANDCMM INSTRUCTION. CAMN AC1,AC ;EQUAL? ERROR AC1,AC ;YES. INHIBIT STORE AC FAILED. CAME AC,0 ;C(E) SHOULD = SIM. ANS. ERROR AC,0 ;ANDCMM FAILED. LOOP BMACM1,BMACM2 ;TEST ANDCBM, WHERE E IS AN AC. THE INSTRUCTION ;IS TESTED FOR NOT STORING IN AC AS WELL AS STORING ;PROPERLY IN C(E). ;ERRORS ARE IN THE FORM (PC,AC,C(AC),CORRECT) AC=7 BMACB: SETUP 100,0 BMACB1: RANDOM BMACB2: MOVS AC1,AC ;SECOND RANDOM NUMBER. SETCM AC1 ;SIMULATE SETCM 1,AC ;AN AND 1 ;ANDCBM INST. ANDCBM AC1,AC ;DO AN ANDCBM. CAMN AC1,AC ;EQUAL? ERROR AC1,AC ;YES. INHIBIT STORE AC FAILED. CAME AC,0 ;C(E) SHOULD = SIM. ANS. ERROR AC,0 ;ANDCBM FAILED. LOOP BMACB1,BMACB2 ;TEST SETCAM, WHERE E IS AN AC. THE INSTRUCTION ;IS TESTED FOR NOT STORING IN AC AS WELL AS ;PROPER C(E). ;ERRORS ARE IN THE FORM (PC,AC,C(AC),CORRECT) AC=10 BMCMM: SETUP 200,0 BMCMM1: RANDOM BMCMM2: MOVS AC1,AC ;CHECK FOR NO CHANGE CAMN AC1,AC ;IN 8 COMPLEMENTS JRST BMCMM1 ;REJECT IF HALF SAME. REPEAT 10,< SETCMM AC1,AC> CAMN AC1,AC ;EQUAL? ERROR AC1,AC ;YES. INHIBIT STORE AC FAILED. CAME AC,RAN ;C(E) SHOULD = ORIG. C(E). ERROR AC,RAN ;SETCMM FAILED. LOOP BMCMM1,BMCMM2 ;TEST SETCAM, WHERE E IS AN AC. TEST FOR NOT ;STORING IN AC AS WELL AS PROPER STORAGE IN C(E). ;ERRORS ARE IN THE FORM (PC,AC,C(AC),CORRECT) AC=11 BMCAM: SETUP 100,0 BMCAM1: RANDOM BMCAM2: MOVS AC1,AC ;SECOND RANDOM NUMBER. SETCM AC1 ;SIMULATE SETCAM. SETCAM AC1,AC ;DO SETCAM. CAMN AC1,AC ;EQUAL? ERROR AC1,AC ;YES. INHIBIT STORE AC FAILED. CAME AC,0 ;C(E) SHOULD = SIM. ANS. ERROR AC,0 ;SETCAM FAILED. LOOP BMCAM1,BMACM2 ;TEST SETAM, WHERE E IS AN AC. ;ERRORS ARE IN THE FORM (PC,AC,C(AC),CORRECT) AC=10 BMSA: SETUP 100,0 BMSA1: RANDOM BMSA2: MOVS AC1,AC ;SECOND RANDOM NUMBER CAMN AC1,AC JRST BMSA1 ;REJECT IF SAME. SETAM AC,AC1 ;C(AC) TO C(AC1) CAME AC,AC1 ;EQUAL? ERROR AC,AC1 ;NO. CAME AC1,RAN ;C(E) SHOULD = ORIG C(AC). ERROR AC1,RAN ;SETAM FAILED. LOOP BMSA1,BMSA2 ;TEST SETOM, WHERE E IS AN AC. ;ERRORS ARE IN THE FORM (PC,AC,C(AC),CORRECT) AC=10 BMSM: SETUP 100,0 BMSM1: RANDOM BMSM2: MOVS AC1,AC ;SECOND RANDOM NUMBER SETOM AC1,AC ;DO SETOM INST. CAMN AC1,AC ;EQUAL? ERROR AC1,AC ;YES. INHIBIT STORE AC FAILED. CAME AC,[-1] ;C(E) SHOULD = A -1. ERROR AC,[-1] ;SETOM FAILED. LOOP BMSM1,BMSM2 ;TEST SETMM, WHERE E IS AN AC. ;ERRORS ARE IN THE FORM (PC, AC,C(AC),CORRECT) AC=10 BMSMM: SETUP 100,0 BMSMM1: RANDOM BMSMM2: MOVS AC1,AC ;A SECOND RANDOM NUMBER CAMN AC,AC1 ;REJECT IF JRST BMSMM1 ;HALF SAME ;DO 8 SETMM...SHOULD NOT CHANGE C(E). REPEAT 10,< SETMM AC1,AC> CAMN AC1,AC ;EQUAL? ERROR AC1,AC ;YES. INHIBIT STORE AC FAILED. CAME AC,RAN ;C(E) SHOULD = ORIG. C(E). ERROR AC,RAN ;SETMM FAILED. LOOP BMSMM1,BMSMM2 ;TEST SETZM, WHERE E IS AN AC. TESTS FOR NOT STORING ;IN AC AS WELL AS STORING IN C(E) PROPERLY. AC=10 SETZM1: SETUP 40,0 SETZM2: RANDOM SETZM3: JUMPE AC,SETZM2 ;REJECT IF C(AC) = 0. SETOB AC1,RAN1 ;SET C(AC) TO ALL ONES. SETZM AC1,AC ;DO SETZM CAME AC,[0] ;DID AC GET CLEARED? EERR ,RAN1 ;NO. CAME AC1,[-1] ;DOES C(AC1) STILL = -1? EERR ,RAN1 ;NO. LOOP SETZM2,SETZM3 ;TEST ROT LEFT 3X(2X18). CHECKING FOR AC1 NOT CHANGED ;AS WELL AS C(AC) BEING THE PROPER NUMBER. ;ERRORS ARE IN THE FORM (PC,AC,C(AC),CORRECT) AC=10 ROTL2: SETUP 200,2 ROTL2A: RANDOM ROTL2B: SETOB AC1,RAN1 ;SET AC+1 TO ALL ONES. ;DO 6 X (ROT LEFT 18 PLACES). REPEAT 3,< ROT AC,22 ROT AC,22> CAME AC,RAN ;C(AC)SHOULD = C(AC) BEFORE ROT. EERRI ,22 CAME AC1,[-1] ;AC1 SHOULD NOT HAVE CHANGED. ERR RAN1,22 LOOP ROTL2A,ROTL2B ;TEST ROT RIGHT 3X(2X18)..CHECKING FOR AC1 NOT ;CHANGED AS WELL AS C(AC) ENDING UP BEING ;THE SAME AS IT WAS BEFORE THE ROT. ;ERRORS ARE IN THE FORM (PC,AC,C(AC),CORRECT) AC=10 ROTR2: SETUP 300,2 ROTR2A: RANDOM ROTR2B: SETOB AC1,RAN1 ;SET AC+1 TO ALL ONES. ;DO 6 X (ROT RIGHT 18 PLACES). REPEAT 3,< ROT AC,-22 ROT AC,-22> CAME AC,RAN ;C(AC) SHOULD = C(AC) BEFORE ROT. EERR ,-22 CAME AC1,[-1] ;C(AC1) SHOULD STILL = -1. ERRI RAN1,-22 LOOP ROTR2A,ROTR2B ;TEST ROT LEFT 3X36. CHECKING FOR AC1 NOT ;CHANGED AND C(AC) = WHAT IT WAS BEFORE ;ROT. ;ERRORS ARE IN THE FORM (PC,AC,C(AC),CORRECT) AC=2 RTL36: SETUP 300,2 RTL36A: RANDOM RTL36B: SETOB AC1,RAN1 ;SET AC+1 TO ALL ONES. ;DO 3 X (ROT LEFT 36 PLACES). REPEAT 3,< ROT AC,44> CAME AC,RAN ;C(AC) SHOULD = C(AC) BEFORE ROT. EERRI ,44 CAME AC1,[-1] ;C(AC1) SHOULD STILL = -1. ERRI RAN1,44 LOOP RTL36A,RTL36B ;TEST ROT RIGHT 3X36. CHECKING FOR AC1 NOT ;CHANGED AND C(AC) = WHAT IT DID BEFORE ROT. ;ERRORS ARE IN THE FORM (PC,AC,C(AC),CORRECT) AC=2 RTR36: SETUP 300,2 RTR36A: RANDOM RTR36B: SETOB AC1,RAN1 ;SET AC+1 TO ALL ONES. ;DO 3 X (ROT RIGHT 36 PLACES). REPEAT 3,< ROT AC,-44> CAME AC,RAN ;C(AC) SHOULD = RAN. EERRI ,-44 CAME AC1,[-1] ;C(AC1) SHOULD STILL = -1. ERRI RAN1,-44 LOOP RTR36A,RTR36B ;TEST ROTC LEFT 3X36 THROUGH ALL AC'S CHECKING ;FOR C(AC) AND C(AC1) BEING EXCHANGED ;AFTER THE ROTC. ;ERRORS ARE IN THE FORM (PC,AC,C(AC),CORRECT) AC=2 RTCL: SETUP 100,2 RTCLA: RANDOM RTCLB: REPEAT ^D10,< MOVE AC,RAN ;MOVE A RAN NUM INTO AN AC. SETOB AC1,RAN1 ;SET AC+1 TO ALL ONES. ;DO 3 X (ROTC LEFT 36 PLACES). REPEAT 3,< ROTC AC,44> CAME AC1,RAN ;C(AC1) SHOULD = RAN. EERRI ,44 CAME AC,[-1] ;C(AC) SHOULD = A -1. ERRI RAN1,44 AC=&17 AC1=&17 > AC=2 LOOP RTCLA,RTCLB ;TEST ROTC RIGHT 3X36 THROUGH ALL AC'S. CHECKING ;FOR C(AC) AND C(AC1) BEING EXCHANGED. ;ERRORS ARE IN THE FORM (PC,AC,C(AC),CORRECT) AC=2 RTCR: SETUP 100,2 RTCRA: RANDOM RTCRB: REPEAT ^D10,< MOVE AC,RAN ;MOVE A RAN NUM INTO AN AC. SETOB AC1,RAN1 ;SET AC+1 TO ALL ONES. ;DO 3 X (ROTC RIGHT 36 PLACES). REPEAT 3,< ROTC AC,-44> CAME AC1,RAN ;C(AC1) SHOULD = C(AC) BEFORE ROTC. EERRI ,-44 CAME AC,[-1] ;C(AC) SHOULD = C(AC1) BEFORE ROTC. ERRI RAN1,-44 AC=&17 AC1=&17 > AC=2 LOOP RTCRA,RTCRB ;TEST ROT. ROT A RANDOM NUMBER A RANDOM NUMBER OF TIMES ;IN ONE DIRECTION AND THEN THE SAME NUMBER OF TIMES ;IN THE OPPOSITE DIRECTION. ;ERRORS ARE IN THE FORM (PC,AC,C(AC),CORRECT). AC=2 ROTLR: SETUP 100,4 ROTLR1: RANDOM MOVE AC3,RAN ;CHECK TO SEE AND AC3,[377] ;THAT THE RIGHT MOST 8 BITS JUMPE AC3,ROTLR1 ;DO NOT = 0..REJECT IF THEY DO. ROTLR2: MOVN AC2,RAN ;PUT 2'S COMP OF RAN INTO AC2. SETOB AC1,RAN1 ;SET AC+1 TO ALL ONES. ROT AC,(AC) ;ROT AC A RANDOM NUMBER OF TIMES. ROT AC,(AC2) ;ROT AC THE SAME NUM OF TIMES ;IN THE OPPOSITE DIRECTION. CAME AC,RAN ;C(AC) SHOULD STILL = C(RAN). ERROR AC,RAN CAME AC1,[-1] ;C(AC1) SHOULD STILL = -1. ERROR AC1,[-1] LOOP ROTLR1,ROTLR2 ;TEST ROTC. DO A ROTC WITH A RANDOM NUMBER A RANDOM ;NUMBER OF TIMES IN ONE DIRECTION AND THEN THE SAME ;NUMBER OF TIMES IN THE OPPOSITE DIRECTION. ;REPEAT THIS TEST FOR ALL AC'S. ;ERRORS ARE IN THE FORM (PC,AC,C(AC),CORRECT) AC=2 RTCLR: SETUP 200,3 RTCLR1: RANDOM MOVE AC3,RAN ;CHECK TO SEE AND AC3,[377] ;THAT THE RIGHT MOST 8 BITS JUMPE AC3,RTCLR1 ;DO NOT = 0..REJECT IF THEY DO. RTCLR2: REPEAT ^D10,< MOVE AC,RAN ;MOVE A RAN NUM INTO AN AC. MOVN AC2,RAN ;MOVE THE 2'S COMP INTO ANOTHER AC. SETO AC1, ;SET AC1 TO ALL ONES. ROTC AC,(AC) ;ROTC AC A RANDOM NUMBER OF ;TIMES IN ONE DIRECTION. ROTC AC,(AC2) ;ROTC AC THE SAME NUMBER OF ;TIMES IN THE OPPOSITE DIRECTION. CAME AC,RAN ;C(AC) SHOULD STILL = RAN. ERROR AC,RAN CAME AC1,[-1] ;C(AC1) SHOULD STILL =-1 ERROR AC1,[-1] AC=&17 AC1=&17 AC2=&17 > AC=2 LOOP RTCLR1,RTCLR2 ;TEST OVERFLOW ON A ROT LEFT...AROV SHOULD NOT COME UP. AC=2 ROTOV: SETUP 20,0 ROTOV1: RANDOM ROTOV2: JUMPE AC,ROTOV1 ;REJECT IF RAN = 0. CAMN AC,[-1] ;ALSO REJECT IF RAN = -1. JRST ROTOV1 JFCL 10,.+1 ;CLEAR OV FLAG. ROT AC,256 ;ROT C(AC) 256 TIMES. JFCL 10,.+2 ;OV FLAG GET SET? JRST .+2 ;NO. ER AC,[ASCII /OV/] ;YES. SHOULD NOT SET ON A ROT. LOOP ROTOV1,ROTOV2 ;TEST OVERFLOW FLAG ON A ROT RIGHT...SHOULD NEVER GET SET. AC=3 RTROV: SETUP 20,0 RTROV1: RANDOM RTROV2: JUMPE AC,RTROV1 ;REJECT IF RAN = 0. CAMN AC,[-1] ;ALSO REJECT IF RAN = -1. JRST RTROV1 JFCL 10,.+1 ;CLEAR OVERFLOW FLAG. ROT AC,-256 ;ROT AC RIGHT 256 TIMES. JFCL 10,.+2 ;OVERFLOW FALG GET SET? JRST .+2 ;NO. ER AC,[ASCII /OV/] LOOP RTROV1,RTROV2 ;TEST MOVEM. AFTER FOLLOWED BY ;, C(AC) SHOULD = ORIG C(AC). ;RAN TO RAN1. AC=2 MVEM1: SETUP 30,0 MVEM2: RANDOM ;DO 3 SETS OF MOVEM'S. MVEM3: REPEAT 3,< MOVEM AC,AC1 MOVEM AC1,AC> CAME AC,RAN ;C(AC) SHOULD = ORIG C(AC). ERROR AC,RAN CAME AC1,RAN ;C(AC1) SHOULD ALSO = ORIG. C(AC). ERROR AC1,RAN LOOP MVEM2,MVEM3 ;TEST MOVES. AFTER 6 MOVES IN A ROW, THE C(E) ;SHOULD = ORIG C(E). AC=2 MVES1: SETUP 200,1 MVES2: RANDOM ;DO 6 MOVE INSTRUCTIONS. MVES3: REPEAT 3,< MOVES AC1,AC MOVES AC1,AC> CAME AC1,AC ;C(AC) SHOULD = C(E). ERROR AC1,AC CAME AC,RAN ;C(E) SHOULD = ORIG C(E). ERROR AC,RAN LOOP MVES2,MVES3 ;TEST MOVS INSTRUCTION...TWO MOVS SHOULD GIVE SAME NUMBER. AC=4 MOVSA: SETUP 200,2 MOVSB: RANDOM ;DO 6 MOVS INSTRUCTIONS. MOVSC: REPEAT 3,< MOVS AC,AC MOVS AC,AC> CAME AC,RAN ;C(AC) SHOULD STILL = RAN. EERR ,RAN LOOP MOVSB,MOVSC ;TEST MOVS INSTRUCTION...MOVS FOLLOWED BY ROT SHOULD GIVE ;SAME NUMBER. AC=5 MOVS1: SETUP 200,1 MOVS2: RANDOM MOVS3: MOVS AC,AC ;DO MOVS INSTRUCTION. ROT AC,22 ;ROT LEFT 18 PLACES. CAME AC,RAN ;C(AC) SHOULD NOW = RAN. EERR ,RAN LOOP MOVS2,MOVS3 ;TEST MOVSM....TWO MOVSM SHOULD GIVE THE ORIG. NUM. AC=6 MOVSMA: SETUP 300,1 MOVSMB: RANDOM MOVSMC: REPEAT 3,< MOVSM AC,AC1 MOVSM AC1,AC> CAME AC,RAN ;C(AC) SHOULD NOW BE = TO RAN. ERROR AC,RAN LOOP MOVSMB,MOVSMC ;TEST MOVSS...TWO MOVSS SHOULD GIVE THE ORIGINAL NUMBER. AC=7 MOVSSA: SETUP 200,0 MOVSSB: RANDOM MOVSSC: SETZB 0,RAN1 ;CLEAR AC0. REPEAT 3,< MOVSS AC MOVSS AC> CAME AC,RAN ;C(AC) SHOULD NOW BE = TO RAN. EERR ,RAN1 CAME [0] ;C(AC0) SHOULD STILL = 0. EERR ,RAN1 LOOP MOVSSB,MOVSSC ;TEST MOVSI. AC=10 MOVSIA: SETUP 100,0 MOVSIB: RANDOM MOVE AC2,RAN ;PUT RAN INTO AN AC. MOVSIC: ANDI AC,-1 ;SIMULATE ROT AC,22 ;A MOVSI INST. MOVSI AC1,(AC2) ;DO MOVSI. CAME AC1,AC ;C(AC1) SHOULD = SIM. ANS. ERROR AC1,AC LOOP MOVSIB,MOVSIC ;TEST LSH. SIMULATE A LSH 18 PLACES WITH A MOVSI. AC=11 LSHA: SETUP 200,1 LSHB: RANDOM LSHC: SETO AC1, ;SET AC+1 TO ALL ONES. MOVSI AC2,(AC) ;SIMULATE LSH 18 PLACES. LSH AC,22 ;DO LSH CAME AC,AC2 ;C(AC) SHOULD = SIM. ANS. ERROR AC,AC2 CAME AC1,[-1] ;AC1 GET CHANGED? ERROR AC1,[-1] ;YES. LOOP LSHB,LSHC ;TEST LSH RIGHT 18 PLACES. AC=10 LSH1: SETUP 200,1 LSH2: RANDOM LSH3: SETOB AC1,RAN1 ;SET C(AC+1) TO ALL ONES. LSH AC,-22 ;DO LSH RIGHT 18 PLACES. MOVS AC2,RAN ;SIMULATE ANDI AC2,-1 ;LSH. CAME AC,AC2 ;C(AC) SHOULD = SIM. ANS. EERRI ,-22 CAME AC1,[-1] ;C(AC+1) GET CHANGED? ERRI RAN1,-22 LOOP LSH2,LSH3 ;TEST ASH ABILITY TO SET OR NOT SET OVERFLOW FLAG. AC=10 ASHOV: SETUP 30,0 ASHOV1: SETO AC, ;SET AC TO ALL ONES..1,1 CONDITION. JFCL 10,.+1 ;CLEAR OV FLAG. ASH AC,1 ;DO ASH. JFCL 10,.+2 ;OVERFLOW FLAG GET SET? JRST .+2 ;NO. ER AC,[ASCII /OV/] ;YES. 1,1 CONDITION SHOULD NOT SET IT. JFCL 10,.+1 ;CLEAR OV FLAG. SETZ AC, ;CLEAR AC...0,0 CONDITION. ASH AC,1 ;DO ASH. JFCL 10,.+2 ;OVERFLOW FLAG GET SET? JRST .+2 ;NO. ER AC,[ASCII /OV/] ;YES. 0,0 COND. SHOULDN'T SET IT. JFCL 10,.+1 ;CLEAR OV FLAG. MOVSI AC,377777 ;SET AC FOR 0,1 CONDITION. ASH AC,1 ;DO ASH. JFCL 10,.+2 ;OVERFLOW FLAG GET SET? ER AC,[ASCII /OV/] ;NO. 0,1 COND. SHOULD SET IT. JFCL 10,.+1 ;CLEAR OV FLAG. MOVSI AC,400000 ;SET AC FOR 1,0 CONDITION. ASH AC,1 ;DO ASH. JFCL 10,.+2 ;OV FLAG GET SET? ER AC,[ASCII /OV/] ;NO. 1,0 COND. SHOULD SET IT. LOOP ASHOV1,ASHOV1 ;TEST ASH. DO ASH RIGHT 36 PLACES WITH ORIG. ;C(AC) = 400000000000. AFTER ASH THE C(AC) SHOULD = A -1. AC=10 ASH1: SETUP 20,0 ASH2: MOVE AC,[XWD 400000,0] ;MAKE C(AC) = ALL 0'S WITH SIGN BIT SET. ASH AC,-44 ;DO ASH RIGHT 36 PLACES...SIGN CAME AC,[-1] ;BIT SHOULD HAVE SET ALL BITS TO A ONE. ERROR AC,[-1] LOOP ASH2,ASH2 ;TEST ASH. DO ASH LEFT 36 PLACES WITH ORIG. C(AC) = ;TO A -1. AFTER ASH THE C(AC) SHOULD = THE SIGN ;BIT SET AND THE REST ZEROS. AC=11 ASH3: SETUP 20,0 ASH4: MOVE AC,[-1] ;MAKE C(AC) = A -1. ASH AC,44 ;DO ASH LEFT 36 PLACES..0'S GOING CAME AC,[XWD 400000,0] ;INTO BIT 35 SHOULD JUST LEAVE SIGN BIT SET. ERROR AC,[0] LOOP ASH4,ASH4 ;TEST ADD. RAN TO 0 CONDITION. AC=10 ADD1: SETUP 100,0 ADD2: RANDOM ADD3: SETZ AC, ;CLEAR AC. ADD AC,RAN ;ADD RAN TO 0. CAME AC,RAN ;C(AC) SHOULD = RAN NUM. ERROR AC,RAN LOOP ADD2,ADD3 ; TEST ADD. 0 TO RAN CONDITION. AC=10 ADD1A: SETUP 100,0 ADD2A: RANDOM ;ADD A CONSTANT 0 TO RAN 5 TIMES. ADD3A: REPEAT 5,< ADD AC,[0]> CAME AC,RAN ;C(AC) SHOULD STILL = RAN NUM. ERROR AC,RAN LOOP ADD2A,ADD3A ;TEST ADD. ADD 1'S COMP OF RAN TO RAN. ;SHOULD GET A -1. AC=10 ADD1B: SETUP 100,0 ADD2B: RANDOM ADD3B: SETCM AC1,RAN ;1'S COMP OF RAN TO AC1. ADD AC,AC1 ;ADD IT TO RAN. CAME AC,[-1] ;C(AC) SHOULD = -1. ERROR AC,[-1] LOOP ADD2B,ADD3B ;TEST ADD. CHECK CRY0,CRY1,AND OV FLAGS. ;ADD, TO A RANDOM NUMBER, A -1 AND THEN A +1. ;CRY0 AND CRY1 SHOULD BOTH GET SET AND AROV SHOULD NOT GET SET. AC=10 ADD1C: SETUP 400,2 ADD2C: RANDOM ADD3C: JFCL 17,.+1 ;CLEAR ALL FLAGS. ADD AC,[-1] ;ADD A -1 TO RAN. ADD AC,[1] ;ADD A +1 TO ANS OF ADDITION OF RAN AND A -1. CAME AC,RAN ;C(AC) SHOULD = ORIG C(AC). ERROR AC,RAN JFCL 4,CRY0A JFCL 2,.+2 JRST BOTHF ER AC,[ASCII /CRY0/];CRY0 FAILED TO GET SET. CRY0A: JFCL 2,.+2 ER AC,[ASCII /CRY1/];CRY1 FAILED TO GET SET. JRST AROVA BOTHF: ER AC,[ASCII /CRY01/];BOTH CRY0 + CRY1 FAILED TO GET SET. AROVA: JFCL 10,.+2 JRST ADD4C ER AC,[ASCII /OV/] ;AROV GOT SET. ADD4C: LOOP ADD2C,ADD3C ;TEST ADDM. WHERE E IS AN AC. ;RAN TO 0 CONDITION. AC=4 ADDM1: SETUP 100,0 ADDM2: RANDOM MOVE AC2,RAN ;SAVE RAN IN AN AC. ADDM3: SETZB AC1,RAN1 ;MAKE C(E) = 0. ADDM AC,AC1 ;DO ADDM. CAME AC2,AC1 ;C(E) SHOULD =ORIG C(AC). ERRM RAN1,RAN LOOP ADDM2,ADDM3 ;TEST ADDM. WHERE E IS AN AC. ;0 TO RAN CONDITION. AC=5 ADDM1A: SETUP 100,0 ADDM2A: RANDOM MOVE AC2,RAN ;SAVE RAN IN AN AC. ADDM3A: SETZB AC1,RAN1 ;MAKE C(AC) = 0. ADDM AC1,AC ;DO ADDM. CAME AC2,AC ;C(E) SHOULD = ORIG C(E). EERRM ,RAN1 LOOP ADDM2A,ADDM3A ;TEST ADDM. WHERE E IS AN AC. ;1'S COMP RAN TO RAN. AC=6 ADDM1B: SETUP 100,0 ADDM2B: RANDOM ADDM3B: SETCM AC1,AC ;MAKE C(AC) = 1'S COMP OF C(E). MOVE RAN1,AC1 ;SAVE C(AC) IN CASE OF ERROR. ADDM AC1,AC ;DO ADDM. CAME AC,[-1] ;C(E) SHOULD = A -1. EERRM ,RAN1 LOOP ADDM2B,ADDM3B ;TEST ADDI. CHECK C(AC) FOR CORRECT DATA. ;0 TO RAN CONDITION. AC=2 ADDI1: SETUP 20,0 ADDI2: RANDOM ADDI3: ADDI AC,0 ;DO ADDI. CAME AC,RAN ;C(AC) SHOULD = ORIG C(AC). EERRI ,0 LOOP ADDI2,ADDI3 ;TEST ADDI. CHECK FOR CORRECT DATA IN AC. ;RAN TO 0 CONDITION. AC=2 ADDI1A: SETUP 100,0 ADDI2A: RANDOM ADDI3A: SETZB AC1,RAN1 ;CLEAR C(AC). MOVEI AC2,(AC) ;SIMULATE ADDI. ADDI AC1,(AC) ;DO ADDI. CAME AC1,AC2 ;C(AC) SHOULD = SIM. ANS. ERRI RAN1,(AC) LOOP ADDI2A,ADDI3A ;TEST ADDI. CHECK FOR CORRECT DATA IN AC. ;1'S COMP RAN TO RAN. AC=3 ADDI1B: SETUP 40,0 ADDI2B: RANDOM ADDI3B: SETCM AC1,AC ;MAKE C(AC) = 1'S COMP OF E. MOVE AC2,AC1 ;SIMULATE IORI AC2,-1 ;ADDI INST. MOVE RAN1,AC1 ;SAVE C(AC) IN CASE OF ERROR. ADDI AC1,(AC) ;DO ADDI. CAME AC1,AC2 ;C(AC) SHOULD = SIM. ANS. ERRI RAN1,(AC) LOOP ADDI2B,ADDI3B ;TEST ADDB. CHECK FOR C(AC) = C(E), AND CORRECT ;DATA IN AC FOR 0 TO RAN CONDITION. AC=4 ADDB1: SETUP 100,0 ADDB2: RANDOM ADDB3: SETZB AC1,RAN1 ;CLEAR C(E). ADDB AC,AC1 ;DO ADDB. CAME AC,AC1 ;C(AC) SHOULLD = C(E). ERR RAN1,RAN CAME AC,RAN ;C(AC) SHOULD = ORIG C(AC). ERR RAN1,RAN LOOP ADDB2,ADDB3 ;TEST ADDB. CHECK FOR C(AC) = C(E), AND CORRECT ;DATA IN AC FOR RAN TO 0 CONDITION. AC=5 ADDB1A: SETUP 100,0 ADDB2A: RANDOM ADDB3A: SETZB AC1,RAN1 ;CLEAR C(AC). ADDB AC1,AC ;DO ADDB. CAME AC1,AC ;C(AC) SHOULD = C(E). EERR ,RAN1 CAME AC1,RAN ;C(AC) SHOULD = ORIG C(E). EERR ,RAN1 LOOP ADDB2A,ADDB3A ;TEST ADDB. CHECK FOR C(AC) = C(E), AND CORRECT DATA ;IN AC FOR NOT RAN TO RAN CONDITION. AC=6 ADDB1B: SETUP 100,0 ADDB2B: RANDOM ADDB3B: SETCM AC1,AC ;MAKE C(E) = 1'S COMP OF C(AC). MOVE RAN1,AC1 ;SAVE C(E) IN CASE OF ERROR. ADDB AC,AC1 ;DO ADDB. CAME AC,AC1 ;C(AC) SHOULD = C(E). ERR RAN1,RAN CAME AC,[-1] ;C(AC) SHOULD = A -1. ERR RAN1,RAN LOOP ADDB2B,ADDB3B ;TEST SUB. CHECK C(AC) FOR CORRECT DATA. ;0 TO RAN CONDITION. AC=2 SUB1: SETUP 100,0 SUB2: RANDOM SUB3: SETZB AC1,RAN1 ;CLEAR C(E). REPEAT 3,< SUB AC,AC1> CAME AC,RAN ;C(AC) SHOULD STILL = ORIG C(AC). ERR RAN1,RAN LOOP SUB2,SUB3 ;TEST SUB. CHECK C(AC) FOR CORRECT DATA. ;RAN TO 0 CONDITION. AC=2 SUB1A: SETUP 100,0 SUB1B: RANDOM SUB1C: SETZB AC1,RAN1 ;CLEAR C(AC). MOVN AC2,RAN ;ANY NUM FROM 0 = 2'S COMP OF THAT NUM. SUB AC1,AC ;SUBTRACT RAN FROM 0. CAME AC1,AC2 ;C(AC) SHOULD = SIM. ANS. EERR ,RAN1 LOOP SUB1B,SUB1C ;TEST SUB. CHECK C(AC) FOR CORRECT DATA. ;SUB RAN FROM RAN. AC=2 SUB2A: SETUP 100,0 SUB2B: RANDOM SUB2C: MOVE AC1,AC ;MAKE C(E) = C(AC). SUB AC,AC1 ;SUB RAN FROM RAN. CAME AC,[0] ;C(AC) SHOULD = 0. EERR ,RAN LOOP SUB2B,SUB2C ;TEST SUBM. WHERE E IS AN AC. ;RAN TO 0 CONDITION. AC=7 SUBM1: SETUP 100,0 SUBM2: RANDOM SUBM3: SETZB AC1,RAN1 ;CLEAR C(AC). MOVN AC2,AC ;SIM SUB..RAN FROM 0 = 2'S COMP RAN. SUBM AC1,AC ;DO SUBM. CAME AC2,AC ;C(E) SHOULD = SIM. ANS. EERRM ,RAN1 LOOP SUBM2,SUBM3 ;TEST SUBM. SHERE E IS AN AC. ;0 TO RAN CONDITION. AC=10 SUBM1A: SETUP 100,0 SUBM2A: RANDOM MOVE AC2,RAN ;SAVE RAN IN AN AC. SUBM3A: SETZB AC1,RAN1 ;CLEAR C(E). SUBM AC,AC1 ;DO SUBM...0 FROM RAN = RAN. CAME AC2,AC1 ;C(E) SHOULD = ORIG C(AC). ERRM RAN1,RAN CAME AC,RAN ;C(AC) SHOULD = ORIG C(AC). ERRM RAN1,RAN LOOP SUBM2A,SUBM3A ;TEST SUBM. WHERE E IS AN AC. ;RAN TO RAN CONDITION. AC=11 SUBM1B: SETUP 100,0 SUBM2B: RANDOM SUBM3B: MOVE AC1,AC ;MAKE C(E) = C(AC). SUBM AC,AC1 ;DO SUBM. CAME AC1,[0] ;C(E) SHOULD = 0. EERRM ,RAN CAME AC,RAN ;C(AC) SHOULD = ORIG C(AC). EERRM ,RAN LOOP SUBM2B,SUBM3B ;TEST SUBI. CHECK C(AC) FOR CORRECT DATA. ;0 TO RAN CONDITION. AC=10 SUBI1: SETUP 20,0 SUBI2: RANDOM SUBI3: SUBI AC,0 ;DO SUBI..0 FROM RAN = RAN. CAME AC,RAN ;C(AC) SHOULD = ORIG C(AC). EERRI ,0 LOOP SUBI2,SUBI3 ;TEST SUBI. CHECK C(AC) FOR CORRECT DATA. ;RAN TO 0 CONDITION. AC=10 SUBI1A: SETUP 20,0 SUBI2A: RANDOM SUBI3A: SETZB AC1,RAN1 ;CLEAR C(AC). MOVNI AC2,(AC) ;SIM SUB..RAN FROM 0 = 2'S COMP RAN. SUBI AC1,(AC) ;DO SUBI. CAME AC1,AC2 ;C(AC) SHOULD = SIM ANS. ERRI RAN1,(AC) LOOP SUBI2A,SUBI3A ;TEST SUBI. CHECK C(AC) FOR CORRECT DATA. ;RAN TO RAN CONDITION. AC=10 SUBI1B: SETUP 20,0 SUBI2B: RANDOM MOVE RAN1,AC ;SAVE C(AC) IN CASE OF ERROR. SUBI3B: MOVE AC1,AC ;SIMULATE A AND AC1,[XWD -1,0] ;SUBI RAN FROM RAN. SUBI AC,(AC) ;DO SUBI. CAME AC,AC1 ;C(AC) SHOULD = SIM. ANS. ERRI RAN1,(RAN1) LOOP SUBI2B,SUBI3B ;TEST SUBB. CHECK THAT C(AC) = C(E) AND C(AC) ;= CORRECT DATA. ;0 TO RAN. AC=10 SUBB1: SETUP 20,0 SUBB2: RANDOM SUBB3: SETZB AC1,RAN1 ;CLEAR C(E). SUBB AC,AC1 ;DO SUBB..0 FROM RAN = RAN. CAME AC,AC1 ;C(AC) SHOULD = C(E). ERR RAN1,RAN CAME AC,RAN ;C(AC) SHOULD = ORIG C(AC). ERR RAN1,RAN LOOP SUBB2,SUBB3 ;TEST SUBB. CHECK C(AC) = C(E) AND C(AC) FOR ;CORRECT DATA. ;RAN TO 0 CONDITION. AC=10 SUBB1A: SETUP 20,0 SUBB2A: RANDOM SUBB3A: SETZB AC1,RAN1 ;CLEAR C(AC). MOVN AC2,AC ;SIMULATE SUB...RAN FROM 0 = 2'S COMP RAN. SUBB AC1,AC ;DO SUBB. CAME AC1,AC ;C(AC) SHOULD = C(E). EERR ,RAN1 CAME AC1,AC2 ;C(AC) SHOULD = SIM. ANS. EERR ,RAN1 LOOP SUBB2A,SUBB3A ;TEST SUBB. CHECK C(AC) = C(E) AND FOR ;CORRECT DATA IN AC. ;RAN TO RAN CONDITION. AC=10 SUBB1B: SETUP 40,0 SUBB2B: RANDOM SUBB3B: MOVE AC1,AC ;MAKE C(E) = C(AC). SUBB AC,AC1 ;DO SUBB..RAN FROM RAN = 0. CAME AC,AC1 ;C(AC) SHOULD = C(E). EERR ,RAN CAME AC,[0] ;C(AC) SHOULD = 0. EERR ,RAN LOOP SUBB2B,SUBB3B ;TEST MOVEI. CHECK C(AC) FOR CORRECT DATA. ;RAN TO RAN1. AC=2 MVEI1: SETUP 20,0 MVEI2: RANDOM MOVE AC2,RAN ;SAVE RAN IN AN AC. MVEI3: MOVSS RAN1,AC ;MAKE C(AC) = SEC RAN NUM. MOVE AC1,RAN ;SIMULATE LSH AC1,22 ;A LSH AC1,-22 ;MOVEI. MOVEI AC,(AC2) ;DO A MOVEI. CAME AC,AC1 ;C(AC) SHOULD = SIM. ANS. ERRI RAN1,(AC2) LOOP MVEI2,MVEI3 ;TEST MOVN. TWO MOVN INSTRUCTIONS SHOULD NOT CHANGE C(AC). AC=2 MOVN1: SETUP 200,0 MOVN2: RANDOM ;DO 6 X (MOVN RAN TO RAN). MOVN3: REPEAT 3,< MOVN AC,AC MOVN AC,AC> CAME AC,RAN ;C(AC) SHOULD STILL = RAN NUM. ERROR AC,RAN LOOP MOVN2,MOVN3 ;TEST MOVNI. CHECK C(AC) FOR CORRECT DATA. ;RAN TO RAN1. AC=2 MVNI1: SETUP 40,0 MVNI2: RANDOM MOVE AC2,RAN ;SAVE RAN IN AN AC. MVNI3: MOVSS RAN1,AC ;C(AC) = SEC RAN NUM. MOVEI AC1,(AC2) ;SIMULATE SETCA AC1, ;A ADD AC1,[1] ;MOVNI INST. MOVNI AC,(AC2) ;DO A MOVNI. CAME AC,AC1 ;C(AC) SHOULD = SIM. ANS. ERRI RAN1,(AC2) LOOP MVNI2,MVNI3 ;TEST MOVNM. WHERE E IS AN AC. ;CHECK C(E) FOR CORRECT DATA. ;RAN TO RAN. AC=2 MVNM1: SETUP 100,0 MVNM2: RANDOM MOVE RAN1,RAN ;SAVE RAN IN AN AC. MVNM3: MOVE AC1,AC ;MAKE C(E) = C(AC). ;DO 3 X 2(MOVNM). REPEAT 3,< MOVNM AC,AC1 MOVNM AC1,AC> CAME RAN1,AC ;C(E) SHOULD = ORIG C(E). EERRM ,RAN LOOP MVNM2,MVNM3 ;TEST MOVNS. WHERE E IS AN AC. ;CHECK PROPER STORING OF C(E) INTO AC. ;TWO MOVNS = ORIG NUMBER. ;C(E) = RAN. AC=3 MVNS1: SETUP 100,0 MVNS2: RANDOM MOVE AC2,RAN ;PUT C(RAN) INTO AC2 FOR FUTURE COMPARE. MVNS3: SETOB AC1,RAN1 ;MAKE C(AC) = -1. ;DO 3 X 2(MOVNS). REPEAT 3,< MOVNS AC1,AC MOVNS AC1,AC> CAME AC1,AC ;C(AC) SHOULD = C(E). EERRM ,RAN1 CAME AC2,AC ;C(E) SHOULD = ORIG. C(E). EERRM ,RAN1 LOOP MVNS2,MVNS3 ;TEST MOVNS. WHERE E IS AN AC. ;CHECK FOR NOT LOADING C(E) INTO AC WHEN AC= 0. ;TWO MOVNS = ORIGINAL NUM. ;C(E) = RAN. AC=10 MVNSA: SETUP 40,0 MVNSB: RANDOM MOVE AC2,RAN ;SAVE RAN IN AN AC. MVNSC: SETOB RAN1 ;MAKE C(AC) = -1. ;DO 3 X 2(MOVNS). REPEAT 3,< MOVNS AC MOVNS AC> CAMN AC ;C(AC) SHOULD NOT = C(E). EERRM ,RAN1 CAME AC2,AC ;C(AC) SHOULD = ORIG C(AC). EERRM ,RAN1 LOOP MVNSB, MVNSC ;TEST MOVM. CHECK F(AC) FOR CORRECT DATA. ;RAN TO RAN1. AC=7 MVM1: SETUP 40,0 MVM2: RANDOM MVM3: MOVSS RAN1,AC ;C(AC) = SEC RAN NUM. MOVE AC1,RAN ;C(E) = 1ST RAN NUM. SETCM AC2,AC1 ;SIMULATE TLNN AC1,400000 ;A MOVE AC2,AC1 ;MOVM TLNE AC1,400000 ;INST. ADD AC2,[1] MOVM AC,AC1 ;DO A MOVM. CAME AC,AC2 ;C(AC) SHOULD = SIM. ANS. EERR ,RAN1 LOOP MVM2, MVM3 ;TEST MOVMI. CHECK C(AC) FOR CORRECT DATA. ;RAN TO RAN1. AC=10 MVMI1: SETUP 40,0 MVMI2: RANDOM MVMI3: MOVEI AC1,AC ;SIMULATE A MOVMI INST...MOVEI. MOVSS RAN1,AC ;C(AC) = SEC RAN NUM. MOVMI AC,(AC1) ;DO MOVMI. CAME AC,AC1 ;C(AC) SHOULD = SIM ANS. ERRI RAN1,(AC1) LOOP MVMI2, MVMI3 ;TEST MOVMM. CHECK C(AC) + C(E) FOR CORRECT DATA. ;RAN TO RAN1. AC=11 MVMM1: SETUP 200,0 MVMM2: RANDOM MVMM3: MOVSS RAN1,AC ;C(AC) = SEC RAN NUM. MOVE AC1,RAN ;C(E) = RAN. SETCM AC2,AC ;SIMULATE TLNN AC,400000 ;A MOVE AC2,AC ;MOVMM TLNE AC,400000 ;INST ADD AC2,[1] MOVMM AC,AC1 ;DO A MOVMM INST. CAME AC,RAN1 ;C(AC) SHOULD = ORIG C(AC). EERRM ,RAN1 CAME AC1,AC2 ;C(E) SHOULD = SIM. ANS. EERRM ,RAN1 LOOP MVMM2, MVMM3 ;TEST MOVMS. CHECK C(E) FOR CORRECT DATA. ;RAN TO RAN1. AC=10 MVMS1: SETUP 200,0 MVMS2: RANDOM MVMS3: MOVSS RAN1,AC ;C(AC) = SEC RAN NUM. MOVE AC1,RAN ;C(E) = RAN. SETCM AC2,RAN ;SIMULATE TLNN AC1,400000 ;A MOVE AC2,AC1 ;MOVMS TLNE AC1,400000 ;INST. ADD AC2,[1] MOVMS AC,AC1 ;DO A MOVMS. CAME AC,AC1 ;C(AC) SHOULD = C(E). EERRM ,RAN1 CAME AC1,AC2 ;C(E) SHOULD = SIM. ANS. EERRM ,RAN1 LOOP MVMS2, MVMS3 ;TEST LSH. A LSH LEFT AND A LSH RIGHT SHOULD ;GIVE THE SAME NUMBER WITH A ZERO SIGN BIT. AC=2 LSH1P: SETUP 40,0 LSH1PA: RANDOM LSH1PB: AND AC,[XWD 377777,-1] ;SIMULATE A LSH LEFT THEN RIGHT. MOVE AC1,RAN ;MOVE RANDOM NUM INTO AN AC ;AND DO 3(LSH LEFT 1 PLACE THEN RIGHT 1 PLACE). REPEAT 3,< LSH AC1,1 LSH AC1,-1> CAME AC1,AC ;C(AC1) = SIM. ANS? ERROR AC1,AC ;NO. LSH FAILED. LOOP LSH1PA,LSH1PB ;TEST TDN,TDNA. CHECK FOR SKIP/NO SKIP AND ;NO DATA CHANGE IN AC FOR RAN1 TO RAN CONDITION. AC=2 TDN1: SETUP 100,0 TDN2: RANDOM TDN3: MOVS AC1,AC ;PUT SECOND RAN. NUM. INTO "E". TDN AC,AC1 ;NO SKIP, NO DATA CHANGE. JRST .+2 ;HERE..GO AROUND ERR UUO. ER AC,[ASCII /TST/];TDN SKIPPED. TDNA AC,AC1 ;SKIP, NO DATA CHANGE. ER AC,[ASCII /TST/] CAME AC,RAN ;C(AC) SHOULD = ORIG C(AC). ERR AC1,RAN LOOP TDN2,TDN3 ;TEST TDNN,TDNE. CHECK FOR SKIP/ NO SKIP AND ;NO DATA CHANGE IN AC FOR RAN TO 0 CONDITION. AC=3 TDNE1A: SETUP 100,0 TDNE2A: RANDOM TDNE3A: SETZB AC1,RAN1 ;CLEAR C(AC). TDNN AC1,AC ;C(E) + C(AC) =0..NO SKIP. JRST .+2 ER AC1,[ASCII /TST/];TDNN SKIPPED. TDNE AC1,AC ;C(E) + C(AC) = 0. SKIP. ER AC1,[ASCII /TST/] CAME AC1,[0] ;C(AC) SHOULD STILL = 0. ERR AC,RAN1 LOOP TDNE2A,TDNE3A ;TEST TDNN,TDNE. CHECK FOR SKIP/ NO SKIP AND ;NO DATA CHANGE FOR 0 TO RAN CONDITION. AC=4 TDNE1B: SETUP 40,0 TDNE2B: RANDOM TDNE3B: SETZ AC1, ;CLEAR C(E). TDNN AC,AC1 ;C(E) + C(AC) = 0. NO SKIP. JRST .+2 ER AC,[ASCII /TST/];TDNN SKIPPED. TDNE AC,AC1 ;C(E) + C(AC) = 0. SKIP. ER AC,[ASCII /TST/] CAME AC,RAN ;C(AC) SHOULD = ORIG C(AC). ERR AC1,RAN LOOP TDNE2B,TDNE3B ;TEST TDNN,TDNE. CHECK FOR SKIP/ NO SKIP AND ;NO DATA CHANGE IN AC FOR RAN TO -1 CONDITION. AC=5 TDNE1C: SETUP 40,0 TDNE2C: RANDOM JUMPE AC,TDNE2C ;REJECT IF RAN = 0. TDNE3C: SETOB AC1,RAN1 ;SET C(AC) TO ALL ONES. TDNE AC1,AC ;C(E) + C(AC) NOT = 0..NO SKIP. JRST .+2 ER AC1,[ASCII /TST/];TDNE SKIPPED. TDNN AC1,AC ;C(E) + C(AC) NOT = 0..SKIP. ER AC1,[ASCII /TST/] CAME AC1,[-1] ;C(AC) SHOULD = ORIG C(AC). ERR AC,RAN1 LOOP TDNE2C,TDNE3C ;TEST TDNE,TDNN. CHECK FOR SKIP/ NO SKIP AND ;NO DATA CHANGE IN AC FOR -1 TO RAN CONDITION. AC=6 TDNE1D: SETUP 40,0 TDNE2D: RANDOM JUMPE AC,TDNE2D ;REJECT IF RAN = 0. TDNE3D: SETO AC1, ;SET C(E) TO ALL ONES. TDNE AC,AC1 ;C(E) + C(AC) NOT = 0..NO SKIP. JRST .+2 ER AC,[ASCII /TST/];TDNE SKIPPED. TDNN AC,AC1 ;C(E) + C(AC) NOT = 0..SKIP. ER AC,[ASCII /TST/] CAME AC,RAN ;C(AC) SHOULD = ORIG C(AC). ERR AC1,RAN LOOP TDNE2D,TDNE3D ;TEST TDNE,TDNN. CHECK FOR SKIP/ NO SKIP AND ;NO DATA CHANGE IN AC FOR RAN TO RAN CONDITION. AC=7 TDNE1E: SETUP 20,0 TDNE2E: RANDOM JUMPE AC,TDNE2E ;REJECT IF RAN = 0. TDNE3E: MOVE AC1,AC ;MAKE C(E) = C(AC). TDNE AC,AC1 ;C(E) + C(AC) NOT = 0..NO SKIP. JRST .+2 ER AC,[ASCII /TST/];TDNE SKIPPED. TDNN AC,AC1 ;C(E) + C(AC) NOT = 0. SKIP. ER AC,[ASCII /TST/] CAME AC,RAN ;C(AC) SHOULD = ORIG C(AC). ERR AC1,RAN LOOP TDNE2E,TDNE3E ;TEST TDNE,TDNN. CHECK FOR SKIP/ NO SKIP AND ;NO DATA CHANGE IN AC FOR NOT RAN TO RAN CONDITON. AC=10 TDNE1F: SETUP 20,0 TDNE2F: RANDOM TDNE3F: SETCM AC1,AC ;MAKE C(E) = 1'S COMP OF C(AC). TDNN AC,AC1 ;C(E) + C(AC) = 0..NO SKIP. JRST .+2 ER AC,[ASCII /TST/];TDNN SKIPPED. TDNE AC,AC1 ;C(E) + C(AC) = 0..SKIP. ER AC,[ASCII /TST/] CAME AC,RAN ;C(AC) SHOULD = ORIG C(AC). ERR AC1,RAN LOOP TDNE2F,TDNE3F ;TEST TDZ,TDZA. CHECK FOR SKIP/ NO SKIP AND ;CORRECT DATA IN AC FOR NOT RAN TO RAN CONDITION. AC=11 TDZA1: SETUP 100,0 TDZA2: RANDOM TDZA3: SETCM AC1,AC ;MAKE C(E) 1'S COMP OF C(AC). TDZ AC,AC1 ;SHOULD NOT SKIP. JRST .+2 ER AC,[ASCII/TST/] ;TDZ SKIPPED. TDZA AC,AC1 ;SHOULD SKIP. ER AC,[ASCII /TST/] CAME AC,RAN ;C(AC) SHOULD STILL = RAN NUM. ERR AC1,RAN CAMN AC1,RAN ;C(E) SHOULD NOT = RAN. ERR AC1,RAN LOOP TDZA2,TDZA3 ;TEST TDZ,TDZA. CHECK FOR SKIP/NO SKIP AND ;CORRECT DATA IN AC FOR RAN TO RAN CONDITION. AC=10 TDZAA: SETUP 100,1 TDZAB: RANDOM TDZAC: TDZ AC,AC ;SHOULD NOT SKIP. CAME AC,[0] ;SHOULD CLEAR C(AC). EERR ,RAN MOVE AC,RAN ;RESTORE AC. TDZA AC,AC ;SHOULD SKIP. ER AC,[ASCII /TST/] CAME AC,[0] ;C(AC) SHOULD BE CLEARED. EERR ,RAN LOOP TDZAB,TDZAC ;TEST TDZ,TDZA. CHECK FOR SKIP/ NO SKIP AND ;CORRECT DATA IN AC FOR RAN1 TO RAN CONDITION. AC=10 TDZB1: SETUP 100,0 TDZB2: RANDOM TDZB3: MOVS AC1,AC ;MAKE C(E) A DIFF. RAN. NUM. MOVE AC2,AC1 ;SIMULATE XOR AC2,AC ;A AND AC2,AC ;TDZ. TDZ AC,AC1 ;TDZ SHOULD NOT SKIP. CAME AC,AC2 ;C(AC) SHOULD = SIM. ANS. ERR AC1,RAN MOVE AC,RAN ;RESTORE AC. TDZA AC,AC1 ;SHOULD SKIP. ER AC,[ASCII /TST/] CAME AC,AC2 ;C(AC) SHOULD = SIM. ANS. ERR AC1,RAN LOOP TDZB2,TDZB3 ;TEST TDZE, TDZN. CHECK FOR SKIP/NO SKIP AND ;CORRECT DATA IN AC FOR FLOATING ONE IN C(E) AND ;THAT BIT CLEARED IN RANDOM NUM. IN AC. AC=10 TDZE1: SETUP 100,0 MOVEI AC1,1 ;SETUP AC1 TO CONTAIN A MASK BIT. TDZE2: RANDOM ROT AC1,1 ;ROT TO TEST NEXT BIT. TDZE3: ANDCM AC,AC1 ;CLEAR MASK BIT IN AC. MOVE AC2,AC ;SAVE FOR FUTURE COMPARE. TDZN AC,AC1 ;C(E) + C(AC) = 0...NO SKIP. JRST .+2 ER AC,[ASCII /TST/] ;TDZN SKIPPED. TDZE AC,AC1 ;C(E) + C(AC) = 0...SKIP. ER AC,[ASCII /TST/] CAME AC,AC2 ;C(AC) SHOULD = ORIG C(AC). ERR AC1,AC2 LOOP TDZE2,TDZE3 ;TEST TDZE, TDZN. CHECK FOR SKIP/ NO SKIP AND ;CORRECT DATA IN AC FOR FLOATING ONE IN C(E) ;AND THAT BIT SET IN RAN. NUM. IN C(AC). AC=10 TDZEA: SETUP 100,0 MOVEI AC1,1 ;SET MASK BIT IN C(E). TDZEB: RANDOM ROT AC1,1 ;ROT MASK BIT TO TEST NEXT BIT. TDZEC: IOR AC,AC1 ;SET MASK BIT IN AC. MOVE RAN1,AC ;SAVE C(AC) IN CASE OF ERROR. MOVE AC2,AC ;SIMULATE ANDCM AC2,AC1 ;A TDZ. TDZE AC,AC1 ;C(E) + C(AC) NOT = 0...NO SKIP. CAME AC,AC2 ;C(AC) SHOULD = SIM. ANS. ERR AC1,RAN1 IOR AC,AC1 ;RESET MASK BIT IN AC. TDZN AC,AC1 ;C(E) + C(AC) NOT = 0...SKIP. ER AC,[ASCII /TST/] CAME AC,AC2 ;AND C(AC) SHOULD = SIM. ANS. ERR AC1,RAN1 LOOP TDZEB,TDZEC ;TEST TDZE,TDZN. SET AND ROT A MASK BIT IN AC ;AND CHECK SKIP/NO SKIP AND PROPER C(AC) ;FOR MASK BIT IN AC ANS RANDOM NUMBER IN E. AC=10 TDZNA: SETUP 100,0 MOVEI AC1,1 ;SETUP AC1 FOR MASK BIT. TDZNB: RANDOM ROT AC1,1 ;ROT AC1 TO TEST NEXT BIT. MOVE AC2,AC1 ;SAVE MASK BIT. TDZNC: MOVE AC1,AC2 ;RESTORE MASK BIT IF ERROR. ANDCM AC,AC1 ;CLEAR MASK BIT IN RAN NUM. TDZN AC1,AC ;C(E) + C(AC) =0..SHOULDN'T SKIP. JRST .+2 ER AC1,[ASCII /TST/];TDZN SKIPPED. TDZE AC1,AC ;C(E) + C(AC) = 0..SKIP. ER AC1,[ASCII /TST/] CAME AC1,AC2 ;C(AC1) SHOULD NOT HAVE CHANGED. ERR AC,AC2 LOOP TDZNB,TDZNC ;TEST TDZE,TDZN. SET AND ROT A MASK BIT IN AC ;AND CHECK SKIP/NO SKIP AND PROPER C(AC) ;FOR MASK BIT IN AC AND RANDOM NUMBER IN E. ;RANDOM NUMBER HAS MASK BIT SET. AC=10 TDZN1: SETUP 40,0 MOVEI AC1,1 ;SETUP AC1 FOR MASK BIT. TDZN2: RANDOM ROT AC1,1 ;ROT AC1 TO TEST NEXT BIT. TDZN3: MOVE AC2,AC1 ;SAVE MASK BIT. IOR AC,AC1 ;SET MASK BIT IN RAN. TDZE AC1,AC ;C(E) + C(AC) NOT = 0...NO SKIP. CAME AC1,[0] ;C(AC) SHOULD = 0. ERR AC,AC2 MOVE AC1,AC2 ;RESTORE MASK BIT. TDZN AC1,AC ;C(E) + C(AC) NOT = 0...SKIP. ER AC1,[ASCII /TST/] CAME AC1,[0] ;AC1 SHOULD HAVE GOTTEN CLEARED OUT. ERR AC,AC2 MOVE AC1,AC2 ;RESTORE MASK BIT. LOOP TDZN2,TDZN3 ;TEST TDO TDOA. CHECK FOR SKIP/NO SKIP ANS CORRECT DATA ;IN AC FOR RAN TO NOT RAN. AC=10 TDOA1: SETUP 100,0 TDOA2: RANDOM TDOA3: SETCM AC1,AC ;MAKE "C(E)" = COMP OF RAN. TDO AC,AC1 ;SHOULD NOT SKIP. CAME AC,[-1] ;AC SHOULD HAVE ALL BITS SET. ERR AC1,RAN MOVE AC,RAN ;RESTORE AC. TDOA AC,AC1 ;SHOULD SKIP. ER AC,[ASCII /TST/] CAME AC,[-1] ;AC SHOULD HAVE ALL BITS SET. ERR AC1,RAN LOOP TDOA2,TDOA3 ;TEST TDO,TDOA. CHECK SKIP/NO SKIP AND ;CORRECT DATA IN AC FOR RAN TO RAN CONDITION. AC=2 TDOAA: SETUP 40,0 TDOAB: RANDOM TDOAC: TDO AC,AC ;SHOULD NOT SKIP. JRST .+2 ER AC,[ASCII /TST/] ;TDO SKIPPED. TDOA AC,AC ;SHOULD SKIP. ER AC,[ASCII /TST/] CAME AC,RAN ;C(AC) SHOULD NOT HAVE CHANGED. EERR ,RAN LOOP TDOAB,TDOAC ;TEST TDO, TDOA. CHECK FOR SKIP/NO SKIP ;AND CORRECT DATA IN AC FOR RAN1 TO RAN CONDITION. AC=2 TDOB1: SETUP 400,3 TDOB2: RANDOM TDOB3: MOVS AC1,AC ;MAKE AC1 ANOTHER RAN NUM. MOVE AC2,AC ;SIMULATE XOR AC2,AC1 ;A IOR AC2,AC ;TDO INST. TDO AC,AC1 ;SHOULD NOT SKIP. CAME AC,AC2 ;C(AC) = SIM. ANS? ERR AC1,RAN ;NO. MOVE AC,RAN ;RESTORE AC. TDOA AC,AC1 ;SHOULD SKIP. ER AC,[ASCII /TST/] CAME AC,AC2 ;C(AC) = SIM ANS? ERR AC1,RAN ;NO. LOOP TDOB2,TDOB3 ;TEST TDOE,TDON. ROT A MASK BIT IN E AND SET THAT ;BIT IN AC BEFORE TDO. CHECK FOR SKIP/NO SKIP ;AND PROPER DATA IN AC. AC=2 TDOE1: SETUP 40,0 MOVEI AC1,1 ;SETUP A MASK BIT IN "E". TDOE2: RANDOM ROT AC1, ;ROT MASK BIT TO TEST NEXT BIT. TDOE3: IOR AC,AC1 ;SET MASK BIT IN AC. MOVE AC2,AC ;SAVE AC IN AC2. TDOE AC,AC1 ;C(E) + C(AC) NOT = 0. NO SKIP. JRST .+2 ER AC,[ASCII /TST/];TDOE SKIPPED. TDON AC,AC1 ;C(E) + C(AC) NOT = 0..SKIP. ER AC,[ASCII /TST/] CAME AC,AC2 ;C(AC) SHOULD NOT CHANGE. ERR AC1,AC2 LOOP TDOE2,TDOE3 ;TEST TDOE,TDON. ROT A MASK BIT IN E AND CLEAR THAT ;BIT IN AC BEFORE TDO. CHECK FOR SKIP/NO SKIP ;AND PROPER DATA IN AC. AC=3 TDOEA: SETUP 40,0 MOVEI AC1,1 ;SETUP MASK BIT IN"E". TDOEB: RANDOM ROT AC1,1 ;ROT MASK BIT TO TEST NEXT BIT. TDOEC: ANDCM AC,AC1 ;CLEAR MASK BIT IN AC. MOVE RAN1,AC ;SAVE AC. MOVE AC2,AC ;SIMULATE IOR AC2,AC1 ;A TDO. TDOE AC,AC1 ;C(E) + C(AC) = 0. SKIP. ER AC,[ASCII /TST/] CAME AC,AC2 ;C(AC) = SIM ANS? ERR AC1,RAN1 ;NO. MOVE AC,RAN1 ;RESTORE AC. TDON AC,AC1 ;C(E) + C(AC) = 0..NO SKIP. CAME AC,AC2 ;C(AC) = SIM. ANS? ERR AC1,RAN1 ;NO. LOOP TDOEB,TDOEC ;TEST TDOE,TDON. ROT A MASK BIT IN AC AND CLEAR THAT ;BIT IN E BEFORE TDO. CHECK FOR SKIP/NO SKIP ;AND PROPER DATA IN AC. AC=4 TDONA: SETUP 40,0 MOVEI AC1,1 ;SETUP A MASK BIT IN AC. TDONB: RANDOM ROT AC1,1 ;ROT BIT TO TEST NEXT BIT. MOVE AC2,AC1 ;SAVE MASK BIT SO IN CASE TDONC: MOVE AC1,AC2 ;OF ERROR IT CAN BE RESTORED. ANDCM AC,AC1 ;CLEAR MASK BIT IN E. JUMPE AC,TDONB ;REJECT IF C(AC) = 0. MOVE AC3,AC ;SIMULATE IOR AC3,AC1 ;TDO. TDOE AC1,AC ;C(E) + C(AC) = 0...SKIP. ER AC1,[ASCII /TST/];TDOE DID NOT SKIP. CAME AC1,AC3 ;C(AC) SHOULD = SIM. ANS. ERR AC,AC2 TDON AC1,AC ;C(E) + C(AC) NOT = 0...SKIP. ER AC1,[ASCII /TST/] CAME AC1,AC3 ;C(AC) SHOULD = SIM. ANS. ERR AC,AC2 MOVE AC1,AC2 ;RESTORE AC. LOOP TDONB,TDONC ;TEST TDOE,TDON. ROT A MASK BIT IN AC AND SET ;THAT BIT IN E BEFORE TDO. CHECK FOR SKIP/ NO SKIP ;AND CORRECT DATA IN AC. AC=5 TDON1: SETUP 40,0 MOVEI AC1,1 ;SETUP AC TO CONTAIN A MASK BIT. TDON2: RANDOM ROT AC1,1 ;ROT TO TEST NEXT BIT. MOVE AC2,AC1 ;SAVE C(AC) SO IT CAN BE TDON3: MOVE AC1,AC2 ;RESTORED IN CASE OF ERROR. IOR AC,AC1 ;SET MASK BIT IN E. TDOE AC1,AC ;C(E) + C(AC) NOT = 0...NO SKIP. JRST .+2 ER AC1,[ASCII /TST/];TDOE SKIPPED. TDON AC1,AC ;C(E) + C(AC) NOT = 0...SKIP. ER AC1,[ASCII /TST/] CAME AC1,AC ;C(AC) SHOULD = C(E). ERR AC,AC2 MOVE AC1,AC2 ;RESTORE AC. LOOP TDON2,TDON3 ;TEST TDC. CHECK FOR SKIP/NO SKIP AND CORRECT ;DATA FOR NOT RAN TO RAN CONDITION. AC=6 TDC1: SETUP 100,0 TDC2: RANDOM TDC3: SETCM AC1,RAN ;MAKE C("E") = COMP. OF RAN. TDC AC,AC1 ;NO SKIP. CAME AC,[-1] ;C(AC) SHOULD = A -1. ERR AC1,RAN SETO RAN1, ;SET RAN1 FOR ERROR MESSAGE. TDC AC,AC1 ;NO SKIP. CAME AC,RAN ;C(AC) SHOULD = RAN AGAIN. ERR AC1,RAN1 LOOP TDC2,TDC3 ;TEST TDCA. CHECKING FOR SKIP/ NO SKIP AND ;CORRECT DATA IN AC FOR NOT RAN TO RAN CONDITION. AC=10 TDCA1: SETUP 100,0 TDCA2: RANDOM TDCA3: SETCM AC1,RAN ;MAKE C("E") = COMP OF RAN. TDC AC,AC1 ;SHOULD NOT SKIP. JRST .+2 ER AC,[ASCII /TST/];TDC SKIPPED. TDCA AC,AC1 ;SHOULD SKIP. ER AC,[ASCII /TST/] CAME AC,RAN ;TWO TDC'S SHOULD RETURN C(AC) ;TO IT'S ORIGINAL VALUE. ERR AC1,RAN LOOP TDCA2,TDCA3 ;TEST TDCE. CHECKING FOR SKIP/NO SKIP AND ;CORRECT DATA IN AC FOR RAN TO 0 CONDITION. AC=11 TDCE1: SETUP 100,0 TDCE2: RANDOM TDCE3: SETZB AC1,RAN1 ;CLEAR BOTH AC AND RAN1. TDCE AC1,AC ;C(E) + C(AC) = 0. SKIP. ER AC1,[ASCII /TST/] CAME AC1,RAN ;C(AC) SHOULD = RAN. EERR ,RAN1 LOOP TDCE2,TDCE3 ;TEST TDCE,TDCN. CHECKING FOR SKIP/NO SKIP AND ;CORRECT DATA IN AC FOR 0 TO RAN CONDITION. AC=11 TDCEA: SETUP 100,0 TDCEB: RANDOM TDCEC: SETZ AC1, ;CLEAR C(E). TDCN AC,AC1 ;C(E) + C(AC) = 0...NO SKIP. JRST .+2 ER AC,[ASCII /TST/];TDCN SKIPPED. TDCE AC,AC1 ;C(E) + C(AC) = 0. SKIP. ER AC,[ASCII /TST/] CAME AC,RAN ;C(AC) SHOULD STILL = RAN. ERR AC1,RAN LOOP TDCEB,TDCEC ;TEST TDCE. CHECKING FOR SKIP/NO SKIP AND ;CORRECT DATA IN AC FOR RAN TO -1 CONDITION. AC=10 TDCE4: SETUP 100,0 TDCE5: RANDOM JUMPE AC,TDCE5 ;REJECT IF RAN = 0. TDCE6: SETOB AC1,RAN1 ;SET C(AC) TO ALL ONES. SETCM AC2,AC ;SIMULATE A TDC. TDCE AC1,AC ;C(E) + C(AC) NOT = 0. NO SKIP. CAME AC1,AC2 ;C(AC) = SIM.. ANS? ERR AC,RAN1 ;NO. LOOP TDCE5,TDCE6 ;TEST TDCE,TDCN. CHECKING FOR SKIP/NO SKIP AND ;CORRECT DATA IN AC FOR -1 TO RAN CONDITION. AC=10 TDCED: SETUP 100,0 TDCEE: RANDOM JUMPE AC,TDCEE ;REJECT IF RAN = 0. CAMN AC,[-1] ;C(AC) = -1? JRST TDCEE ;YES. REJECT. TDCEF: SETOB AC1,RAN1 ;SET C(E) TO ALL ONES. TDCE AC,AC1 ;C(E) + C(AC) NOT = 0. NO SKIP. JRST .+2 ER AC,[ASCII /TST/];TDCE SKIPPED. TDCN AC,AC1 ;C(E) + C(AC) NOT = 0..SKIP. ER AC,[ASCII /TST/] CAME AC,RAN ;C(AC) SHOULD = ORIG C(AC). ERR RAN1,RAN LOOP TDCEE,TDCEF ;TEST TDCE. CHECKING FOR SKIP/NO SKIP AND ;CORRECT DATA IN AC FOR RAN TO RAN CONDITION. AC=10 TDCE7: SETUP 100,0 TDCE8: RANDOM JUMPE AC,TDCE8 ;REJECT IF RAN = 0. TDCE9: MOVE AC1,RAN ;MAKE C("AC") = C("E"). TDCE AC1,AC ;C(E) + C(AC) NOT = 0. NO SKIP. CAME AC1,[0] ;C(AC) SHOULD = 0. ERR AC,AC LOOP TDCE8,TDCE9 ;TEST TDCE. CHECKING FOR SKIP/NO SKIP AND ;CORRECT DATA IN AC FOR RAN TO NOT RAN. AC=10 TDCEG: SETUP 100,0 TDCEH: RANDOM TDCEI: SETCM AC1,AC ;MAKE C("AC") = TO COMP OF RAN. MOVE RAN1,AC1 ;SAVE C(AC) IN CASE OF ERROR. TDCE AC1,AC ;C(E) + C(AC) = 0. SKIP. ER AC1,[ASCII /TST/] CAME AC1,[-1] ;C(AC) SHOULD = -1. ERR AC,RAN1 LOOP TDCEH,TDCEI ;JRST BEGEND ;REPEAT TEST SUBTTL *UUOERR* OLD-UUO ERROR HANDLER SUBROUTINE, V75B, APR 22,1975 ;THIS SUBROUTINE PROVIDES ERROR REPORTING THRU THE USE OF UUO'S. ERRMES: MOVEM 0,%ERAC0# ;SAVE AC0 IFDEF EXCASB,> MOVEM 1,%ERAC1# ;SAVE AC1 MOVEM 2,%ERAC2# ;SAVE AC2 AOS ERRTLS ;INCREMENT ERROR TOTALS HRRZ 0,$SVUPC ;GET PC OF UUO CAMN 0,ERRPC ;PC = PC OF LAST ERROR ? AOS MICNT# ;YES, ADD 1 TO ERROR COUNT MOVE 0,MICNT HRL 0,$SVUPC SKIPN KLFLG ;NOT KL10 SKIPE USER ;AND NOT USER? JRST .+2 DATAO PI,0 ;YES, DISPLAY ERROR PC,ERROR COUNT SETZM PROCED# ;CLEAR PROCEED FLAG SWITCH TLNE NOPNT ;PRINTOUT ? JRST %ERRS1 ;NO, RESTORE AC'S AND RETURN MOVE 1,$SVUUO LSH 1,-^D27 MOVEM 1,%ACS1A# ;SAVE UUO NUMBER MOVE 0,%ERAC0 MOVE 1,%ERAC1 SKIPGE @ERRLOP ;ERR LOOP AC > OR = 0 ? JRST %ERRS4 ;NO, SEE IF PRINT ALL %ERMS1: SETZM MICNT ;CLEAR ERROR COUNT SKIPL MONCTL ;DIAG MON OR SYS EXER ? JRST .+4 ;NO, DON'T NEED TITLE SKIPN %ERFST# ;FIRST ERROR ? PNTNM ;YES, PRINT PROGRAM TITLE SETOM %ERFST SKIPN PASCNT ;FIRST PASS ? JRST .+4 ;YES PMSG <^TEST PASS COUNT = > MOVE PASCNT PNTDEC PMSG <^PC = > HRRZ 0,$SVUPC ;GET PC OF UUO MOVEM 0,ERRPC ;SAVE FOR COMPARE PNT6 ;PRINT UUO ADDRESS XLIST IFDEF ERDIAG, MOVE 1,$SVUUO ;GET AC # OF UUO LSH 1,-27 ANDI 1,17 MOVE 0,(1) ;GET C(AC) CAIG 1,1 ;IS AC # = TO SAVE AC ? MOVE 0,%ERAC0(1) ;YES, GET SAVED AC PNTHW ;PRINT C(AC) MOVE CONSW TLNE TXTINH ;PRINT FAILURE DES AND FLT NBR ? JRST %ERMORE ;NO, RESTORE AC'S ETC. ;PRINT FAILURE DESCRIPTOR MOVE 1,%ACS1A ;GET UUO NUMBER CAIG 1,1 ;PRINT DESCRIPTOR ? JRST %ERMS3 ;NO, JUST PRINT FAULT NUMBER PCRL MOVE %FLTTB(1) PNTAL ;PRINT FAULT DESCRIPTOR ;PRINT FAULT NUMBER %ERMS3: PMSG <^FAULT NUMBER = > MOVEI TLET PNTA ;PRINT TEST LETTER HRRZ $SVUUO TRNE 700000 JRST %ER6X TRNE 070000 JRST %ER5X TRNE 007000 JRST %ER4X PNT3 ;PRINT FAULT NUMBER %ER7X: PCRL JRST %ERMORE %ER4X: PNT4 JRST %ER7X %ER5X: PNT5 JRST %ER7X %ER6X: PNT6 JRST %ER7X ;FAILURE DESCRIPTORS TLET: 0 ;TEST LETTER %FLTTB: 0 ;DESCRIPTOR TABLE %NODES: [0] ;NO DESCRIPTOR SPDES: [0] ;SPECIAL USER FAILURE DESCRIPTOR $ACF: [ASCIZ/C(AC) FAILED/] %AC1F: [ASCIZ/C(AC+1) FAILED/] %EF: [ASCIZ/C(E) FAILED/] %E1F: [ASCIZ/C(E+1) FAILED/] %ARF: [ASCIZ/C(C(ACR)) FAILED/] %AR1F: [ASCIZ/C(C(ACR+1)) FAILED/] %ALF: [ASCIZ/C(C(ACL)) FAILED/] %EEF: [ASCIZ/C(C(E)) FAILED/] %FF: [ASCIZ/FLAG FAILED/] > XLIST IFDEF ERRELB,< LIST ;RELIABILITY FORMAT ERROR PRINTER %ERMS2: SETZM %RAND# ;CLEAR PNT C(RAN) FLAG MOVE 1,%ACS1A CAIL 1,11 ;UUO # 11-13 SETOM %RAND ;YES, SET PNT C(RAN) FLAG TRZ 1,10 ;MAKE UUO # 1-7 MOVEM 1,%ACS1A MOVE 2,ERRPC ;GET UUO ADDRESS MOVE 2,-1(2) ;GET INST IN UUO-1 CAIL 1,4 ;UUO # < THAN 4 ? MOVE 2,$SVUUO ;YES, GET UUO MOVEM 2,%CNTE# ;SAVE E ADDRESS MOVE 2,%ERAC2 MOVE 1,%ERAC1 MOVE 0,%ERAC0 MOVEI 1,@%CNTE ;GET ADRS FIELD OF UUO OR UUO-1 MOVEM 1,%EE1# MOVE 1,%ERAC1 MOVE 1,@%EE1 ;GET C(E) MOVEM 1,%EE1A# MOVE 1,%ERAC1 MOVEI 1,@$SVUUO ;GET ADDRESS FIELD OF UUO MOVEM 1,%EE2# MOVE 1,%ACS1A CAIN 1,3 ;UUO # 3 ? JRST .+4 ;YES MOVE 1,%ERAC1 MOVE 1,@%EE2 ;GET C(E) OF UUO MOVEM 1,%EE2A# MOVE 2,%ACS1A ;GET UUO # MOVE 1,%CNTE LSH 1,-27 ;GET AC NUMBER ANDI 1,17 CAIG 2,5 ;UUO # 6,7 OR 2 CAIN 2,2 JRST %ERR2 ;YES, GO PNT E AND C(E) ;PRINT ERROR AC PMSG <^AC = > MOVE 0,1 PNT2 ;PRINT AC NUMBER PMSG <^C(AC)= > MOVE 0,(1) ;GET C(AC) CAIG 1,2 ;IS AC # = SAVED AC ? MOVE 0,%ERAC0(1) ;YES, GET SAVED AC %ERRB: PNTHW ;PRINT C(AC) OR UUO2 (E) ;PRINT ERROR INFO CAIN 2,5 ;UUO # 5 JRST %ERR4 ;YES, GO PNT 'TST','SKP', OR ETC. PMSG <^COR = > MOVE 0,(1) ;GET C(AC) CAIG 1,2 ;IS AC # = SAVED AC ? MOVE 0,%ERAC0(1) ;YES, GET SAVED AC CAIE 2,2 MOVE 0,%EE1A ;UUO # 2, GET C(E) PNTHW ;PRINT C(E) OR UUO2 C(AC) CAIL 2,4 ;UUO # >3 ? JRST %ERRC ;YES, RESTORE AC'S AND RETURN PMSG <^ ORIGINAL> %ERRB1: MOVE 1,$SVUUO LSH 1,-27 ;GET AC # OF UUO ANDI 1,17 PMSG <^C(AC)= > MOVE 0,(1) ;GET C(AC) CAIG 1,2 ;IS AC # = SAVED AC ? MOVE 0,%ERAC0(1) ;YES, GET SAVED AC SKIPE %RAND ;PRINT C(RAN) FLAG SET ? MOVE 0,RAN# ;YES PNTHW ;PRINT C(AC) OR C(RAN) CAIN 2,3 ;UUO # 3 ? JRST %ERR2 ;YES, PRINT E, RESTORE AC'S AND RETURN CAIN 2,7 ;UUO # 7 ? JRST %ERRC ;YES, BYPASS PRINTING C(E) PMSG <^C(E) = > MOVE 0,%EE2A PNTHW ;PRINT C(E) JRST %ERRC %ERR2: PMSG <^E = > MOVE 0,%EE2 CAIN 2,2 ;UUO # 2 ? MOVE 0,%EE1 PNT6 ;PRINT E OF UUO OR UUO-1 CAIL 2,6 ;UUO 6 OR 7 ? JRST %ERRB1 ;YES, GO PNT C(AC), C(E) AND RETURN CAIN 2,3 ;UUO # 3 ? JRST %ERRC ;YES, RESTORE AC'S AND RETURN PMSG <^C(E) = > MOVE 0,%EE1A ;GET C(E) JRST %ERRB ;PRINT ASCII COMMENT %ERR4: HRRZI 0,@$SVUUO PNTA ;PRINT 'TST','SKP', OR ETC. JRST %ERRC ;COMPLETE PRINTOUT %ERRC: PCRL XLIST IFDEF UUOTXT,< LIST MOVE 0,CONSW TLNN TXTINH ;PRINT DIAGNOSTIC COMMENT ? CAIE 2,7 ;UUO # 7 ? JRST %ERMORE ;NO, RESTORE AC'S AND RETURN MOVE 0,%EE2 ;YES PNTAL ;PRINT DIAGNOSTIC COMMENT PCRL > LIST JRST %ERMORE > LIST ;RESTORE AC'S AND RETURN OR HALT %ERMORE:XCT ERMORE PNTMGN ;PRINT MARGINS SWITCH %ERRS1: TTALTM ;ALTMODE CHECK JRST .+4 ;NONE MOVEI .+3 ;SAVE CONT ADDRESS MOVEM JOBOPC JRST @ALTMGO ;PERFORM TRANSFER MOVE CONSW TLNE 0,ERSTOP ;HALT ON ERROR SWITCH SET ? ERRHLT ;YES TLNN 0,LOOPER ;LOOP ON ERROR SWITCH SET ? SETOM PROCED ;NO, SET THE PROCEED FLAG TLNE 0,DING ;RING BELL SWITCH SET ? PBELL ;YES, GO RING BELL %ERRS2: MOVE 2,%ERAC2 ;RESTORE AC'S MOVE 1,%ERAC1 SETOM @ERRLOP ;SET C(ERR LOOP AC) TO -1 SKIPN PROCED ;LOOP ON ERROR ? JRST %ERRS5 ;YES AOS @ERRLOP ;NO, INC C(ERR LOOP AC) AOS @ERRLOP ;SO IT ='S 1 SKIPL MONCTL ;UNDER DIAGNOSTIC MONITOR ? JRST %ERRS5 ;NO, CONTINUE PROGRAM MOVE 0,ERRTLS ;YES CAIL 0,5 ;PRINTED ALLOWED ERRORS ? JRST $BEND2 %ERRS5: MOVE 0,%ERAC0 ;NO, CONTINUE PROGRAM IFDEF EXCASB,> JRST UUOEXT %ERRS4: MOVE 0,CONSW TLNN PALERS ;PRINT ALL ERRORS ? JRST %ERRS1 ;NO JRST %ERMS1 ;YES SUBTTL *STOR* RESERVED STORAGE, JULY 19,1977 ;PROGRAM LITERALS XLIST IFNDEF $LPAPER, LIT LIST ENDSLD: 0 IFDEF DEBUG,< PATCH: BLOCK DEBUG ;PATCHING AREA > ;PROGRAM VARIABLES VAR IFDEF PGMEND,< END: 0 END START >