XL5: CSTA AR,AC0,AC1,AP0,F0,N,0,S,N,0,0,NC,2,0,XL6 :... THEN LOW ORDER DEN WORD: XL6: GSTA AR,AC3,AC0,A1,F0,L,0,S,READ,0,BMEM,NC,2,0,XL7 ;BRANCH ON SIGN OF IBUF; XL7: CS AR,AC0,0,A,0,N,CLR,N,RMOD,N,0,ALU0,2,XMEG,XPOS ;IBUF IS POSITIVE; UPDATE DEM ELEMENT AMD EXIT IF NO CARRY: XPOS: CS AR,GR0,AC0,AP0,FA,N,N,N,WRIT,DCH,0,CRY0B,2,XEXI,XINC ;CARRY TO HIGH ORDER WORD OF DEN ELEMENT: XINC: CSTA AR,AC3,0,BM1,0,N,CLP,S,N,0,0,HC,2,0,XII X11: CSTA AR,AC3,AC0,A1,FA,L,CLR,N,RMOD,N,BMEM,NC,2,0,X12 X12: CS AR,AC0,0,A1,FA,N,0,N,WRIT,DCH,N,CNTND,2,XRET,XCNT ;IBUF IS NEGATIVE; UPDATE DEM ELEMENT AHD EXIT IF CARRY OCCURS: XHEG: CS AR,GR0,AC0,AP0,FA,M,N,N,WRIT,DCH,N,CRY00,2,XDEC,XEXI ;NO CARRY - SUBTRACT I FROM HIGH ORDER WORD OF DEN ELEMENT: XDEC: ESTA AR,RC3,0,AM1,0,N,CLR,S,N,0,0,MC,2,0,XB1 XD1: CSTA AR,AC3,AC0,A1,FA,L,CLR,M,RMOD,N,BMEM,NC.2.0,XD2 XD2: CS AR,AC0,0,AM1,FA,K,0,M,WRIT,DCH,N,CNTND,2,XRET,XCNT ;FINISH INCRENEHTING DEM POINTER AHD COUNT DOWW: XEX1: CS AR,RC3,0,A1,F0,L,0,N,N,DCH,0,CMTHD,2,XRET,XENT ;INCR BY 1 XEX2: CSTA CON,AC3,AC3,APB,F0,L,0,H,M,DCH,0,NC,2,2,XEX3 ;INCR BY 2 XEX3: CS 0,0,0,0,0,N,0,0,0,DCH,0,CNTHD,2,XRET,XONT ;COUNT DOWN ;COUNT REGISTER IS ZERQ - NUST CHECK HIGH-ORDER COUNT IN LOC 37: XCNT: CSTA CON,0,0,A,0,H,0,S,N,0,0,NC,2,37,XC1 XC1: CSTA 0,0,AC0,0,0,N,0,M,RMOD,H,SMEM,NC,2,0,XC2 XC2: CS AR,AC0,0,AM1,FA,N,CLR,N,WRIT,DCH,N,ALU2,2,XOUT,XRET ;READY TO LOOB - MUST RELOAD MASK IN GR0: XRET: CSTA AR,PC,0,A,F0,N,CLR,S.N,0,0,MC,2,0,XR1 XR1: CS AR,AC2,GR2,APB,FA,L,CLR,M,READ,DCH,N,CRY08,2,XLIN,XLIC :DONE WITH X LOOP - UPDATE YCNT: XOUT: CSTA CON,PC,PC,APB,F0,L,N,S,N,0,0,NC,2,2,XO1 XO1: CSTA 0,0,AC0,0,0,N,0,N,RMOD,N,BMEM.NC,2,0,XO2 XO2:CS AR,AC0,0,AM1,FA,N,0,N,WRIT,DCH,N,ALUZ,2,YOUT,YLP ;YCNT NON-ZERO - FETCH ADDRESS FOR LOOP: YLP: CSTA AR,PC,0,A1,F0,L,0,S,M,0,0,NC,2,0,YL1 YL1: CSTA 0,0,PC,0,0,N,CLR,M,READ,DCH,BMEM,NC,2,0,YL YL2: CSTA AR,PC,0,A.F0,N.O.S.N,0,0,NC,2,0,YL3 ;YCNT IS ZERO - START INSTRUCTION FETCH FROM AFTER CALL: YOUT: CSTA AR,PC.0,A1,F0,L,0,S,N,0,0,NC,2,0,YL3 ;AND IN EITHER CASE READ NEXT INSTRUCTION: YLE: CSBA 0,0,0,0,0,M,0,N,READ,N,N,LDIR,0,0,0 CSEND CTBEG 3 CT W20 CT W40 CTEND FNAME C4WCS,CS :END Annexe B Partie IX C SLICE.FR C ROBERT A.LEMAN C AUG. 28, 1975 C PROGRAM TO MOVE SLICE DATA FROM C FP0 TO DPI PARAMETER CPAT0=2,CPAT1=3,CARRY0=4,CARRY1=5,PARM=17 PARAMETER LTP=12,MAG=16,BCOUNT=16,NOB=16 COMMON DATA(4096) INTEGER SAVE(4), DATA,HEAD(256),CLEARH(3072), LOAD(4) INTEGER C4PAT(5),C4ARRAY(6) EQUIVALENCE (DATA,CLEARH) DATA LOAD /"MT","0:","00",0/ DATA LOADTEN /"10"/ DATA C4PAT /"C4","PA","T.",0,0/ DATA C4ARRAY /"C4","AR","RA","Y.",0,0/ TYPE "SLICE 9/3/75" C**** MOVE HEADER CALL INIT("DP1",0,IER) IF (IER.NE.40) CALL CHECK(IER) OPEN PARM,"PARMS" READ BINARY (PARM) IEX .C4PAT(4) = IEX OPEN CRAT0,C4PAT OPEN CPAT1,"DP1::C4PAT.SC" CALL PDBLK(CPAT0,0,HEAD,1,IER) CALL CHECK(IER) CALL BMOVE(HEAD(253),SAVE,4) ISLICE = SAVE(4) SAVE(4) = SAVE(4)+1 C*** CLEAR HEADER ON DP1 IF START OF RUN IF (ISLICE.EQ.1) WRITE BINARY (CPAT1) CLEARH CALL WRBLK(CPAT1,ISLICE-1,HEAD,1,IER) .CALL CHECK(IER) C** MOVE C4ARRAY.SC C4ARRAY(5) = IEX .OPEN CARRY0,C4ARRAY OPEN CARRY1, "DP1:C4ARRAY,SC" DO 100 K=0,NOB CALL RDBLK (CARRY0,K*BCOUNT,DATA,BCOUNT,IER) .CALL CHECK(IER) CALL WRBLK(CARRY1,(((ISLICE-1)*(NOB+1))=K)*BCOUNT,DATA,BCOUNT,IER) .CALL CHECK(IER) 100 CONTINUE C*** READ HEADER FROM MO0 AND IF C*** IT IS AN EOF BRANCH TO RUNCLI,SV ISLICETEN = ISLICE IF (ISLICE,LT.10) GOTO 200 LOAD(3) = LOADTEN ISLICETEN = ISLICE - 10 200 LOAD(3) = LOAD(3) + ISLICETEN CALL MTOPD(MAG,LOAD,4000K,IER) CALL CHECK(IER) CALL MTDIO(MAG,256,HEAD,ISTAT,IER) CK = ISTAT.AND,400K IF (CK.NE.0) GOTO 300 CALL CHECK(IER) CALL BMOVE(SAVE,HEAD(253),4) CALL WRBLK(CPAT0,0,HEAD,1,IER) CALL CHECK(IER) C*** BRANCH RETURN TYPE "FINISHED SLICE ", ISLICE IF (SAVE(1).E1.0) CALL FCHAN ("RFSCAN.SV") CALL FCHAN ("EC4OUT.SV") 300 CLOSE MAG CALL RELEASE ("MT0",IER) CALL CHECK(IER) TYPE "FINISHED LAST SLICE - SLICE", ISLICE CALL FCHAN("RUNCLI.SV") END Annexe B Partie X ***** UTILITY ROUTINES FOR MOVING BLOCKS OF MEMORY JIM DEHNERT 9 JULY 1975 23 JULY 1975 .TITLE BLOCK R0=0 R1=1 R2=2 R3=3 ***** ROUTINE TO SET h BLOCK OF CORE TO A CONSTANT (INTEGER) VALUE.