/KE8 EAE MULTIPLY/DIVIDE TEST MAINDEC-8I-D0BA /COPYRIGHT 1972, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. 01754 / /PROGRAMMER: ED FORTMILLER / *0 0 JMP 1 2 3 *5 JMP I .+1 /GO TO INTERRUPT INTSVC /SERVICE ROUTINE / 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 / *20 KSTART, TST0 CHAIN, CHAINN SHLT, SHALT SETCTR, STCTR SRST, SRSET XTYPST, TYPSTG RANDNO, RANGEN UMUYT, MUYT UDIVT, DIVT UMOVE, MOVE MULT DIVD MSTR DSTR UCOMP, COMP USR4T, SR4T USR5T, SR5T USR6T, SR6T UST7T, SR7T USATET, SATET MEHLT DEHLT MERPT DERPT MFRP DFRP MSMP DSMP 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 BDCNV UTAB, TAB UFBRM, FBRM UMDEXR, MDEXR UPUNCH, PUNCH UEXERP, EXERP TEMP, 0 TEMP1, 0 K7, 7 CURTST, 0 RTNNO, 0 NXTST, 0 0 0 7444 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 K6000, 6000 FCTR, 0 /FAILURES COUNTER FRCTR, 0 LCNT, -144 /DESIRED TEST LOOP COUNT LCTR, 0 /TEST LOOP COUNTER TCTR, 0 /NUMBER OF TESTS COUNTER K2, 2 K3, 3 K4, 4 K6, 6 TEXR, 0 K0707, 0707 K6060, 6060 K7700, 7700 *0200 SRSET, HLT /HALT TO SET SR SWITCHES TO /ANY DESIRED OPTION JMS I UMOVE /Move 5 /Interrupt trampoline 1 /To location 1 -2 TAD LCNT DCA LCTR ION GETRDY, CLA TAD KSTART /SET ADDRESS OF 1ST ROUTINE DCA NXTST /STORE AT NXTST JMS FORWD LAS RAL SMA /ROUTINE SELECT? JMP I CURTST /NO, START WITH CURRENT RTN FINDIT, LAS /YES AND K7 CIA TAD RTNNO SNA CLA /IS IT THIS RTN? JMP I CURTST /NO, START WITH CURRENT RTN 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) LAS RTL SZL JMP GETRDY SPA JMP I CURTST DCA TEMP1 /NO, SAVE AC TAD NXTST /GET NEXT ROUTINE ADDR IAC SZA CLA /LAST ROUTINE? JMP GETRDY+3 /NO ISZ LCTR JMP GETRDY TAD TEMP1 RAL SPA /LOOP PROGRAM JMP GETRDY /YES HLT /END OF PROGRAM HALT; SR 3=1. JMP CHAINN FORWD, 0 CLA CLL 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 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 /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 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 LINK, 0 INTSVC, DCA INTAC /SAVE AC RAR DCA LINK /SAVE LINK 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 EXERR, 0530 /E,X 0522 /E,R 2200 /R, 0100 /END CODE EXERP, 0 JMS I XTYPST /PRINT EXERR EXERR JMS I UPSPC /SPACE 5 -5 JMS I UMSG1 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 /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 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 MB /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 TAD MBM DCA MBR /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 /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 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 MB 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 TAD MBD DCA MBR /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. *. 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 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 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 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 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, JMS I UMOVE LB LF -3 CLA CLL CML RAL DCA I .-3 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 K6000 TAD K6000 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 7777 0000 0 0 1 7777 0 7777 /7777 0000/7777=1 7777 0000 0 7777 1 7777 0 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 /KE8I - TAPE 4 / *. 177+1 EX1ST, 0 /SET UP OPERANDS IN /EX1 EXERCISER CLA TAD B /SET "B" DCA .+10 TAD B /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 CLA TAD B DCA .+14 /SET "B" TAD B DCA .+14 /SET "B" TAD B DCA .+14 /SET "B" TAD A 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 CLA TAD B /SET "B" DCA .+20 TAD B /SET "B" DCA .+20 TAD B /SET "B" DCA .+20 TAD A /SET "A" DCA .+20 TAD A /SET "A" DCA .+20 TAD A /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 CLA TAD B /SET "B" DCA .+24 TAD B /SET "B" DCA .+24 TAD B /SET "B" DCA .+24 TAD A /SET "A" DCA .+24 TAD A /SET "A" DCA .+24 TAD A /SET "A" DCA .+24 TAD A /SET "A" DCA .+24 TAD B /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 *. 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 *. 177+1 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 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. / 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 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 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 JMS I UMDEXR EX4ST EX4 A PRB4 ISZ ADR4 ISZ ADR4 ISZ TCTR JMP ADR4-1 JMP I CHAIN *. 177+1 / TAB, 0 *. +2567 $