File MICRO.F4

Directory of image this file is from
This file as a plain text file

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



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search