/KE8 EAE MULTIPLY/DIVIDE TEST MAINDEC-8E-D0MB /COPYRIGHT 1972, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. 01754 / /PROGRAMMER: ED FORTMILLER / *0 0 JMP 1 2 3 OPEN OPEN *6 ZMB, OPEN ADDA, OPEN / DVI=7407 NMI=7411 SHL=7413 ASR=7415 LSR=7417 MQL=7421 MUY=7405 MQA=7501 CAM=7621 SCA=7441 SCL=7401 ION=6001 HLT=7402 OPEN=0000 /PROGRAM MODIFYABLE AMODE=7447 /"OLD" INSTRUCTION SET BMODE=7431 /"NEW" INSTRUCTION SET / *20 MODE, OPEN /0 = "AMODE"; NON 0 = "B MODE" KSTART, TST0 CHAIN, CHAINN SHLT, SHALT SETCTR, STCTR SRST, SRSET XTYPST, TYPSTG RANDNO, RANGEN UMUYT, MUYT UDIVT, DIVT UMOVE, MOVE UCOMP, COMP USR4T, SR4T USR5T, SR5T USR6T, SR6T UST7T, SR7T USATET, SATET UMUYSM, MUYSM UDIVSM, DIVSM UPRT0, PRT0 UPRT1, PRT1 UPSPC, PSPC UCRLF, CRLF UMSG1, MSG1 UMSG1A, MSG1A UMSG2, MSG2 UPL, PL UPREG, PREG UERPSB, ERPSB UPLRGS, PLRGS UHDSC0, HDSC0 UF1TEL, F1TEL UP1213, P1213 UPFR, PFR UADAC, ADAC UADNAC, ADNAC UADSB, ADSB UMQROT, MQROT UMQRTA, MQRTA UMVR, MVR UZMQ11, ZMQ11 UTAB, TAB UFBRM, FBRM UMDEXR, MDEXR UPUNCH, PUNCH UEXERP, EXERP UTYMOD, TYMOD TEMP, 0 TEMP1, 0 CURTST, 0 RTNNO, 0 NXTST, 0 A, 0 B, 0 L, 0 AC, 0 MQ, 0 MB, 0 LSB, 0 ACSB, 0 MQSB, 0 MBSB, 0 LR, 0 ACR, 0 MQR, 0 MBR, 0 LB, 0 ACB, 0 MQB, 0 MBB, 0 LF, 0 ACF, 0 MQF, 0 MBF, 0 SCS, 0 MQ0S, 0 OFLO, 0 TABF, 0 R11Z, 7776 MQ10M, 0002 FCTR, 0 /FAILURES COUNTER FRCTR, 0 LCNT, -12 /DESIRED TEST LOOP COUNT LCTR, 0 /TEST LOOP COUNTER TCTR, 0 /NUMBER OF TESTS COUNTER BELCNT, -7 /DESIRED PASSES BEFORE RINGING THE BELL SHORT, OPEN /TEST LOOP COUNT FOR RINGING THE BELL K2, 2 K3, 3 K4, 4 K6, 6 TEXR, 0 K0707, 0707 K6060, 6060 K7700, 7700 LINK, OPEN HOMEDF, OPEN OPEN /TO CONTAIN A CHG. DF INSTRUCTION JMP I HOMEDF /EXIT. ENDTYP, JMS I UCRLF -1 JMS I XTYPST KE8SP2 JMP GETRDY-5 BELTYP, JMS I XTYPST BELL JMP GETRDY-3 *0200 SRSET, KCC /SET READER RUN HLT /HALT TO SET SR SWITCHES TO /ANY DESIRED OPTION JMS INTLD /SET UP FOR INTERRUPTS TAD LCNT DCA LCTR TAD BELCNT DCA SHORT ION GETRDY, CLA TAD KSTART /SET ADDRESS OF 1ST ROUTINE DCA NXTST /STORE AT NXTST JMS FORWD LAS RAL SMA /ROUTINE SELECT? JMP SELECT /NO, START WITH 1ST RTN FINDIT, LAS /YES AND [7 CIA TAD RTNNO SNA CLA /IS IT THIS RTN? JMP LOPSEL /YES, GO DO IT TAD NXTST /NO IAC /US THIS LAST RTN? SZA CLA JMP GETRDY+3 /NO INCRTN, HLT /YES, INCORRECT ROUTINE NO. JMP GETRDY CHAINN, JMS SHALT /HALT ? (SR0) JMP DETMOD /MODE DETERMINER SPA /LOOP ROUTINE (SR2) JMP SELMOD /YES, GO DO IT DCA TEMP1 /NO, SAVE AC TAD NXTST /GET NEXT ROUTINE ADDR IAC SZA CLA /LAST ROUTINE? JMP GETRDY+3 /NO TAD TEMP1 RAL SPA /LOOP PROGRAM JMP .+3 /YES HLT /END OF PROGRAM HALT; SR 3=1. JMP CHAINN ISZ SHORT JMP GETRDY /REPEAT TEST WITHOUT ANY BELL OR PRINTOUT. ISZ LCTR JMP BELTYP /GO RING THE BELL. JMP ENDTYP /GO PRINT. FORWD, 0 TAD I NXTST /GET NEXT RTN NO DCA RTNNO /STORE AT RTNNO ISZ NXTST TAD NXTST /GET CURRENT DCA TEMP /ROUTINE NUMBER ISZ NXTST TAD NXTST /SET CURRENT DCA CURTST /ROUTINE ADDRESS TAD I TEMP /GET NEXT ROUTINE DCA NXTST /ADDR, STORE AT NEXTST JMP I FORWD /EXIT SHALT, 0 LAS /READ SR SMA CLA /HALT ? (SR0) JMP I SHALT /NO, EXIT TAD RTNNO / HLT /UNCONDITIONAL HALT (SR0 = 1) / JMP I SHALT /EXIT SELMOD, CLA / TAD MODE / SZA CLA /WHICH MODE IS TO BE SELECTED? JMP CHGTOB /"B" MODE DCA ABLSR /SET ABLDT IN "MUL SIM" FOR "A" MODE. AMODE /CHANGE TO "A" MODE NOW. JMP I CURTST /START TEST. CHGTOB, CLA IAC /0001. DCA ABLSR /SET ABLSR IN "MUL SIM" FOR "B" MODE. BMODE /CHANGE TO "B" MODE NOW. JMP I CURTST /START TEST. SW1SET, CLA CLL TAD RTNNO HLT /SR 1 IS SET: ROUTINE JUST EXECUTED IS /DISPLAYED IN THE AC. LEAVE SR 1 SET /AND SELECT NEW DESIRED ROUTINE BY /PLACINT DESIRED ROUTINE NUMBER IN /SR 9-11. PRESS CONTINUE. CLA CLL / TAD KSTART DCA NXTST JMS FORWD JMP FINDIT /RANDOM NUMBER GENERATOR SUBROUTIN RANGEN, 0 CLA TAD RANTND TAD RANDEX SZA CLA JMP RANTAD TAD RANTBL DCA RANDEX TAD RANCON CLL RAL SZL IAC DCA RANCON RANTAD, TAD RANCON TAD I RANDEX DCA I RANDEX TAD RANSAV RAR TAD I RANDEX ISZ RANDEX NOP DCA RANSAV TAD RANSAV JMP I RANGEN RANDEX, RANTND RANCON, 6543 RANTBL, .+1 6543 3210 0765 5432 2107 7654 4321 1076 RANTND, -. RANSAV, OPEN *400 TYPSTG, 0 CLA TAD I TYPSTG /GET INITIAL ADDRESS DCA TEMQ /STORE INITIAL ADDRESS DCA FLAG /CLEAR FLAG ISZ TYPSTG /PRESETUP EXIT TSC1, TAD I TEMQ /PICK UP DATA RTR /ROTATE 6 BITS RIGHT RTR RTR JMS TSC2 /GO TYPE FIRST CHAR TAD I TEMQ /PICK UP DATA JMS TSC2 /GO TYPE SECOND CHARACTER ISZ TEMQ /EVAN STRING ADDRESS JMP TSC1 /GO BACK FOR MORE TSC2, 0 AND K77 /MASK OFF 6 BITS DCA TEMR /SAVE CHARACTER TAD FLAG /TEST "SPECIAL" FLAG SZA CLA JMP TYPSP /SET: TYPE SPECIAL TAD TEMR /NO, REGULAR CHARACTER SNA /ZERO? JMP .+3 /YES, SET FLAG TYPAT, JMS PRINT /NO, PRINT IT JMP I TSC2 /RETURN ISZ FLAG /SET "SPECIAL" FLAG JMP I TSC2 /EXIT TYPSP, DCA FLAG /CLEAR FLAG TAD TEMR /TEST FOR "0" CIA SNA JMP TYPAT /0: TYPE "0" IAC /TEST FOR 01 SNA CLA JMP I TYPSTGA /YES: EXIT CODE TAD SKIPMAA /ATER INSTRUCTION DCA SWITCH /TO BE "SMA" TAD TEMR /TYPE CHAR JMS PRINT TAD SKIPPA /ALTER INSTRUCTION DCA SWITCH /TO BE "SPA" JMP I TSC2 /RETURN PRINT, 0 TAD M40 /COMPARE WITH 40 SWITCH, SPA /OR SMA FOR SPECIAL CODES TAD C100 TAD C240 JMS I UPUNCH JMP I PRINT TEMQ, 0 TEMR, 0 FLAG, 0 K77, 77 M40, -40 C100, 100 C240, 240 SKIPMA, SMA SKIPPA, SPA L0, 0 0 0 L1, 0 0 0 L2, 0 0 0 L3, 0 0 0 L4, 0 0 0 L5, 0 0 0 L6, 0 0 0 L7, 0 0 0 LATE, 0 0 0 LNINE, 0 0 0 L10, 0 0 0 L11, 0 0 0 L12, 0 0 0 L13, 0 0 0 ZERO, 6000 /0 0100 ONE, 6100 /1 0100 MUYERR, 1525 /MUYERR 3105 2222 0001 DIVERR, 0411 /DIVERR 2605 2222 0001 SC0, 2303 /SC0 6000 0100 SC1, 2303 /SC1 6100 0100 SC2, 2303 /SC2 6200 0100 SC3, 2303 /SC3 6300 0100 SC4, 2303 /SC4 6400 0100 SC5, 2303 /SC5 6500 0100 SC6, 2303 /SC6 6600 0100 SC7, 2303 /SC7 6700 0100 SCATE, 2303 /SC8 7000 0100 SCNINE, 2303 /SC9 7100 0100 SC10, 2303 /SC10 6160 0001 SC11, 2303 /SC11 6161 0001 SC12, 2303 /SC12 6162 0001 SC13, 2303 /SC13 6163 0001 SCCNT, 2303 /SCCNT 0316 2400 0100 FNRSLT, 0616 /FNRSLT 2223 1424 0001 PROB, 2022 /PROB 1702 0001 GOOD, 0717 /GOOD 1704 0001 BAD, 0201 /BAD 0400 0100 SCAT, 2303 /SCA 0100 0100 LT, 1400 /L 0100 CAC, 0350 /C(AC) 0103 5100 0100 CMQ, 0350 /C(MQ) 1521 5100 0100 CMB, 0350 /C(MB) 1502 5100 0100 ERPER, 0522 /ERRORS PER 2217 /HUNDRED: 2223 4020 0522 4010 2516 0422 0504 7240 0001 EXERR, 0530 /E,X 0522 /E,R 2200 /R, 0100 /END CODE PRB1, 0130 /A,X 0234 /B,/ 0240 /B,SPC 7540 /=,SPC 0140 /A,SPC 0001 /END CODE PRB2, 0130 /A,X 0234 /B,/ 0230 /B,X 0234 /B,/ 0140 /A,SPC 7540 /=,SPC 0240 /B,SPC 0001 /END CODE PRB3, 0130 /A,X 0234 /B,/ 0230 /B,X 0234 /B,/ 0130 /A,X 0134 /A,/ 0140 /A,SPC 7540 /=,SPC 0240 /B,SPC 0001 /END CODE PRB4, 0130 /A,X 0234 /B,/ 0230 /B,X 0234 /B,/ 0130 /A,X 0134 /A,/ 0130 /A,X 0134 /A,/ 0240 /B,SPC 7540 /=,SPC 0140 /A,SPC 0001 /END CODE ABVAL, 0140 /A,SPC 7540 /=,SPC AVALUE, 4040 /SPC,SPC 4040 /SPC,SPC 4040 /SPC,SPC 0240 /B,SPC 7540 /=,SPC BVALUE, 4040 /SPC,SPC 4040 /SPC,SPC 0015 /CR 0012 /LF 0001 /END CODE PAGE PUNCH, 0 ISZ PFLAG /SET PUNCH/PRINTER FLAG. TLS /PUNCH/PRINT CLA TAD PFLAG SZA CLA /PFLAG RESET? SKP /NO JMP .+3 /YES TSF /PUNCH/PRINTER FLAG UP? JMP .-5 /NO, REPEAT TCF /YES, CLEAR PUNCH/PRINTER FLAG DCA PFLAG /CLEAR FLAG JMP I PUNCH /EXIT PFLAG, 0 INTAC, 0 INTSVC, DCA INTAC /SAVE AC RAR DCA LINK /SAVE LINK CDF 0 TAD I (0 DCA 0 JMS HOMEDF TSF /PUNCH/PRINTER? JMP .+4 /NO. TCF /YES, CLEAR ITS FLAG DCA PFLAG /CLEAR PFLAG JMP OUT KSF /READER/KEYBD? JMP UNXINT /NO, ERROR KCC /YES, CLEAR FLAG, AC, ADVANCE OUT, CLA CLL TAD LINK /RESTORE LINK RAL TAD INTAC /RESTORE AC ION /ENABLE INTERRUPT JMP I OPEN /EXIT UNXINT, HLT /UNEXPECTED INTERRUPT HALT JMP OUT EXERP, 0 JMS I XTYPST /PRINT EXERR EXERR JMS I UPSPC /SPACE 5 -5 JMS I UMSG1 JMS I UTYMOD /TYPE MODE JMS I UCRLF /CRLF -2 /TWICE JMS I XTYPST /PRINT GOOD GOOD JMS I UPSPC /SPACE 6 -6 JMS I UPLRGS /PRINT REGS LSB -2 JMS I XTYPST /PRINT BAD BAD JMS I UPSPC /SPACE 7 -7 JMS I UPLRGS /PRINT REGS LR -2 JMP I EXERP /EXIT MLDZMB, OPEN TAD MB /GET THE MB DCA ZMB /ZMB=MB TAD MODE /"A" OR "B" SNA CLA / JMP I MLDZMB /"A" MODE TAD MTADR /GET MTADR IAC /+1 TO IT DCA ZMB /ADDRESS OF OPERAND JMP I MLDZMB /EXIT MSMBR, OPEN TAD MBM /GET THE "MUL" MB DCA MBR /MBR=MB TAD MODE /"A" OR "B" SNA CLA / JMP I MSMBR /"A" MODE TAD MBM /"B" MODE, GET CONTENTS OF ADDRESS STORED IN MBM. DCA 5 TAD I 5 DCA MBR /STORE OPERAND IN MBR. JMP I MSMBR /EXIT. DLDZMB, OPEN TAD MB /PUT C(MB) DCA ZMB /INTO AMB, TAD MODE /"A" OR "B" MODE? SNA CLA / JMP I DLDZMB /"A" MODE, EXIT WITH ZMB=MB, SET FOR 8I. TAD DVADR /"B" MODE, GET DVADR TAD K2 /ADD 2 TO MAKE IT THE ADDRESS OF OPERAND DCA ZMB /ZMB = ADDRESS OF OPERAND JMP I DLDZMB /EXIT, SET FOR "B" MODE. DSMSB, OPEN TAD MBD /GET THE "DIVIDE" MB DCA MBR /MBR=MB TAD MODE /"A" OR "B" MODE? SNA CLA / JMP I DSMSB /"A" MODE, EXIT SET FOR "A" MODE. TAD MBD /GET THE CONTENTS OF ADDRESS STORED IN MBD DCA 5 TAD I 5 DCA MBR /STORE OPERAN IN MBR JMP I DSMSB /EXIT SET FOR "B" MODE WHATA, OPEN CLA TAD MODE /WHICH MODE? "A" OR "B" SZA CLA /SKIP IF "A" MODE JMP .+3 TAD A /GET "A" OPERAND JMP I WHATA /EXIT WITH OPERAND IN AC TAD ADDA /GET ADDRESS OF "A" JMP I WHATA /EXIT WITH ADDRESS OF OPERAND IN AC WHATB, OPEN CLA TAD MODE /WHICH MODE? "A" OR "B" SZA CLA /SKIP IF "A" MODE JMP .+3 /"B" MODE MODE TAD B /GET "B" OPERAND JMP I WHATB /EXIT WITH OPERAND IN AC TAD ADDA /GET ADDRESS OF "A" IAC /ADD 1 TO MAKE IT THE ADDRESS OF B JMP I WHATB /EXIT WITH ADDRESS OF OPERAND IN AC /MULTIPLY TEST ROUTINE *. 177+1 MUYT, 0 CLA DCA L JMS I UMOVE L AC -26 TAD I MUYT DCA MTADR ISZ MUYT TAD I MUYT DCA TCTR JMS I UMOVE MTADR, 0 /TEST PARAMETERS MQ -2 JMS MLDZMB /SET THE ZMB TAD MTADR TAD K2 DCA .+2 JMS I UMOVE /GET AND STORE 0000 /EXPECTED RESULTS ACSB -2 TAD MB DCA MBSB DCA LSB HDM, JMS MULT /HARDWARE MULTIPLY JMS MSTR /STORE RESULTS JMS I UCOMP /CHECK RESULTS -4 JMP MERR /ERROR MLT, JMS I USR4T /LOCK ON TEST? (SR4 ON) JMP HDM /YES ISZ TCTR /ALL TESTS DONE? JMP .+2 /NO JMP I CHAIN /YES, EXIT TAD MTADR /SET U FOR TAD K4 /NEXT MULTIPLY DCA MTADR /TEST JMP MTADR-1 MERR, JMS I USR5T /PRINT/HALT? JMP .+5 /GO PRINT JMS MEHLT /GO HALT JMS I USR5T /PRINT? SKP /60 PRINT JMP MLT JMS MERPT /PRINT MULT ERROR JMS MFRP /PRINT FAILURE RATE IF DESIRED JMS MSMP /PRINT SIMU AND GO INTO SCOPE LOOP /IF DESIRED JMP MLT MULT, 0 CLA TAD ZMB /ZMB TO MBM DCA MBM TAD MQ MQL MUY /LOAD MQ AND MULTIPLY MBM, 0 JMP I MULT /EXIT / MSTR, 0 DCA ACR /STORE AC RESULTS RAL DCA LR /STORE LINK RESULT MQA DCA MQR /STORE MQ RESULT JMS MSMBR /STORE MB RESULT SCA DCA SCS /STORE CONTENTS OF STEP COUNTER JMP I MSTR /EXIT / MEHLT, 0 CLA TAD RTNNO /GET ROUTINE NUMBER HLT /MULTIPLY ERROR HALT JMP I MEHLT /EXIT / MERPT, 0 JMS I UCRLF /CRLF -2 /TWICE JMS I XTYPST /PRINT MUYERR MUYERR JMS I UPSPC /SPACE 4 -4 JMS I UERPSB /PRINT ERROR DATA JMS I USR6T /HALT AFTER PRINT? JMS MEHLT /YES JMP I MERPT /NO, EXIT MFRP, 0 JMS I UST7T /PRINT FAILURE RATE? JMP I MFRP /NO, EXIT JMS I SETCTR /SET FRCTR FRCTR /TO -100 -144 DCA FCTR /CLEAR FCTR JMS MULT /MULTIPLY JMS MSTR /STORE RESULTS JMS I UCOMP /CHECK RESULTS -4 ISZ FCTR /ERROR, +1 TO FCTR ISZ FRCTR /DONE 100 TIMES? JMP .-5 /NO, REPEAT JMS I UMSG2 /PRINT FAILURE RATE JMS I USR6T /HALT AFTER PRINT? JMS MEHLT /YES JMP I MFRP /NO, EXIT / MSMP, 0 JMS I USATET /SIMULATION AND SCOPE LOOP? JMP I MSMP /NO, EXIT JMS I UMUYSM /SIMULATE MULTIPLY JMS I UHDSC0 /PRINT HEADIN AND SC0 JMS I UF1TEL /PRINT SC1 THROUGH SC11 JMS I UPFR /PRINT FINAL RESULT MSLOOP, JMS MULT JMP .-1 /ROUTINE TO SET MODE INDICATOR SELECT, LAS RTR SNL /SR 10 SET? JMP .+3 /NO SPA CLA /YES. SR11 SET? JMP .+4 /YES. SETA, CLA CLL DCA MODE /MODE SET FOR "A" JMP SELMOD /DO MODE SELECTION SETB, CLA CMA /7777 DCA MODE /MODE SET FOR "B" JMP SELMOD /DO MODE SELECTION /TAPE 2 - KE8I /DIVIDE TEST ROUTINE *. 177+1 DIVT, 0 CLA DCA L JMS I UMOVE L AC -26 TAD I DIVT /GET AND STORE ADDRESS DCA DVADR /OF TEST DATA ISZ DIVT TAD I DIVT /GET AND STORE DCA TCTR /TEST COUNT JMS I UMOVE /GET AND STORE DVADR, 0 /TEST PARAMETERS AC -3 JMS DLDZMB /SET DLDZMB TAD DVADR TAD K3 DCA .+2 JMS I UMOVE /GET AND STORE 0000 /EXPECTED RESULTS, LSB -3 TAD MB DCA MBSB HDD, JMS DIVD /HARDWARE DIVIDE JMS DSTR /STORE DIVIDE RESULTS JMS I UCOMP /CHECK RESULTS -4 JMP DERR /ERRORS. DLT, JMS I USR4T /LOCK ON TEST? (SR4 ON) JMP HDD /YES. ISZ TCTR /ALL TESTS DONE? JMP .+2 /NO. JMP I CHAIN /YES, EXIT. TAD DVADR /SET UP FOR NEXT TAD K6 /DIVIDE TEST. DCA DVADR JMP DVADR-1 DERR, JMS I USR5T /PRINT/HALT? JMP .+5 /GO PRINT JMS DEHLT /GO HALT JMS I USR5T /PRINT? SKP /GO PRINT JMP DLT JMS DERPT /PRINT DIV ERROR JMS DFRP /PRINT FAILURE RATE IF DESIRED JMS DSMP /PRINT SIMU AND SCOPE LOOP IF DESIRED. JMP DLT DIVD, 0 CLA TAD ZMB DCA MBD /MB TO MBD TAD MQ MQL /LOAD MQ TAD AC /LOAD AC DVI /DIVIDE MBD, 0 JMP I DIVD /EXIT. / DSTR, 0 DCA ACR /STORE AC RESULT RAL DCA LR /STORE LINK RESULT MQA DCA MQR /STORE MQ RESULT JMS DSMSB /STORE MB RESULT SCA DCA SCS /STORE CONTENT OF STEP COUNTER JMP I DSTR /EXIT. / DEHLT, 0 CLA TAD RTNNO /GET ROUTINE NUMBER HLT /DIVIDE ERROR HALT JMP I DEHLT /EXIT. / DERPT, 0 JMS I UCRLF /CRLF -2 /TWICE JMS I XTYPST /PRINT DIVERR DIVERR JMS I UPSPC /SPACE 4 -4 JMS I UERPSB /PRINT ERROR DATA JMS I USR6T /HALT AFTER PRINT? JMS DEHLT /YES. JMP I DERPT /NO, EXIT / DFRP, 0 JMS I UST7T /PRINT FAILURE RATE? JMP I DFRP /NO, EXIT. JMS I SETCTR /SET FRCTR FRCTR /TO -100 -144 DCA FCTR /LCEAR FCTR JMS DIVD /DIVIDE JMS DSTR /STORE RESULTS JMS I UCOMP /CHECK RESULTS -4 ISZ FCTR /ERROR .+1 TO FCTR ISZ FRCTR /DONE 100 TIMES? JMP .-5 /NO, REPEAT JMS I UMSG2 /PRINT FAILURE RATE JMS I USR6T /HALT AFTER PRINT? JMS DEHLT /YES. JMP I DFRP /NO, EXIT. / DSMP, 0 JMS I USATET /SIMULATION AND SCOPE LOOP? JMP I DSMP /NO, EXIT JMS I UDIVSM /SIMULATE DIVIDE JMS I UHDSC0 /PRINT HEADING AND SC0 TAD OFLO SZA CLA /OFLO? JMP .+3 /YES. JMS I UF1TEL /NO, PRINT SC1 TO SC11 JMS I UP1213 /PRINT SC12 AND SC13. JMS I UPFR /PRINT FINAL RESULT. DSLOOP, JMS DIVD /DIVIDE. JMP .-1 /REPEAT. STCTR, OPEN CLA CLL TAD I STCTR /SET CTR ADDRESS DCA TEMP /SAVE AT TEMP ISZ STCTR / TAD I STCTR /SET COUNT DCA I TEMP /STORE PER C(TEMP) ISZ STCTR JMP I STCTR *. 177+1 SR4T, 0 LAS /READ SR AND SR4MSK SZA CLA /SR4 ON? JMP I SR4T /YES. ISZ SR4T /NO. JMP I SR4T SR4MSK, 0200 SR5T, 0 LAS /READ SR AND SR5MSK SNA CLA /SR5 ON? JMP I SR5T /NO. ISZ SR5T /YES. JMP I SR5T SR5MSK, 0100 SR6T, 0 LAS /READ SR AND SR6MSK SZA CLA /SR6 ON? JMP I SR6T /YES. ISZ SR6T /NO. JMP I SR6T SR6MSK, 0040 SR7T, 0 LAS /READ SR AND SR7MSK SNA CLA /SR7 ON? JMP I SR7T /NO. ISZ SR7T /YES. JMP I SR7T SR7MSK, 0020 SATET, 0 LAS /READ SR AND SATEMK SNA CLA /SR8 ON? JMP I SATET /NO. ISZ SATET /YES. JMP I SATET SATEMK, 0010 MOVE, 0 CLA TAD I MOVE /GET "FROM ADDR" AND DCA FADDR /STORE AT FADDR ISZ MOVE TAD I MOVE /GET "TO ADDR" AND DCA TADDR /STORE AT TADDR ISZ MOVE TAD I MOVE /GET "MOVE COUNT" AND DCA MCTR /STORE AT MCTR ISZ MOVE /SET UP EXIT ADDRESS MOVEA, CLA TAD I FADDR /GET "FROM" WORD DCA I TADDR /STORE AT "TO" LOCATION ISZ FADDR /INCREMENT "FROM" ADDRESS ISZ TADDR /INCREMENT "TO" ADDRESS ISZ MCTR /ALL WORDS MOVED? JMP MOVEA /NO. JMP I MOVE /YES. / FADDR, 0 TADDR, 0 MCTR, 0 / COMP, 0 TAD I COMP /GET AND STORE NUMBER OF DCA CMPCTR /WORDS TO COMPARE ISZ COMP TAD C1 /LSB ADDRESS TO C1A DCA C1A TAD C2 /LR ADDRESS TO C2A DCA C2A COMPA, TAD I C1A /GET SHOULD BE WORD. CIA /2'S COMPLEMENT IT TAD I C2A /ADD RESULT WORD SZA CLA /RESULT 0? JMP I COMP /NO..L ISZ C1A /YES, 16L ISZ C2A /FOR NEXT COMPARE ISZ CMPCTR /DONE COMPARING? JMP COMPA /NO. ISZ COMP /YES, 16L JMP I COMP /EXIT. C1, LSB C2, LR C1A, 0 C2A, 0 CMPCTR, 0 / PRT0, 0 JMS I XTYPST /PRINT A 0. ZERO JMP I PRT0 PRT1, 0 JMS I XTYPST /PRINT A 1. ONE JMP I PRT1 / PSPC, 0 CLA TAD I PSPC /GET NUMBER DCA SPCTR /OF SPACES ISZ PSPC JMS I XTYPST /SPACE ONCE .+4 ISZ SPCTR /ALL SPACES DONE? JMP .-3 /NO, REPEAT JMP I PSPC /YES, EXIT 4000 0100 SPCTR, 0 / CRLF, 0 CLA TAD I CRLF /GET NUMBER DCA CRCTR /OF CRLF ISZ CRLF JMS I XTYPST /CRLF ONCE .+4 ISZ CRCTR /ALL CRLF DONE? JMP .-3 /NO, REPEAT JMP I CRLF /YES, EXIT. 0015 0012 0001 CRCTR, 0 / MSG1A, 0 JMS I UPSPC /SPACE 10. -12 JMS I XTYPST /PRINT C(MB) CMB JMP I MSG1A /EXIT *. 177+1 MSG1, 0 JMS I XTYPST /PRINT L. LT JMS I UPSPC /SPACE 7. -7 JMS I XTYPST /PRINNT C(AC) CAC JMS I UPSPC /SPACE 10. -12 JMS I XTYPST /PRINT C(MQ) CMQ JMP I MSG1 /EXIT / ERPSB, 0 JMS I UMSG1 /PRINT HEADINGS JMS I UMSG1A JMS I UTYMOD /TYPE MODE JMS I UCRLF /CRLF -2 /ONCE JMS I XTYPST /PRINT PROB PROB JMS I UPSPC /SPACE 6 -6 JMS I UPLRGS /PRINT 3 REGISTER L -3 JMS I UCRLF /CRLF -1 /ONCE JMS I XTYPST /PRINT GOOD GOOD JMS I UPSPC /SPACE 6 -6 JMS I UPLRGS /PRINT 3 REGISTERS LSB -3 JMS I XTYPST /PRINT BAD BAD JMS I UPSPC /SPACE 7 -7 JMS I UPLRGS /PRINT 3 REGISTERS LR -3 JMS I UCRLF /CRLF -1 /ONCE. JMS I XTYPST /PRINT SCA SCAT JMS I UPSPC /SPACE 8 -10 JMS I UPREG /PRINT 1 REGISTER SCS JMS I UCRLF /CRLF -1 /ONCE JMP I ERPSB /EXIT MSG2, 0 JMS I UCRLF /CRLF -2 /TWICE JMS I XTYPST /PRINT ERRORS PER ERPER /HUNDRED: JMS BDCNV /PRINT FAILURE FCTR /COUNT IN DECIMAL JMS I UTYMOD /TYPE MODE JMS I UCRLF /CRLF -1 /ONCE JMP I MSG2 /END BDCNV, 0 JMS I SETCTR /SET CNVCTR CNVCTR /TO -4 -4 TAD ADDRZA DCA ARROW /INITIALIZE ARROW TAD I BDCNV ISZ BDCNV DCA DIGIT TAD I DIGIT DCA VALUE DCA DIGIT /CLEAR DIGIT CLL TAD VALUE ARROW, TAD TENPWR SNL JMP .+4 ISZ DIGIT /DEVELOP DIGIT DCA VALUE JMP ARROW-2 CLA TAD DIGIT /GET DIGIT TAD K260 /ADD 260 JMS I UPUNCH /PRINT CLA CLL ISZ ARROW /POINT ARROW ISZ CNVCTR /DONE? JMP ARROW-3 /NO, REPEAT JMP I BDCNV /YES, EXIT ADDRZA, TAD TENPWR TENPWR, -1750 -144 -12 -1 VALUE, 0 DIGIT, 0 CNVCTR, 0 K260, 260 PREG, 0 JMS I UPSPC /SPACE 3 -3 JMS I SETCTR /SET PRCTR PRCTR /TO -12 -14 TAD I PREG /GET ADDRESS DCA PRB /OF REGISTER ISZ PREG TAD I PRB /GET CONTENTS OF REG. DCA PRB TAD PRB RAL DCA PRB SZL /BIT A 0? JMP .+3 /NO JMS I UPRT0 /YES, PRINT A 0 SKP JMS I UPRT1 /PRINT A 1. ISZ PRCTR /DONE? JMP .-11 /NO JMP I PREG /YES, EXIT PRB, 0 PRCTR, 0 BELL, 0007 0001 PAGE PL, 0 CLA TAD I PL /GET ADDRESS OF DCA PLB /REGISTER ISZ PL TAD I PLB /GET CONTENTS OF REG. SZA CLA /0? JMP .+3 /NO. JMS I UPRT0 /YES, PRINT 0 JMP I PL /EXIT JMS I UPRT1 /PRINT 1 JMP I PL /EXIT PLB, 0 / PFR, 0 JMS I UCRLF /CRLF -1 /ONCE JMS I XTYPST /PRINT FNRSLT FNRSLT JMS I UPSPC /SPACE 4 -4 JMS I UPLRGS /PRINT FINAL RESULTS LF -2 JMP I PFR /EXIT PLRGS, 0 CLA TAD I PLRGS /GET ADDRESS OF DCA LADR /LINK REGISTER TAD LADR /DEVELOP ADDRESS IAC /OF REGISTERS DCA RADR PLRGS TAD I PLRGS /GET NUMBERS OF DCA PXCTR /REGISTERS ISZ PLRGS JMS I UPL /PRINT CONTENTS OF LADR, 0 /LINK REGISTER JMS I UPREG /PRINT CONTENTS RADR, 0 /OF REGISTERS ISZ RADR /SET UP FOR NEXT REG ISZ PXCTR /DONE? JMP RADR-1 /NO, REPEAT JMS I UCRLF /YES, CRLF -1 /ONCE JMP I PLRGS /EXIT PXCTR, 0 / F1TEL, 0 JMS I XTYPST /PRINT SC1 SC1 JMS I UPSPC /SPACE 7 -7 JMS I UPLRGS /PRINT SC1 RESULTS L1 -2 JMS I XTYPST /PRINT SC2 SC2 JMS I UPSPC /SPACE 7 -7 JMS I UPLRGS /PRINT SC2 RESULTS L2 -2 JMS I XTYPST /PRINT SC3 SC3 JMS I UPSPC /SPACE 7 -7 JMS I UPLRGS /PRINT SC3 RESULTS L3 -2 JMS I XTYPST /PRINT SC4 SC4 JMS I UPSPC /SPACE 7 -7 JMS I UPLRGS /PRINT SC4 RESULTS L4 -2 JMS I XTYPST /PRINT SC5 SC5 JMS I UPSPC /SPACE 7 -7 JMS I UPLRGS /PRINT SC5 RESULTS L5 -2 JMS I XTYPST /PRINT SC6 SC6 JMS I UPSPC /SPACE 7 -7 JMS I UPLRGS /PRINT SC6 RESULTS L6 -2 JMS I XTYPST /PRINT SC7 SC7 JMS I UPSPC /SPACE 7 -7 JMS I UPLRGS /PRINT SC7 RESULTS L7 -2 JMS I XTYPST /PRINT SC8 SCATE JMS I UPSPC /SPACE 7 -7 JMS I UPLRGS /PRINT SC8 RESULTS LATE -2 JMS I XTYPST /PRINT SC9 SCNINE JMS I UPSPC /SPACE 7 -7 JMS I UPLRGS /PRINT SC9 RESULTS LNINE -2 JMS I XTYPST /PRINT SC10 SC10 JMS I UPSPC /SPACE 6 -6 JMS I UPLRGS /PRINT SC10 RESULTS L10 -2 JMS I XTYPST /PRINT SC11 SC11 JMS I UPSPC /SPACE 6 -6 JMS I UPLRGS /PRINT SC11 RESULTS L11 -2 JMP I F1TEL /EXIT /KE8I - TAPE3 *. 177+1 HDSC0, 0 JMS I UCRLF /CRLF -2 /TWICE JMS I XTYPST /PRINT SCCNT SCCNT JMS I UPSPC /SPACE 5 -5 JMS I UMSG1 /PRINT HEADINGS JMS I UTYMOD /TYPE MODE JMS I UCRLF /CRLF -2 /TWICE JMS I XTYPST /PRINT SC0 SC0 JMS I UPSPC /SPACE 7 -7 JMS I UPLRGS /PRINT SC0 RESULTS L0 -2 JMP I HDSC0 /EXIT P1213, 0 JMS I XTYPST /PRINT SC12 SC12 JMS I UPSPC /SPACE 6 -6 JMS I UPLRGS /PRINT SC12 RESULTS L12 -2 JMS I XTYPST /PRINT SC13 SC13 JMS I UPSPC /SPACE 6 -6 JMS I UPLRGS /PRINT SC13 RESULTS L13 -2 JMP I P1213 /EXIT ADSFT, 0 CLA CLL TAD MQB RAR SZL CLA /MQ11(1)? JMS I UADAC /YES, MEM ADD TO AC TAD MQB /NO, MBQ TO MQ MQL TAD ACB /ACB TO AC LSR /SHIFT RIGHT ONCE ABLSR, OPEN /CONTAINS 0 WHEN IN "A" MODE AND 1 WHEN IN "B" MODE TAD LB /LB TO AC0 DCA ACB /STORE AC DCA LB /0 TO LB CLA MQA /MQ TO AC DCA MQB /STORE AT MQB JMP I ADSFT /EXIT. MUYSM, 0 JMS I UMOVE /MOVE INITIAL L /MUY PARAMETERS LB -4 DCA LB /CLEAR LB DCA ACB /CLEAR ACB JMS I UMVR /REGS TO L0 L0 JMS ADSFT JMS I UMVR /REGS TO L1 L1 JMS ADSFT JMS I UMVR /REGS TO L2 L2 JMS ADSFT JMS I UMVR /REGS TO L3 L3 JMS ADSFT JMS I UMVR /REGS TO L4 L4 JMS ADSFT JMS I UMVR /REGS TO L5 L5 JMS ADSFT JMS I UMVR /REGS TO L6 L6 JMS ADSFT JMS I UMVR /REGS TO L7 L7 JMS ADSFT JMS I UMVR /REGS TO LATE LATE JMS ADSFT JMS I UMVR /REGS TO LNINE LNINE JMS ADSFT JMS I UMVR /REGS TO L10 L10 JMS ADSFT JMS I UMVR /REGS TO L11 L11 JMS ADSFT JMS I UMVR /REGS TO LF LF JMP I MUYSM /EXIT / MQROT, 0 CLA CLL CML /ROTATE MQB LEFT. TAD MQB /SET 1 IN MQB11 RAL /AND SAVE MBQ0 AT DCA MQB /MQBS RAR DCA MQ0S JMP I MQROT /EXIT. / DM11, 0 /IF MQ10=LB0, TAD MQB /GO TO ZMQ11 TO AND MQ10M /MAKE MQ11=0. CLL RTR RAR TAD LB SZA CLA JMS ZMQ11 JMP I DM11 /EXIT. / MQRTA, 0 JMS MQROT /ROTATE LEFT MQB JMS DM11 /0 TO MQB11 IF REQUIRED. JMP I MQRTA /EXIT. / ZMQ11, 0 CLA CLL /0 TO MQB11. TAD MQB AND R11Z DCA MQB JMP I ZMQ11 /EXIT. *. 177+1 DIVSM, 0 JMS I UMOVE /MOVE INITIAL L /DIVIDE PARAMETERS LB -4 DCA OFLO /CLEAR OFLO DCA LB /CLEAR LB JMS MVR /REGS TO L0 L0 JMS I UADNAC /MEM ADD TO NOT AV TAD LB SZA CLA /DIV OFLO? JMP DVOFLO /YES JMS I UMQROT /NO, ROTATE MQ JMS I UZMQ11 /0 TO MQ11 TAD MQ0S /ROTATE L AND AC RAL /NOT MQ0 TO AC11 TAD ACB CML RAL DCA ACB /STORE AC RAR DCA LB /STORE L JMP DSC1 DVOFLO, CLA IAC /SIMULATED LINK RESULTS DCA LF /STORE IN LINK FINAL CLA CLL CML /L=1 AC=0 TAD MQ /GET GOOD MQ RAL /SIMULATE EAE DCA MQF /STORE IN MQ FINAL TAD AC /GET GOOD AC DCA ACF /STORE IN AC FINAL ISZ OFLO /SET OFLO IND. JMP I DIVSM DSC1, JMS MVR /REGS TO L1 L1 JMS I UADNAC /MEM ADD TO NOT AC JMS I UMQRTA /MQ ROTATE JMS LACRT /L AND AC ROTATE JMS MVR /REGS TO L2 L2 JMS SCDVS /SC2-11 SEQUENCE JMS MVR /REGS TO L3 L3 JMS SCDVS /SC2-11 SEQUENCE JMS MVR /REGS TO L4 L4 JMS SCDVS /SC2-11 SEQUENCE JMS MVR /REGS TO L5 L5 JMS SCDVS /SC2-11 SEQUENCE JMS MVR /REGS TO L6 L6 JMS SCDVS /SC2-11 SEQUENCE JMS MVR /REGS TO L7 L7 JMS SCDVS /SC2-11 SEQUENCE JMS MVR /REGS TO LATE LATE JMS SCDVS /SC2-11 SEQUENCE JMS MVR /REGS TO LNINE LNINE JMS SCDVS /SC2-11 SEQUENCE JMS MVR /REGS TO L10 L10 JMS SCDVS /SC2-11 SEQUENCE JMS MVR /REGS TO L11 L11 JMS SCDVS /SC2-11 SEQUENCE JMS MVR /REGS TO L12 L12 JMS I UADSB /ADD/SUBTRACT? JMS I UMQRTA /ROTATE MQ JMS MVR /REGS TO L13 L13 CLA CLL TAD MQB RTR SZL JMP .+5 SPA CLA /MQ10(0),MQ11(0)=MEM ADD JMP STF /TO AC JMS I UADAC JMP STF /MQ10(0),MA11(1)= AC TO AC SPA CLA JMP .+3 /MQ10(1),MQ11(0)=MEM ADD JMS I UADNAC /TO NOT AC JMP STF TAD LB /MQ10(1),MQ11(1)= NOT AC TO AC CLL RAL TAD ACB CMA CML DCA ACB /STORE AC RAL DCA LB /STORE LINK STF, JMS MVR /REGS TO LF LF JMP I DIVSM /EXIT. MVR, 0 CLA TAD I MVR /MOVE LB, ACR, AND DCA .+3 /MQB TO LOC SPECIFIED JMS I UMOVE /AT CALL(+1) LB 0 -3 ISZ MVR JMP I MVR /EXIT / SCDVS, 0 JMS I UADSB /SUBROUTINE CALL JMS I UMQRTA /SEQUENCE FOR JMS LACRT /DSC2=11 JMP I SCDVS /EXIT / LACRT, 0 CLA /ROTATE LEFT LB AND ACB. TAD MQB /IF MQB10=0, MQ0S GOES RTR /TO ACB11. IF MQB10=1, SZL CLA /NOW MQ05 GOES TO ACB11 CMA TAD MQ0S RAL CLA TAD ACB RAL DCA ACB RAR DCA LB JMP I LACRT *. 177+1 ADAC, 0 CLA CLL /ADD C(MBB) TAD LB /TO C(ACB) AND C(LB), RAL /AND STORE RESULT BACK TAD ACB /IN ACB AND LB. TAD MBB DCA ACB RAR DCA LB JMP I ADAC / ADNAC, 0 CLA CLL /ADD C(MBB) TO TAD LB /NOT C(ACB) AND C(LB), RAL /STORE RESULT IN ACB AND LB TAD ACB CMA CML TAD MBB DCA ACB RAR DCA LB JMP I ADNAC / ADSB, 0 CLA CLL /IF MQB10=MQB11 TAD MQB /GO TO ADAC SUB. RTR /IF NOT TO ADNAC SUB. RAR AND [6000 TAD [6000 SMA JMP .+3 JMS ADAC JMP I ADSB JMS ADNAC JMP I ADSB / FMFCT, 0 /0X0=0000 0000 0 0 0 1 /1X0=0000 0000 0 0 0 0 /0X1=0000 0000 1 0 0 1 /1X1=0000 0001 1 0 1 1 /0X3=0000 0003 3 0 3 1 /1X7=0000 0007 7 0 7 1 /1X17=0000 0017 17 0 17 1 /1X37=0000 0037 37 0 37 1 /1X77=0000 0077 77 0 77 1 /1X177=0000 0177 177 0 177 1 /1X377=0000 0377 377 0 377 1 /1X777=0000 0777 777 0 777 1 /1X1777=0000 1777 1777 0 1777 1 /1X3777=0000 3777 3777 0 3777 1 /1X7777=0000 7777 7777 0 7777 3 /3X1=0000 0003 1 0 3 7 /7X1=0000 0007 1 0 7 17 /17X1=0000 0017 1 0 17 37 /37X1=0000 0037 1 0 37 77 /77X1=0000 0077 1 0 77 177 /177X1=0000 0177 1 0 177 377 /377X1=0000 0377 1 0 377 777 /777X1=0000 0777 1 0 777 1777 /1777X1=0000 1777 1 0 1777 3777 /3777X1=0000 3777 1 0 3777 7777 /7777X1=0000 7777 1 0 7777 /7777X3=0002 7775 3 7777 2 7775 7 /7X7777=0006 7771 7777 6 7771 17 /17X7777=0016 7761 7777 16 7761 37 /37X7777=0036 7741 7777 36 7741 77 /77X7777=0076 7701 7777 76 7701 177 /177X7777=0176 7601 7777 176 7601 377 /377X7777=0376 7401 7777 376 7401 777 /777X7777=0776 7001 7777 776 7001 1777 /1777X7777=1776 6001 7777 1776 6001 3777 /3777X7777=3776 4001 7777 3776 4001 7777 /7777X7777=7776 0001 7777 7776 1 7777 /7777X3=0002 7775 3 2 7775 7777 /7777X7=0006 7771 7 6 7771 7777 /7777X17=0016 7761 17 16 7761 7777 /7777X37=0036 7741 37 36 7741 7777 /7777X77=0076 7701 77 76 7701 7777 /7777X177=0176 7601 177 176 7601 7777 /7777X377=0376 7401 377 376 7401 7777 /7777X777=0776 7001 777 776 IAC 7777 /7777X1777=1775 6001 1777 1776 ION 7777 /7777X3777=3776 4001 3777 3776 4001 1 /1X4000=0000 4000 4000 0 4000 4000 /4000x1=0000 4000 1 0 4000 1 /1X5252=0000 5252 5252 0 5252 1 /1X2525=0000 2525 2525 0 2525 5252 /5252X1=0000 5252 1 0 5252 2525 /252X1=0000 2525 1 0 2525 5252 /5252X2525=1615 6162 2525 1615 6162 2525 /2525X5252=1615 6162 5252 1615 6162 FDOPR, 0 /0000 0000/0000=1 0000 0001 0 0 1 0 1 7777 /7777 0000/7777=1 7777 0001 0 7777 1 7777 1 0 /0000 0000/0001=0 0000 0000 0 1 0 0 0 0 /0000 0000/0003=0 0000 0000 0 3 0 0 0 0 /0000 0000/0007=0 0000 0000 0 7 0 0 0 0 /0000 0000/0017=0 0000 0000 0 17 0 0 0 0 /0000 0000/0037=0 0000 0000 0 37 0 0 0 0 /0000 0000/0077=0 0000 0000 0 77 0 0 0 0 /0000 0000/0177=0 0000 0000 0 177 0 0 0 0 /0000 0000/0377=0 0000 0000 0 377 0 0 0 0 /0000 0000/0777=0 0000 0000 0 777 0 0 0 0 /0000 0000/1777=0 0000 0000 0 1777 0 0 0 0 /0000 0000/3777=0 0000 0000 0 3777 0 0 0 0 /0000 0000/7777=0 0000 0000 0 7777 0 0 0 0 /0000 0001/7777=0 0001 0000 1 7777 0 1 0 0 /0000 0003/7777=0 0003 0000 3 7777 0 3 0 0 /0000 0007/7777=0 0007 0000 7 7777 0 7 0 0 /0000 0017/7777=0 0017 0000 17 7777 0 17 0 0 /0000 0037/7777=0 0037 0000 37 7777 0 37 0 0 /0000 0077/7777=0 0077 0000 77 7777 0 77 0 0 /0000 0377/7777=0 0377 0000 377 7777 0 377 0 0 /0000 0777/7777=0 0777 0000 777 7777 0 777 0 0 /0000 1777/7777=0 1777 0000 1777 7777 0 1777 0 0 /0000 3777/7777=0 3777 0000 3777 7777 0 3777 0 1 /0001 0000/7777=0 0001 0001 0 7777 0 1 1 3 /0003 0000/7777=0 0003 0003 0 7777 0 3 3 7 /0007 0000/7777=0 0007 0007 0 7777 0 7 7 17 /0017 0000/7777=0 0017 0017 0 7777 0 17 17 37 /0037 0000/7777=0 0037 0037 0 7777 0 37 37 77 /0077 0000/7777=0 0077 0077 0 7777 0 77 77 177 /0177 0000/7777=0 0177 0177 0 7777 0 177 177 377 /0377 0000/7777=0 0777 0000 0 7777 0 377 377 777 /0777 0000/7777=0 0777 0777 0 7777 0 777 777 1777 /1777 0000/7777=0 1777 1777 0 7777 0 1777 1777 3777 /3777 0777/7777=0 3777 3777 0 7777 0 3777 3777 0 /0000 7777/0001=0 0000 7777 7777 1 0 0 7777 1 /0001 2525/0002=0 0001 5252 2525 2 0 1 5252 0 /0000 5252/0002=0 0000 2525 5252 2 0 0 2525 7 /0007 0707/0010=0 0007 7070 0707 10 0 7 7070 0 /0000 7070/0010=0 0000 0707 7070 10 0 0 0707 /ROUTINE TO PRINT FAILURE MODE TYMOD, OPEN CLA CLL TAD MODE CMA TAD (4002 DCA MODEX+2 /STORE A "SPACE" + THE MODE THAT FAILED. JMS I UPSPC -4 JMS I XTYPST /MODE "X" MODEX JMP I TYMOD /EXIT MODEX, 1517 0405 0 1 /KE8I - TAPE 4 / *. 177+1 EX1ST, 0 /SET UP OPERANDS IN /EX1 EXERCISER JMS WHATB /SET "B" DCA .+10 JMS WHATB /SET "B" DCA .+10 JMP I EX1ST EX1, 0 /EXERCISE: CLA /AXB/B=A TAD A MQL MUY 0 DVI 0 JMP I EX1 EX2ST, 0 /SET UP OPERANDS IN /EX2 EXERCISER JMS WHATB DCA .+14 /SET "B" JMS WHATB DCA .+14 /SET "B" JMS WHATB DCA .+14 /SET "B" JMS WHATA DCA .+14 /SET "A" JMP I EX2ST EX2, 0 /EXERCISE: CLA /AXB/BXB/A=B TAD A MQL MUY 0 DVI 0 MUY 0 DVI 0 JMP I EX2 EX3ST, 0 /SET UP OPERANDS IN /EX3 EXERCISER JMS WHATB /SET "B" DCA .+20 JMS WHATB /SET "B" DCA .+20 JMS WHATB /SET "B" DCA .+20 JMS WHATA /SET "A" DCA .+20 JMS WHATA /SET "A" DCA .+20 JMS WHATA /SET "A" DCA .+20 JMP I EX3ST EX3, 0 /EXERCISE: /AXB/BXB/AXA/A=B CLA TAD A MQL MUY 0 DVI 0 MUY 0 DVI 0 MUY 0 DVI 0 JMP I EX3 EX4ST, 0 /SET UP OPERANDS IN /EX4 EXERCISER JMS WHATB /SET "B" DCA .+24 JMS WHATB /SET "B" DCA .+24 JMS WHATB /SET "B" DCA .+24 JMS WHATA /SET "A" DCA .+24 JMS WHATA /SET "A" DCA .+24 JMS WHATA /SET "A" DCA .+24 JMS WHATA /SET "A" DCA .+24 JMS WHATB /SET "B" DCA .+24 JMP I EX4ST EX4, 0 /EXERCISE: /AXB/BXB/AXA/AXA/B=A CLA TAD A MQL MUY 0 DVI 0 MUY 0 DVI 0 MUY 0 DVI 0 MUY 0 DVI 0 JMP I EX4 / /FILL 2K BUFFER WITH RANDOM NON-ZERO NUMBERS FBRM, 0 JMS I SETCTR /SET FBCTR FBCTR /TO -1400 -2570 TAD UTAB DCA FBRT /STORE TABLE ADDRESS JMS I RANDNO /GENERATE RANDOM NUMBER SNA /IS IT ZERO? JMP .-2 /YES, SET ANOTHER NUMBER DCA I FBRT /NO, STORE PER FBRT ISZ FBRT /+1 to FBRT ISZ FBCTR /ALL CHARACTERS GENERATED? JMP .-6 /NO, REPEAT ISZ TABF /YES, SET TABLE FULL INDICATOR JMP I FBRM /EXIT FBCTR, 0 FBRT, 0 *. 177+1 MDEXR, 0 DCA L JMS I UMOVE /CLEAR REGISTERS L AC -26 TAD I MDEXR DCA TSTP /STORE SETUP ADDRESS ISZ MDEXR TAD I MDEXR DCA TEXR ISZ MDEXR TAD I MDEXR DCA MQSB TAD I MQSB DCA MQSB /STORE EXPECTED RESULT ISZ MDEXR TAD I MDEXR DCA PRBX /STORE PRB PRINTOUT ADDRESS ISZ MDEXR /SET UP EXIT JMS I TSTP /SET UP EXERCISE JMS EX /GO DO EXERCISE JMP EXCMP EX, 0 JMS I TEXR /DO EXERCISE DCA ACR /STORE AC RESULT RAR DCA LR /STORE LINK RESULT MQA DCA MQR /STORE MQ RESULT JMP I EX EXCMP, JMS I UCOMP /COMPARE RESULTS AND -3 /EXPECTED RESULTS (3 WORDS) JMP EXER /ERROR EXLT, JMS I USR4T /LOCK ON TEST? (SR4 ON) JMP EX-2 /YES. JMP I MDEXR /NO, EXIT EXER, JMS I USR5T /PRINT/HALT? JMP .+5 /YES, GO PRINT JMS EXEHLT /GO HALT JMS I USR5T /PRINT? SKP /GO PRINT JMP EXLT /NO PRINT JMS I UCRLF /CRLF TWICE -2 JMS I XTYPST /PRINT PROB PROB JMS I UPSPC /SPACE TWICE -2 JMS I XTYPST /PRINT PROBLEM DESCRIPTION PRBX, 0 JMS I UCRLF /CRLF TWICE -2 JMS ASCCN A AVALUE JMS ASCCN B BVALUE JMS I XTYPST ABVAL JMS I UEXERP JMS I USR6T /HALT AFTER PRINT? JMS EXEHLT /YES, GO HALT JMS I UST7T /PRINT FAILURE RATE? JMP EXLOP-2 /NO JMS I SETCTR /SET FRCTR FRCTR /TO -100 -144 DCA FCTR /CLEAR FAILURES COUNTER JMS EX /DO EXERCISE JMS I UCOMP /COMPARE RESULTS -3 ISZ FCTR /ERROR: +1 to FCTR ISZ FRCTR /DONE 100 TIMES? JMP .-5 /NO, REPEAT JMS I UMSG2 /YES, PRINT FAILURE RATE JMS I USR6T /HALT AFTER PRINT? JMS EXEHLT /YES GO HALT JMS I USATET /SCOPE LOOP? JMP EXLT /NO EXLOP, JMS I TEXR /DO EXERCISE JMP .-1 /REPEAT TSTP, 0 EXEHLT, 0 CLA TAD RTNNO /GET ROUTINE NUMBER HLT /MUY/DVI EXR ERR HALT JMP I EXEHLT /EXIT ASCCN, 0 /CONVERT TO OCTAL PACKED ASCII TAD I ASCCN DCA WASC /STORE ADDRESS OF WORD TO CONVERT ISZ ASCCN TAD I ASCCN /STORE ADDRESS OF LOCATION DCA SASC /TO STORE CONVERTED DATA ISZ ASCCN /SET UP EXIT TAD K7700 AND I WASC /GET TWO HIGH ORDER DIGITS RTR CLL RTR /SHIFT TO LOW ORDER RTR /POSITIVES JMS CNV /GO DO CONVERSION ISZ SASC /+1 TO STORE ADDRESS TAD K7700 CMA AND I WASC /GET TWO LOW ORDER DIGITS JMS CNV /GO DO CONVERSION JMP I ASCCN /EXIT CNV, 0 DCA ASCT /SAVE DIGITS TAD ASCT /GET DIGITS BACK AC=00XX RTL RAL /AC=0XX0 AND K0707 /AC=0X00 TAD ASCT /AC=0XXX AND K0707 /AC=0X0X TAD K6060 /AC=6X6X DCA I SASC /STORE PER STORE ADDRESS JMP I CNV /EXIT WASC, 0 SASC, 0 ASCT, 0 KE8SP2, 0007 /BELL 1305 /K;E 7040 /8;SPACE 6200 /2;END 0100 /CODE *. 177+1 TST0, 0 TST1 JMS I UMUYT FMFCT -67 TST1, 1 TST2 JMS I SETCTR /SET RMCTR RMCTR /TO -1400 -2570 TAD UTAB /GET AND STORE DCA RMAD RMSTP, JMS I RANDNO /GENERATE RANDOM NO. DCA I RMAD /STORE ISZ RMAD ISZ RMCTR JMP .-4 DCA L /YES CLEAR REGISTERS. JMS I UMOVE L AC -27 JMS I SETCTR /SET RMCTR RMCTR /TO -350 -536 TAD UTAB /GET AND STORE DCA .+2 /TABLE ADDRESS JMS I UMOVE /MOVE TWO FACTORS RMSTPA, 0 /TO MQ AND MB. MQ -2 JMS I UMUYSM /SIMULATE MULTIPLY TAD RMSTPA TAD K2 DCA .+3 JMS I UMOVE /STORE RESULTS ACF 0 -2 TAD .-2 /SET UP FOR NEXT TAD K2 /TWO FACTORS. DCA RMSTPA ISZ RMCTR /DONE SIMULATING? JMP RMSTPA-1 /NO, REPEAT JMS I UMUYT /YES GO DO MULTIPLY TEST TAB -536 RMCTR, 0 RMAD, 0 TST2, 2 TST3 JMS I UDIVT FDOPR -50 TST3, 3 TST4 JMS I SETCTR /SET RDCTR RDCTR /TO -1400 -2570 TAD UTAB /GET AND STORE DCA RDAD /TABLE ADDRESS RDSTP, JMS I RANDNO /GENERATE RANDOM NO. DCA I RDAD /STORE ISZ RDAD ISZ RDCTR JMP .-4 DCA L /YES, CLEAR REGISTERS JMS I UMOVE L AC -27 JMS I SETCTR /SET RDCTR RDCTR /TO -233 -351 TAD UTAB /GET TABLE ADDR DCA RDSTPA /AND STORE. JMS I UMOVE RDSTPA, 0 /MOVE DIVIDE OPERANDS TO AC /AC, MQ, AND MB. -3 JMS I UDIVSM /SIMULATE DIVIDE. TAD RDSTPA TAD K3 DCA .+3 JMS I UMOVE /STORE RESULTS LF 0 -3 TAD .-2 /SET UP FOR NEXT TAD K3 /SImULATION. DCA RDSTPA ISZ RDCTR /DONE SIMULATING? JMP RDSTPA-1 /NO, REPEAT JMS I UDIVT /YES, GO DO DIVIDE TEST. TAB -351 RDCTR, 0 RDAD, 0 TST4, 4 TST5 JMS I UFBRM /FILL 2K BUFFER WITH RANDOM NUMBERS. JMS I SETCTR /SET TCTR TCTR /TO -700 -1274 TAD UTAB DCA ADR1 /STORE TABLE ADDRESS JMS I UMOVE /MOVE 2 OPERANDS TO A AND B. ADR1, 0 A -2 TAD ADR1 /SET ADDA TO DCA ADDA /ADDRESS OF A. JMS I UMDEXR /GO DO MUY/DVI EXERCISE TEST. EX1ST /EXERCISE SET UP ADDRESS. EX1 /EXERCISE ADDRESS. A /CONVERT RESULT ADDRESS PRB1 /PROBLEM PRINT OUT ADDRESS. ISZ ADR1 /+2 TO ADR1 ISZ ADR1 ISZ TCTR /ALL TESTS DONE? JMP ADR1-1 /NO, REPEAT JMP I CHAIN /YES, CHAIN. LOPSEL, CLA CLL TAD RTNNO /ROUTINE NUMBER HLT /RTN NUMBER IN AC, SET SR TO /DESIRED MODE OF OPERATION AND PRESS /CONTINUE. JMP SELECT /GO DO THE SELECTION ACCORDING TO SR. PAGE / TST5, 5 TST6 CLA TAD TABF SNA CLA JMS I UFBRM JMS I SETCTR AND TCTR -1274 TAD UTAB DCA ADR2 JMS I UMOVE ADR2, 0 A -2 TAD ADR2 DCA ADDA JMS I UMDEXR EX2ST EX2 B PRB2 ISZ ADR2 ISZ ADR2 ISZ TCTR JMP ADR2-1 JMP I CHAIN /YES, CHAIN. TST6, 6 TST7 CLA TAD TABF SNA CLA JMS I UFBRM JMS I SETCTR TCTR -1274 TAD UTAB DCA ADR3 JMS I UMOVE ADR3, 0 A -2 TAD ADR3 DCA ADDA JMS I UMDEXR EX3ST EX3 B PRB3 ISZ ADR3 ISZ ADR3 ISZ TCTR JMP ADR3-1 JMP I CHAIN /YES, CHAIN / TST7, 7 7777 CLA TAD TABF SNA CLA JMS I UFBRM JMS I SETCTR TCTR -1274 TAD UTAB DCA ADR4 JMS I UMOVE ADR4, 0 A -2 TAD ADR4 DCA ADDA JMS I UMDEXR EX4ST EX4 A PRB4 ISZ ADR4 ISZ ADR4 ISZ TCTR JMP ADR4-1 JMP I CHAIN /ROUTINE TO DETERMINE MODE OF OPERATION. DETMOD, LAS CLL CML RTR SZL JMP AORB AND MODE SNA CLA JMP SETB DCA MODE RDSW1, LAS CLL RTL SZL JMP SW1SET JMP CHAINN+2 AORB, SPA JMP .+5 AND MODE SNA JMP RDSW1 JMP SETA AND MODE SNA CLA JMP SETB JMP RDSW1 INTLD, OPEN CLA CLL RIF TAD [CDF DCA HOMEDF+1 CDF 0 TAD (RMF DCA I (1 TAD (5403 DCA I (2 TAD (INTSVC DCA I (3 JMS HOMEDF JMP I INTLD *. 177+1 / TAB, 0 *. +2567 $