C------MICRO CODE ASSEMBLER COMMON/A/ IB(512,8) COMMON/B/ LO(3) COMMON/C/ LO2(512,3) DIMENSION NO(17),LIT(17),IL(512,3),NTG(256,2) DATA NO/' 0 ',' 1 ',' 2 ',' 3 ',' 4 ',' 5 ', 2' 6 ',' 7 ',' 10 ',' 11 ',' 12 ',' 13 ',' 14 ',' 15 ', 3' 16 ',' 17 ',' 20 '/,LIT/' BNG1',' BNG2',' BNG3',' SKP1', 4' SKP2',' NOP ','XXXXX','XXXXX',' STR1',' STR2',' DEC1', 5' DEC2',' JMP1',' JMP2',' JMP3',' CLR ',' '/ N=19 NT=0 DO 1 I=1,N READ(1,2) LS,(IL(I,J),J=1,3) 2 FORMAT(5X,2A5,A1,A5) IF(LS.EQ.LIT(17)) GO TO 1 NT=NT+1 NTG(NT,1)=I-1 NTG(NT,2)=LS 1 CONTINUE TYPE 48,NT 48 FORMAT(/,1X,I4,' TAGGED INSTRUCTIONS') C------UPPER FOUR BITS DO 3 I=1,N DO 26 J=1,8 26 IB(I,J)=100 II=I-1 CALL DTO(II) IS=MOD(II,16) IF(IS) 34,35,34 35 LEV=LO(2) LOD=LEV+1 34 DO 4 J=1,16 K=J-1 IF(IL(I,1).EQ.LIT(J)) GO TO 5 4 CONTINUE GO TO 6 5 CALL DTB(K,I,0,K,4) C------LOWER FOUR BITS IF((K-5)*(K-15)) 7,8,7 8 L=0 GO TO 9 7 IF((K-13)*(K-14)) 10,11,10 10 DO 41 J=1,17 L=J-1 IF(IL(I,3).EQ.NO(J)) GO TO 25 41 CONTINUE GO TO 22 25 IF(IL(I,2).EQ.' ') GO TO 9 IF(K-12) 19,18,19 18 IF(IL(I,2).EQ.'+') L=II+L IF(IL(I,2).EQ.'-') L=II-L 9 CALL DTB(L,I,4,K,4) GO TO 32 C------SEARCH FOR TAG'S ABSOLUTE ADDRESS 22 IF((K-12)*(K-2)) 23,11,23 11 DO 12 J=1,NT JS=J IF(IL(I,3).EQ.NTG(J,2)) GO TO 13 12 CONTINUE GO TO 14 13 L=NTG(JS,1) CALL DTB(L,I,4,K,8) 32 IF(K-12) 3,33,3 C------TEST FOR JMP1 OUT OF BOUNDS 33 CALL DTO(L) IF((LO(2)-LEV)*(LO(2)-LOD)) 36,3,36 C------PRINT OUT ANY ERROR MESSAGES 36 DO 37 J=5,8 37 IB(I,J)=100 CALL DTO(II) TYPE 38,(LO(J),J=1,3),(IL(I,J),J=1,3) 38 FORMAT(//,1X,3I1,' TH JMP1 GOES OUT OF BOUNDS ',A5,A1,A5) GO TO 3 6 TYPE 15,(LO(J),J=1,3),IL(I,1) 15 FORMAT(//,1X,3I1,' TH MNEMONIC NOT RECOGNIZED ',A5) GO TO 3 14 TYPE 16, (LO(J),J=1,3),IL(I,3) 16 FORMAT(//,1X,3I1,' TH TAG NOT FOUND ',A5) GO TO 3 23 TYPE 24,(LO(J),J=1,3),IL(I,3) 24 FORMAT(//,1X,3I1,' TH LOWER BIT NOT RECOGNIZED ',A5) GO TO 3 19 TYPE 29,(LO(J),J=1,3),(IL(I,J),J=1,3) 29 FORMAT(//,1X,3I1,' TH INST. HAS A REL MOVE ',A5,A1,A5) 3 CONTINUE C------WRITE ASSEMBLED INSTRUCTIONS WRITE(5,21) 21 FORMAT(///,' OCTAL',T15,'INSTRUCTION',T34,'OCTAL', 2T47,'BINARY (HI - LOW)',/,' SEQ. #',T17,'MNEMONIC', 4T34,'REP',T45,'7 6 5 4 3 2 1 0') K=1 DO 20 I=1,N II=I-1 CALL DTO(II) CALL BTO(I) IS=MOD(II,16) IF(IS) 42,27,42 27 WRITE(5,28) 28 FORMAT(//) 42 LS=LIT(17) IF(NTG(K,1)-II) 20,47,20 47 LS=NTG(K,2) K=K+1 20 WRITE(5,17)(LO(J),J=1,3),LS,(IL(I,J),J=1,3), 2(LO2(I,J),J=1,3),(IB(I,J),J=1,8) 17 FORMAT(/,2X,3I1,4X,2A5,A1,A5,9X,3I1,5X,8(1X,I2)) C------PUNCH OCTAL REPRESENTATION GO TO 39 DO 30 I=1,N 30 PUNCH 31,(LO2(I,J),J=1,3) 31 FORMAT(3I1) 39 CONTINUE END