Directory of image this file is from
This file as a plain text file
/REV D SPECTRUM PLOT FOR CRT /SYSTEM INDUSTRIES, INC. /535 DEL REY AVENUE /SUNNYVALE, CALIFORNIA /PROGRAM NAME: CRTSP /STARTING ADDRESS: 2000 /CORE: 2000-3177; 20-100 /*****PARAMETERS PASSED BETWEEN OVERLAYS***** /PARAM = -1 IF ERROR FOUND IN COMPUTATION, OTHERWISE 0 / +1 = -1 FOR SP, 0 FOR RGC, 1 FOR LR, OR 2 FOR DOUBLE DISPLAY / +2 = WADD FOR SCRATCH FILE / +3 = WADD+1 / +4 = NO. OF DATA POINTS FOR RGC OR HIGH AMU-LOW AMU FOR SP (RNG) / +5 = NO. OF DATA POINTS (DP) FOR SP / +6 = LOW LABEL (LWLBL) FOR SP / +7 = MAXGC / +10 = MAXGC+1 / +11 = MAXGC+2 / +12 = ORIGINAL SCALE / +13 = HIGH AMU (HAMU) FOR SP OR NO. OF DATA POINTS (DP) FOR RGC / +14 = -1 FOR LOWER GRAPH, 0 FOR ONE GRAPH, 1 FOR UPPER GRAPH, / OR 2 FOR INITIAL PASS AT LOWER SP GRAPH / +15 = TEMPORARY STORAGE / +16 = TEMPORARY STORAGE / +17 = HAMU FOR LOWER SP GRAPH / +20 = LWLBL FOR LOWER SP GRAPH / +21 = -1 FOR SP OR 1 FOR LR AS LOWER GRAPH / +22 = SPECTRUM NO. FOR LOWER GRAPH OR ONE GRAPH / OR NO. OF RANGES (LR) FOR LOWER GRAPH / +23 = SPECTRUM NO. FOR BACKGRD SUBTRACT / +24 = FILE NAME / +25 = FILE NAME / +26 = FILE NAME / +27 = 1 IF DOUBLE GRAPH IS 2 SP'S, OTHERWISE 0 / +30 = FIRST WORD FROM PARAMETER TABLE (ADDRESS 200 - PART OF TITLE) OPENW=613 WRITE=404 READ=412 WAIT=1000 QAD=166 RADD=171 WADD=173 ERRFLG=175 EXEC=1200 LOAD=1600 DTLB=6774 RFFLG=556 SBUFR=100 INDBUF=7277 TBUFR=3200 RAD=200 AI5=15 XFLG=176 PARAM=7500 *20 PTCTR, 0 LOOP1, 0 LOOP3, 0 TAPAD, RAD+136 RAD+137 PREVI, 0 0 MEBVK, 0 0 KBFAD, 0 GAP1, 0 M129, 7577 GAP4, 0 SPCNO, RAD+121 DBLFLG, PARAM+14 TELK9, 0 TELK10, 0 FSTFLG, 0 LAMU, 0 PSP, TELY PMTSS, MTSS
*2000 PEX, CLA DCA MEBVK DCA MEBVK+1 DCA FSTFLG TAD (-1333 DCA LOOP3 JMS I (OPENW FNAME1 INDBUF SKP HLT JMS I (WAIT CLA TAD WADD DCA I (PARAM+2 TAD WADD+1 DCA I (PARAM+3 DCA PTCTR TAD (TBUFR-1 DCA AI5 CLL IAC TAD I TAPAD+1 DCA RADD+1 RAL TAD I TAPAD DCA RADD JMS I (READ 0 201 INDBUF 0 JMS I (WAIT CLA JMS I PMTSS /INITIALIZE SPECTRUM READ JMS I PSP /STORE SPECTRUM DATA CLA TAD LOOP3 TAD (1333 SZA CLA JMS I (WRBUF TAD LAMU CIA TAD I (TELK7 IAC DCA I (PARAM+4 /HIGH AMU-LOW AMU (RNG) TAD I DBLFLG SMA CLA JMP ARD3 TAD I (PARAM+27 SZA CLA ARD3, TAD I (TELK7 DCA I (PARAM+13 /HIGH AMU CMA TAD LAMU DCA I (PARAM+6 /LOW LABEL (LWLBL) DCA I (PARAM+7 /MAXGC TAD GAP4 TAD (12 SMA CLA JMS I (MT ISZ GAP1 ISZ GAP1 CDF 10 TAD I GAP1 CDF 0 AND (3777 DCA I (PARAM+10 /MAXGC+1 ISZ GAP1 CDF 10 TAD I GAP1 CDF 0 DCA I (PARAM+11 /MAXGC+2 TAD PTCTR DCA I (PARAM+5 /NO. OF DATA POINTS (DP) DCA I (PARAM /OKAY RETURN CMA DCA I (PARAM+1 /THIS IS SP TAD I DBLFLG TAD (-2 SNA CLA /IS THIS INITIAL PASS FOR 2 SP'S? JMP ARD1 /YES ERRTN, JMS I (CKEXC JMS I (LOAD FNAME2 TBUFR ER1, CLA TAD (204 DCA ERRFLG JMP I (RTEXEC ARD1, DCA I (200 /RETURN TO CRT EXEC JMS I (CKEXC JMS I (LOAD FNAME3 TBUFR JMP ER1
*2200 /OBTAIN THE INDEX BLOCK ADDRESS /AND THEN FIND THE ABSOLUTE SPECTRUM /ADDRESS. MTSS, 0 DCA IXCT CMA TAD I SPCNO /SPECTRUM NUMBER MTSS2, TAD M129 SPA JMP MTSS1 ISZ IXCT JMP MTSS2 MTSS1, DCA SPIX /SPECTRUM INDEX TAD M129 CIA TAD SPIX DCA SPIX /REM CLL TAD IXCT RAL DCA IXCTA TAD (INDBUF /FORM INDEX BLK TAD P7 /DISK ADDRESS TAD IXCTA DCA IXCTA TAD I IXCTA /MSW INDEX BLK DCA RADD /REL ADDRESS ISZ IXCTA TAD I IXCTA DCA RADD+1 TAD IXCT SNA CLA JMP MTSS3 CLA CMA TAD IXCT CLL RAL TAD (INDBUF TAD P7 DCA IXCTA /FIND PREV INDEX TAD I IXCTA /BLK REL ADDRESS DCA PREVI ISZ IXCTA TAD I IXCTA DCA PREVI+1 CLL /ABSOLUTE PREV TAD PREVI+1 /INDEX BLOCK TAD I TAPAD+1 /ADDRESS DCA PREVI+1 RAL TAD I TAPAD TAD PREVI DCA PREVI JMP MTSS4 MTSS3, CLA CLL /SPECTRUM 1-129 TAD I TAPAD+1 IAC DCA PREVI+1 RAL TAD I TAPAD DCA PREVI MTSS4, CLA CLL TAD I TAPAD+1 /FORM ABSOLUTE TAD RADD+1 /INDEX BLK ADDR DCA RADD+1 RAL TAD I TAPAD TAD RADD DCA RADD JMS I (READ /READ INDEX BLOCK 0 201 INDBUF 0 JMS I (WAIT CLA TAD (INDBUF TAD SPIX DCA SPIX TAD I SPIX /FORM SPECTRUM DCA MTSS5+1 /ABSOLUTE DISK CLL /ADDRESS TAD MTSS5+1 TAD PREVI+1 DCA PREVI+1 /SPECTRUM START ADDRESS RAL TAD MTSS5 TAD PREVI DCA PREVI DCA LOOP1 TAD PREVI DCA RADD TAD PREVI+1 DCA RADD+1 JMS I (MT JMP I MTSS IXCT, 0 IXCTA, 0 SPIX, 0 P7, 7 MTSS5, 0 0 CKEXC, 0 /CHECK EXEC FLAG KSF JMP I CKEXC KRB TAD (-214 SZA CLA JMP I CKEXC RTEXEC, TAD QAD SZA CLA JMP ENQ1 TAD QAD+1 SNA CLA JMP I (EXEC /NOT IN QUEUE MODE-LEAVE ENQ1, CLL CMA /STORE END SENTINEL IN LAST BLOCK TAD QAD+1 DCA RADD+1 RAL TAD (-1 TAD QAD DCA RADD JMP I (ENQ2
*2400 TELY, 0 TEL5, JMS GAP /GET DATA POINT JMP I TELY /END OF SPECTRA TEL6, 0 /AMU 0 /INTENSITY 0 /INTENSITY JMS THOU JMP TEL5 /750 AMU FLAG FOUND CLA TAD XFLG /IS EXEC FLAG SET SZA CLA JMP I (RTEXEC /YES- RETURN TO EXEC TAD TEL6+1 /LSB AMU AND TELK6 /4000 CLL RAL CLA TAD TEL6 RAL DCA TELK8 GLK DCA TELK7 CLL TAD MEBVK+1 TAD TELK8 DCA TELK8 RAL TAD TELK7 TAD MEBVK JMS I (DIVIDE TELK8, 0 12 DCA TELK7 TAD TELK7 DCA I AI5 TAD TEL6+1 AND TELK2 DCA TELK9 TAD TELK9 DCA I AI5 TAD TEL6+2 DCA TELK10 TAD TELK10 DCA I AI5 TAD FSTFLG SZA CLA JMP TEL3 ISZ FSTFLG TAD TELK7 /SAVE FIRST AMU VALUE DCA LAMU TEL3, ISZ PTCTR ISZ LOOP3 SKP JMS I (WRBUF JMP TEL5 TELK2, 3777 TELK6, 4000 TELK7, 0 GAP, 0 /GET ONE POINT FROM SPECTRA CLA CDF 10 TAD I GAP1 /GET A POINT CDF 0 SNA JMP I GAP /END OF SPECTRA ISZ GAP /USER STR ADDR DCA I GAP /STORE DATA JMS UPDAT CDF 10 TAD I GAP1 /INTENSITY CDF 0 DCA I GAP JMS UPDAT CDF 10 TAD I GAP1 CDF 0 DCA I GAP JMS UPDAT JMP I GAP /RETURN UPDAT, 0 ISZ GAP1 /UPDATE BUFFER ADDR ISZ GAP /UPDATE STR ADDR ISZ GAP4 /END OF BUFFER JMP I UPDAT /NO JMS I (MT /READ IN BLOCKS CLA TAD M129 /RESET COUNTER DCA GAP4 /AND BUFFER TAD KBFAD /ADDRESS DCA GAP1 JMP I UPDAT /TEST FOR A DATA POINT CONSISTING OF /FIRST WORD ALL ONES, THEN TWO WORDS ZERO. ADD /750 TO THE AMU BASE VALUE /CONSTANT IF THE FLAG IS SET. THOU, 0 CLA IAC TAD TEL6 SZA CLA JMP THOU3 CLL TAD THOU2 TAD MEBVK+1 DCA MEBVK+1 RAL TAD THOU1 TAD MEBVK DCA MEBVK JMP I THOU THOU3, ISZ THOU JMP I THOU THOU1, 1 THOU2, 6514 FNAME1, 3737 /HOLD BUFFER 0 0 FNAME2, TEXT #DSPLAY#
*2600 /DIGITAL-8-12-F /SIGNED SINGLE PRECISION DIVIDE SUBROUTINE /CALLING SEQUENCE: / C(AC) CONTAINS HIGH ORDER DIVIDEND / JMS DIVIDE / LOW ORDER DIVIDEND / DIVISOR / RETURN: C(AC)=QUOTIENT; REMAINDER IN HDIVND /IF HIGH ORDER DIVIDEND IS EQUAL TO OR GREATER /THAN THE DIVISOR; NO DIVISION TAKES PLACE AND C(L)=1 DIVIDE, 0 CLL SPA /DIVIDEND<0? CMA CML /YES COMPLEMENT AND SET C(L) DCA HDIVND /HIGH ORDER DIVIDEND SNL CMA DCA SDVND /SET DIVIDEND SIGN SWITCH TAD I DIVIDE /FETCH LOW ORDER DIVIDEND SZL CMA CLL IAC /YES: COMPLEMENT DCA LDIVND /LOW ORDER DIVIDEND SZL /CARRY? ISZ HDIVND /YES ISZ DIVIDE TAD I DIVIDE /FETCH DIVISOR CLL SMA CMA CML IAC /NEGATE IT DCA DIVSOR /SAVE DIVISOR SNL /WAS IT <0? CMA /YES: AC=-1 TAD SDVND DCA SNSWER /ANSWER SIGN SWITCH CLL TAD DIVSOR /COMPARE DIVISOR TAD HDIVND /WITH DIVIDEND ISZ DIVIDE SZL CLA /OVER FLOW? JMP I DIVIDE /YES: DIVISOR<DIVIDEND TAD M13 /13 SHIFTS DCA DIVCNT JMP DV2 /DIVIDE LOOP DV3, TAD HDIVND RAL DCA HDIVND /DIVIDEND LEFT SHIFT TAD HDIVND TAD DIVSOR /COMPARE DIVISOR;DIVIDEND SZL DCA HDIVND /REMAINDER AFTER SUBTRACT CLA DV2, TAD LDIVND /QUOTIENT BITS RAL /ENTER HERE DCA LDIVND ISZ DIVCNT /DONE 12? JMP DV3 /NO: CONTINUE TAD HDIVND /REMAINDER ISZ SDVND /DIVIDEND<0? CMA IAC /YES DCA HDIVND TAD LDIVND /QUOTIENT ISZ SNSWER /ANSWER<0? CMA IAC /YES: NEGATE CLL JMP I DIVIDE /EXIT HDIVND, 0 LDIVND, 0 DIVSOR, 0 SDVND, 0 SNSWER, 0 DIVCNT, 0 M13, -15 /-13(10) WRBUF, 0 TAD WADD /CK FOR ROOM TO WRITE BUFFER CIA TAD (3 SNA JMP CK SMA CLA JMP WRBUF1 NTOK, CMA /NO ROOM DCA I (200 JMP I (ERRTN CK, TAD WADD+1 CIA TAD (1256 SPA CLA JMP NTOK WRBUF1, JMS I (WRITE /WRITE OUT SAVED BUFFER 0 4221 /21(8) BLKS TBUFR 0 JMS I (WAIT CLA TAD (TBUFR-1 /REINITIALIZE DCA AI5 TAD (-1333 DCA LOOP3 JMP I WRBUF ENQ2, TAD RADD DCA WADD TAD RADD+1 DCA WADD+1 JMS I (READ /READ LAST BLK 0 201 INDBUF 0 JMS I (WAIT CLA CMA DCA I (INDBUF+143 /PUT IN ALL ONES JMS I (WRITE /REWRITE IT 0 201 INDBUF 0 JMS I (WAIT CLA DCA QAD /CLEAR QUEUE WORDS DCA QAD+1 JMP I (EXEC /LEAVE
*3000 MT, 0 /READ 37 SPECTRUM BLKS CLA JMS I (CKEXC TAD LOOP1 SZA CLA /DONE WITH ALL BLOCKS? JMP MT2 TAD (SBUFR DCA KBFAD TAD RADD CIA TAD (3 SNA CLA JMP MCK MT3, TAD (-37 DCA LOOP1 /YES - READ IN 37 MORE TAD (10 DTLB CLA JMS I (READ1 7637 MT4, CLA DTLB MT1, TAD KBFAD DCA GAP1 TAD M129 DCA GAP4 ISZ LOOP1 NOP JMP I MT MT2, TAD KBFAD /UPDATE POINTER TAD (201 DCA KBFAD JMP MT1 MCK, TAD RADD+1 CIA TAD (1241 SMA CLA JMP MT3 TAD RADD+1 CIA TAD (1300 JMS MULT 201 TAD MP1 DCA RDAMT JMS I (DIVIDE RDAMT, 0 3 CIA DCA LOOP1 TAD RDAMT DCA RDAMT1 TAD (10 DTLB JMS I (READ1 RDAMT1, 0 JMP MT4 /TWO'S COMPLEMENT SINGLE PRECISION MULTIPLY ROUTINE /RETURN HIGH ORDER PRODUCT IN AC, LOW IN MP1 MULT, 0 CLL SPA /TEST FOR NEGATIVE MULTIPLIER CMA CML IAC DCA MP1 /STORE MULTIPLIER DCA MP5 TAD I MULT SNA /TEST FOR ZERO MULTIPLICAND JMP MPSN-2 SPA /TEST FOR NEGATIVE MULTIPLICAND CMA CML IAC DCA MP2 /STORE MULTIPLICAND TAD THIR DCA MP3 MP4, TAD MP1 /MULTIPLY LOOP PROPER RAR DCA MP1 TAD MP5 SZL /TEST IF MULTIPLICAND SHOULD BE ADDED TAD MP2 CLL RAR DCA MP5 ISZ MP3 /TEST FOR END OF LOOP JMP MP4 TAD MP1 RAR MPSN, SZL JMP COMP DCA MP1 TAD MP5 MPZ, ISZ MULT /EXIT JMP I MULT COMP, CMA CLL IAC /COMPLEMENT PRODUCT DCA MP1 TAD MP5 CMA SZL IAC JMP MPZ THIR, 7764 /ELEVEN IN DECIMAL MP1, 0 MP5, 0 MP2, 0 MP3, 0 FNAME3, TEXT #CRT # *3200 READ1, 0 / READ TO FIELD 1 CLA TAD I READ1 / GET ARG DCA RDADD / SAVE IT ISZ READ1 / BUMP RETURN / / NOW ZAP THE DECTAPE MONITOR TO HANDLE READ TO F1 / TAD INT1 /GET INT PROC DCA I RDWT3 / STORE IT JMS I (READ / DO THE READ 0 RDADD, 0 SBUFR 0 JMS I (WAIT / WAIT TILL DONE CLA TAD (470 / OLD INT PROC DCA I RDWT3 / SAVE IT JMP I READ1 INT1, CLA TAD I (ERR SZA JMP I (RETRY CDF 10 TAD I (CA CDF 0 JMP I (475 RETRY=1706 ERR=556 CA=553 RDWT3, 547 $