*** empty log message ***
This commit is contained in:
		
							parent
							
								
									d0268a4ec1
								
							
						
					
					
						commit
						22c95138aa
					
				
					 12 changed files with 4502 additions and 0 deletions
				
			
		
							
								
								
									
										48
									
								
								mach/pdp/int/Makefile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								mach/pdp/int/Makefile
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,48 @@ | |||
| INTS=em_t--- em_---- em_tf-- em_t-c- em_t--p | ||||
| b=../../../lib/pdp_int | ||||
| 
 | ||||
| all:	$(INTS) eminform em | ||||
| 
 | ||||
| em:	em.c | ||||
| 	cc -o em -I../../../h em.c | ||||
| 
 | ||||
| eminform:	eminform.s | ||||
| 	as eminform.s;ld -i -o eminform a.out -lc | ||||
| 
 | ||||
| em_t---:	t+ f- c- p- em_int.s | ||||
| 	as t+ f- c- p- em_int.s;ld -i -o em_t--- a.out -lc | ||||
| 
 | ||||
| em_----:	t- f- c- p- em_int.s | ||||
| 	as t- f- c- p- em_int.s;ld -i -o em_---- a.out -lc | ||||
| 
 | ||||
| em_tf--:	t+ f+ c- p- em_int.s | ||||
| 	as t+ f+ c- p- em_int.s;ld -i -o em_tf-- a.out -lc | ||||
| 
 | ||||
| em_t-c-:	t+ f- c+ p- em_int.s | ||||
| 	as t+ f- c+ p- em_int.s;ld -i -o em_t-c- a.out -lc | ||||
| 
 | ||||
| em_t--p:	t+ f- c- p+ em_int.s | ||||
| 	as t+ f- c- p+ em_int.s;ld -i -o em_t--p a.out -lc | ||||
| 
 | ||||
| install:	all | ||||
| 		-mkdir $b | ||||
| 		cp em_???? $b | ||||
| 		cp em eminform ../../../bin | ||||
| 
 | ||||
| cmp: 		all | ||||
| 		cmp em_t--- $b/em_t--- | ||||
| 		cmp em_---- $b/em_---- | ||||
| 		cmp em_tf-- $b/em_tf-- | ||||
| 		cmp em_t-c- $b/em_t-c- | ||||
| 		cmp em_t--p $b/em_t--p | ||||
| 		cmp em ../../../bin/em | ||||
| 		cmp eminform ../../../bin/eminform | ||||
| 
 | ||||
| clean: | ||||
| 		-rm -f *.o *.old a.out em eminform $(INTS) | ||||
| 
 | ||||
| opr: | ||||
| 		make pr | opr | ||||
| 
 | ||||
| pr: | ||||
| 		@pr em.c em_int.s eminform.s | ||||
							
								
								
									
										19
									
								
								mach/pdp/int/README
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								mach/pdp/int/README
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,19 @@ | |||
| In this directory is a complete interpreter for EM-code on a | ||||
| PDP 11, written in Unix assembly language. | ||||
| The interpreter is split up in 7 files, em.v1 up to em.v7. | ||||
| There exist assembler options .test .opfreq .flow .count .prof | ||||
| and .last. | ||||
| .test tests undefined integers, bad arrays etcetera | ||||
| .opfreq makes a table of the usage of othe em-opcodes | ||||
| .flow makes a table of the used lines | ||||
| .count makes a count table of the used lines | ||||
| .prof estimates the amount of time spent on each source line | ||||
| .last gives a table of the last executed lines and files | ||||
| The interpreter writes its runtime information on a file | ||||
| em_runinf, which is converted to human readable files | ||||
| em_last, em_opfreq, em_profile, em_flow and em_count by | ||||
| the program eminform, for which we also have an assembler | ||||
| source in this directory. | ||||
| Because the size of the interpreter just exceeds 8k, it is | ||||
| advisible to have either .prof or .test turned off on a machine | ||||
| without separate I and D when a large user program is running. | ||||
							
								
								
									
										1
									
								
								mach/pdp/int/c+
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								mach/pdp/int/c+
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| .count = 1 | ||||
							
								
								
									
										1
									
								
								mach/pdp/int/c-
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								mach/pdp/int/c-
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| .count = 0 | ||||
							
								
								
									
										3793
									
								
								mach/pdp/int/em_int.s
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3793
									
								
								mach/pdp/int/em_int.s
									
										
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										634
									
								
								mach/pdp/int/eminform.s
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										634
									
								
								mach/pdp/int/eminform.s
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,634 @@ | |||
| /  | ||||
| /  (c) copyright 1983 by the Vrije Universiteit, Amsterdam, The Netherlands. | ||||
| /  | ||||
| /           This product is part of the Amsterdam Compiler Kit. | ||||
| /  | ||||
| /  Permission to use, sell, duplicate or disclose this software must be | ||||
| /  obtained in writing. Requests for such permissions may be sent to | ||||
| /  | ||||
| /       Dr. Andrew S. Tanenbaum | ||||
| /       Wiskundig Seminarium | ||||
| /       Vrije Universiteit | ||||
| /       Postbox 7161 | ||||
| /       1007 MC Amsterdam | ||||
| /       The Netherlands | ||||
| /  | ||||
| /   | ||||
| /------------------------------------------------------------------------------ | ||||
| / | ||||
| 	indir	= 0 | ||||
| 	exit	= 1 | ||||
| 	fork	= 2 | ||||
| 	read	= 3 | ||||
| 	write	= 4 | ||||
| 	open	= 5 | ||||
| 	close	= 6 | ||||
| 	creat	= 8. | ||||
| 	unlink	= 10. | ||||
| 	break	= 17. | ||||
| 	alarm	= 27. | ||||
| 	pause	= 29. | ||||
| 	sleep	= 35. | ||||
| 	signal	= 48. | ||||
| 
 | ||||
| 	iot	=	4 | ||||
| /------------------------------------------------------------------------------ | ||||
| /	External references | ||||
| /------------------------------------------------------------------------------ | ||||
| 
 | ||||
| 	.globl	_end
 | ||||
| 
 | ||||
| / | ||||
| /------------------------------------------------------------------------------ | ||||
| /	Now the	real program starts | ||||
| /------------------------------------------------------------------------------ | ||||
| 
 | ||||
| startoff: | ||||
| 	mov	sp,memlim | ||||
| 	mov	$ldfail,r5 | ||||
| 	mov	$emfile,forward+2 | ||||
| 	sys	indir;forward
 | ||||
| 	jes	badruninf;
 | ||||
| 	mov	r0,saver0;
 | ||||
| 	mov	$rhfail,r5;
 | ||||
| 	sys	read;header;34.
 | ||||
| 	jes	badruninf;
 | ||||
| 	cmp	$34.,r0 | ||||
| 	jne	badruninf | ||||
| 	mov	$rtfail,r5 | ||||
| 	mov	$_end,loadstart | ||||
| 	mov	option,r1 | ||||
| 	bit	$17774,r1 | ||||
| 	bne	1f | ||||
| 	mov	tblmax,globmax | ||||
| 1: | ||||
| 	bit	$1,r1 | ||||
| 	beq	1f | ||||
| 	mov	saver0,r0 | ||||
| 	sys	read;lasttab;98.
 | ||||
| 	jes	badruninf;
 | ||||
| 
 | ||||
| 1:	bit	$2,r1 | ||||
| 	beq	1f | ||||
| 	mov	saver0,r0 | ||||
| 	sys	read;opfrb;512.
 | ||||
| 	jes	badruninf | ||||
| 	mov	saver0,r0 | ||||
| 	sys	read;opfra;512.
 | ||||
| 	jes	badruninf | ||||
| 	mov	saver0,r0 | ||||
| 	sys	read;opfrc;640.
 | ||||
| 	jes	badruninf | ||||
| 1:	bit	$4,r1 | ||||
| 	beq	1f | ||||
| 	mov	saver0,r0 | ||||
| 	sys	read;lcount;4
 | ||||
| 	jes	badruninf | ||||
| 1:	bit	$8.,r1 | ||||
| 	beq	1f | ||||
| 	mov	saver0,r0 | ||||
| 	sys	read;lflow;4
 | ||||
| 	jes	badruninf | ||||
| 1:	bit	$16.,r1 | ||||
| 	beq	1f | ||||
| 	mov	saver0,r0 | ||||
| 	sys	read;ltime;4
 | ||||
| 	jes	badruninf | ||||
| 1: | ||||
| 	mov	tblmax,r3 | ||||
| 	sub	pd,r3 | ||||
| 	sub	ml,r3 | ||||
| 	mov	$_end,sybreak+2 | ||||
| 	add	r3,sybreak+2;
 | ||||
| 	sys	indir;sybreak
 | ||||
| 	mov	r3,lblread+4 | ||||
| 	mov	$_end,lblread+2;
 | ||||
| 	mov	saver0,r0 | ||||
| 	sys	indir;lblread;
 | ||||
| 	jes	badruninf | ||||
| 	mov	saver0,r0 | ||||
| 	sys	close | ||||
| 	sys	unlink;emfile
 | ||||
| lbladj: | ||||
| 	add	$header,linused | ||||
| 	sub	header,linused | ||||
| 
 | ||||
| 	mov	pd,filext | ||||
| 	sub	loadstart,filext | ||||
| 	mov	filext,filarg | ||||
| 	add	ml,filarg | ||||
| 	sub	tblmax,filarg | ||||
| lbllast: | ||||
| 	bit	$1,option	/test for last | ||||
| 	beq	2f		/ no last table	jump | ||||
| 	sys	creat;emlast;666
 | ||||
| 	bcs	2f | ||||
| 	cmp	linused,$lasttab | ||||
| 	bhis	3f | ||||
| 	mov	$yetmsg,lblwri+2 | ||||
| 	mov	$40.,lblwri+4 | ||||
| 	sys	indir;lblwri
 | ||||
| 	br	2f | ||||
| 3:	mov	r0,saver0 | ||||
| 	cmp	linused-2,$-1 | ||||
| 	bne	6f | ||||
| 	mov	$linused-2,linused | ||||
| 	clr	linused-2 | ||||
| 6:	jsr	pc,slilast | ||||
| 	inc	r2 | ||||
| 	jsr	pc,nexttab | ||||
| 	tst	(r5) | ||||
| 	beq	3f | ||||
| 	sub	$2,linused | ||||
| 	cmp	eb,(r5) | ||||
| 	blo	3f | ||||
| 7:	cmp	r2,$lnend | ||||
| 	blt	1f | ||||
| 	jsr	pc,slnlast | ||||
| 1:	jsr	pc,lnrnxt | ||||
| 	bne	7b | ||||
| 3:	jsr	pc,sfllast | ||||
| 	bne	6b | ||||
| 	mov	saver0,r0 | ||||
| 	sys	close | ||||
| 2: | ||||
| 
 | ||||
| lblopfreq: | ||||
| 	bit	$2,option | ||||
| 	beq	9f | ||||
| 	sys	creat;emopf;666
 | ||||
| 	bcs	9f | ||||
| 	mov	r0,saver0 | ||||
| 	mov	$opcode,r3 | ||||
| 	mov	$104.,r4 | ||||
| 	mov	$counttab,r5 | ||||
| 0:	mov	$lnlast,r2 | ||||
| 	mov	$8.,r0 | ||||
| 2:	movb	(r3)+,(r2)+ | ||||
| 	sob	r0,2b | ||||
| 	add	$8,r2 | ||||
| 	mov	r2,-(sp) | ||||
| 	jsr	pc,ltoa | ||||
| 	mov	(sp)+,r2 | ||||
| 	add	$5,r2 | ||||
| 	mov	$8.,r0 | ||||
| 2:	movb	(r3)+,(r2)+ | ||||
| 	sob	r0,2b | ||||
| 	add	$8,r2 | ||||
| 	mov	r2,-(sp) | ||||
| 	jsr	pc,ltoa | ||||
| 	mov	(sp)+,r2 | ||||
| 	add	$5,r2 | ||||
| 	mov	$8.,r0 | ||||
| 2:	movb	(r3)+,(r2)+ | ||||
| 	sob	r0,2b | ||||
| 	add	$8,r2 | ||||
| 	mov	r2,-(sp) | ||||
| 	jsr	pc,ltoa | ||||
| 	mov	(sp)+,r2 | ||||
| 	add	$5,r2 | ||||
| 	mov	$8.,r0 | ||||
| 2:	movb	(r3)+,(r2)+ | ||||
| 	sob	r0,2b | ||||
| 	add	$8,r2 | ||||
| 	mov	r2,-(sp) | ||||
| 	jsr	pc,ltoa | ||||
| 	mov	(sp)+,r2 | ||||
| 	mov	r3,-(sp) | ||||
| 	jsr	pc,slnlast | ||||
| 	mov	(sp)+,r3 | ||||
| 	sob	r4,0b | ||||
| 	mov	saver0,r0 | ||||
| 	sys	close | ||||
| 9: | ||||
| lblcount: | ||||
| 	clr	filb | ||||
| 	bit	$4,option | ||||
| 	beq	9f | ||||
| 	sys	creat;emcount;666
 | ||||
| 	bcs	9f | ||||
| 	mov	r0,saver0 | ||||
| 	mov	lcount,r5 | ||||
| 	add	$4,r5 | ||||
| 	sub	filext,r5 | ||||
| 	jsr	pc,procrun | ||||
| 	mov	saver0,r0 | ||||
| 	sys	close | ||||
| 9: | ||||
| lblprof: | ||||
| 	bit	$16.,option | ||||
| 	beq	9f | ||||
| 	sys	creat;emprof;666
 | ||||
| 	bcs	9f | ||||
| 	mov	r0,saver0 | ||||
| 	mov	ltime,r5 | ||||
| 	sub	filext,r5 | ||||
| 	mov	$profmsg,lblwri+2 | ||||
| 	mov	$29,lblwri+4 | ||||
| 	mov	$profmsg+27,r2 | ||||
| 	jsr	pc,ltoa | ||||
| 	mov	saver0,r0 | ||||
| 	sys	indir;lblwri
 | ||||
| 	jsr	pc,procrun | ||||
| 	mov	saver0,r0 | ||||
| 	sys	close | ||||
| 9: | ||||
| lblflow: | ||||
| 	mov	$1,filb | ||||
| 	bit	$8.,option | ||||
| 	beq	9f | ||||
| 	sys	creat;emflow;666
 | ||||
| 	bcs	9f | ||||
| 	mov	lflow,r5 | ||||
| 	mov	$-1,flowsiz | ||||
| 	sub	filext,r5 | ||||
| 	jsr	pc,procrun | ||||
| 	mov	saver0,r0 | ||||
| 	sys	close | ||||
| 9: | ||||
| 	clr	r0 | ||||
| 	sys	exit | ||||
| 
 | ||||
| badruninf: | ||||
| 	mov	$0f,lblwri+2 | ||||
| 	mov	$21.,lblwri+4 | ||||
| 	mov	$2,r0 | ||||
| 	sys	indir;lblwri
 | ||||
| 	mov	r5,lblwri+2 | ||||
| 	mov	$23.,lblwri+4 | ||||
| 	mov	$2,r0 | ||||
| 	sys	indir;lblwri
 | ||||
| 	iot			/force core dump | ||||
| .data | ||||
| lblwri: | ||||
|         sys     write;0;0
 | ||||
| forward: | ||||
|         sys     open;0;0
 | ||||
| sybreak: | ||||
|         sys     break;0;
 | ||||
| lblread: | ||||
|         sys     read;0;0
 | ||||
| 0:      <em_runinf load error,\0> | ||||
| ldfail: < open runinf failed   \n\0> | ||||
| rhfail: < read header failed   \n\0> | ||||
| rtfail: < read tables failed   \n\0> | ||||
| msgto:  <to> | ||||
| emlast: <em_last\0> | ||||
| emcount:<em_count\0> | ||||
| emfile: <em_runinf\0> | ||||
| emopf:  <em_opfreq\0> | ||||
| emprof: <em_profile\0> | ||||
| emflow: <em_flow\0> | ||||
| yetmsg: <no line or file message processed yet \n\n\0> | ||||
| unknown:<with unknown filename\0> | ||||
| lilast: <\nlines               \0> | ||||
| lnlast: <                              > | ||||
|         <                              > | ||||
| lnend:  <                                  \0> | ||||
| fllast: <    of file                       > | ||||
|         <                                  \0> | ||||
| profmsg:<\ninitialization             \n\0> | ||||
| sep:    <\n\0> | ||||
| /---------------------------------------------------------------------------- | ||||
| opcode: | ||||
| <loc.0   loc.1   loc.2   loc.3   loc.4   loc.5   loc.6   loc.7   > | ||||
| <loc.8   loc.9   loc.10  loc.11  loc.12  loc.13  loc.14  loc.15  > | ||||
| <loc.16  loc.17  loc.18  loc.19  loc.20  loc.21  loc.22  loc.23  > | ||||
| <loc.24  loc.25  loc.26  loc.27  loc.28  loc.29  loc.30  loc.31  > | ||||
| <loc.32  loc.33  aar.1W  adf.s0  adi.1W  adi.2W  adp.l   adp.1   > | ||||
| <adp.2   adp.s0  adp.s_1 ads.1W  and.1W  asp.1W  asp.2W  asp.3W  > | ||||
| <asp.4W  asp.5W  asp.w0  beq.l   beq.s0  bge.s0  bgt.s0  ble.s0  > | ||||
| <blm.s0  blt.s0  bne.s0  bra.l   bra.s_1 bra.s_2 bra.s0  bra.s1  > | ||||
| <cal.1   cal.2   cal.3   cal.4   cal.5   cal.6   cal.7   cal.8   > | ||||
| <cal.9   cal.10  cal.11  cal.12  cal.13  cal.14  cal.15  cal.16  > | ||||
| <cal.17  cal.18  cal.19  cal.20  cal.21  cal.22  cal.23  cal.24  > | ||||
| <cal.25  cal.26  cal.27  cal.28  cal.s0  cff.z   cif.z   cii.z   > | ||||
| <cmf.s0  cmi.1W  cmi.2W  cmp.z   cms.s0  csa.1W  csb.1W  dec.z   > | ||||
| <dee.w0  del.w_1 dup.1W  dvf.s0  dvi.1W  fil.l   inc.z   ine.lw  > | ||||
| <ine.w0  inl._1W inl._2W inl._3W inl.w_1 inn.s0  ior.1W  ior.s0  > | ||||
| <lae.l   lae.w0  lae.w1  lae.w2  lae.w3  lae.w4  lae.w5  lae.w6  > | ||||
| 
 | ||||
| <lal.p   lal.n   lal.0   lal._1  lal.w0  lal.w_1 lal.w_2 lar.1W  > | ||||
| <ldc.0   lde.lw  lde.w0  ldl.0   ldl.w_1 lfr.1W  lfr.2W  lfr.s0  > | ||||
| <lil.w_1 lil.w0  lil.0   lil.1W  lin.l   lin.s0  lni.z   loc.l   > | ||||
| <loc._1  loc.s0  loc.s_1 loe.lw  loe.w0  loe.w1  loe.w2  loe.w3  > | ||||
| <loe.w4  lof.l   lof.1W  lof.2W  lof.3W  lof.4W  lof.s0  loi.l   > | ||||
| <loi.1   loi.1W  loi.2W  loi.3W  loi.4W  loi.s0  lol.pw  lol.nw  > | ||||
| <lol.0   lol.1W  lol.2W  lol.3W  lol._1W lol._2W lol._3W lol._4W > | ||||
| <lol._5W lol._6W lol._7W lol._8W lol.w0  lol.w_1 lxa.1   lxl.1   > | ||||
| <lxl.2   mlf.s0  mli.1W  mli.2W  rck.1W  ret.0   ret.1W  ret.s0  > | ||||
| <rmi.1W  sar.1W  sbf.s0  sbi.1W  sbi.2W  sdl.w_1 set.s0  sil.w_1 > | ||||
| <sil.w0  sli.1W  ste.lw  ste.w0  ste.w1  ste.w2  stf.l   stf.1W  > | ||||
| <stf.2W  stf.s0  sti.1   sti.1W  sti.2W  sti.3W  sti.4W  sti.s0  > | ||||
| <stl.pw  stl.nw  stl.0   stl.1W  stl._1W stl._2W stl._3W stl._4W > | ||||
| <stl._5W stl.w_1 teq.z   tgt.z   tlt.z   tne.z   zeq.l   zeq.s0  > | ||||
| <zeq.s1  zer.s0  zge.s0  zgt.s0  zle.s0  zlt.s0  zne.s0  zne.s_1 > | ||||
| <zre.lw  zre.w0  zrl._1W zrl._2W zrl.w_1 zrl.nw  escape1 escape2 > | ||||
| 
 | ||||
| <aar.l   aar.z   adf.l   adf.z   adi.l   adi.z   ads.l   ads.z   > | ||||
| <adu.l   adu.z   and.l   and.z   asp.lw  ass.l   ass.z   bge.l   > | ||||
| <bgt.l   ble.l   blm.l   bls.l   bls.z   blt.l   bne.l   cai.z   > | ||||
| <cal.l   cfi.z   cfu.z   ciu.z   cmf.l   cmf.z   cmi.l   cmi.z   > | ||||
| <cms.l   cms.z   cmu.l   cmu.z   com.l   com.z   csa.l   csa.z   > | ||||
| <csb.l   csb.z   cuf.z   cui.z   cuu.z   dee.lw  del.pw  del.nw  > | ||||
| <dup.l   dus.l   dus.z   dvf.l   dvf.z   dvi.l   dvi.z   dvu.l   > | ||||
| <dvu.z   fef.l   fef.z   fif.l   fif.z   inl.pw  inl.nw  inn.l   > | ||||
| <inn.z   ior.l   ior.z   lar.l   lar.z   ldc.l   ldf.l   ldl.pw  > | ||||
| <ldl.nw  lfr.l   lil.pw  lil.nw  lim.z   los.l   los.z   lor.s0  > | ||||
| <lpi.l   lxa.l   lxl.l   mlf.l   mlf.z   mli.l   mli.z   mlu.l   > | ||||
| <mlu.z   mon.z   ngf.l   ngf.z   ngi.l   ngi.z   nop.z   rck.l   > | ||||
| <rck.z   ret.l   rmi.l   rmi.z   rmu.l   rmu.z   rol.l   rol.z   > | ||||
| <ror.l   ror.z   rtt.z   sar.l   sar.z   sbf.l   sbf.z   sbi.l   > | ||||
| <sbi.z   sbs.l   sbs.z   sbu.l   sbu.z   sde.l   sdf.l   sdl.pw  > | ||||
| <sdl.nw  set.l   set.z   sig.z   sil.pw  sil.nw  sim.z   sli.l   > | ||||
| 
 | ||||
| <sli.z   slu.l   slu.z   sri.l   sri.z   sru.l   sru.z   sti.l   > | ||||
| <sts.l   sts.z   str.s0  tge.z   tle.z   trp.z   xor.l   xor.z   > | ||||
| <zer.l   zer.z   zge.l   zgt.l   zle.l   zlt.l   zne.l   zrf.l   > | ||||
| <zrf.z   zrl.pw  dch.z   exg.s0  exg.l   exg.z   lpb.z   gto.l   \0\0> | ||||
| 	.even | ||||
| 	.text | ||||
| /------------------------------------------------------------------------------ | ||||
| /	General	subroutines | ||||
| /------------------------------------------------------------------------------ | ||||
| 
 | ||||
| wrdoff:	movb	(r3)+,r0       /get first byte | ||||
| 	swab	r0		/put it	in high	byte | ||||
| 	clrb	r0		/clear low byte	of r0 | ||||
| 	bisb	(r3)+,r0       /"or" second byte in | ||||
| 	rts	pc		/done | ||||
| 
 | ||||
| /------------------------------------------------------------------------------ | ||||
| 
 | ||||
| 
 | ||||
| nexttab: mov	linused,r5;
 | ||||
| 	add	$2,r5		/ increment lasttab | ||||
| 	cmp	r5,$linused	/ top of table reached? | ||||
| 	blo	1f | ||||
| 	sub	$96.,r5 | ||||
| 1:	mov	r5,linused | ||||
| 	rts	pc | ||||
| 
 | ||||
| slilast: mov	$lnlast,r2 | ||||
| 	mov	$6,r0 | ||||
| 	mov	$lilast,r3 | ||||
| 2:	movb	(r3)+,(r2)+ | ||||
| 	sob	r0,2b | ||||
| 	rts	pc | ||||
| 
 | ||||
| slnlast: mov	$lnlast,lblwri+2 | ||||
| 	mov	r2,r3 | ||||
| 	sub	$lnlast,r3 | ||||
| 	beq	3f | ||||
| 	inc	r3 | ||||
| 	movb	sep,(r2) | ||||
| 1:	mov	r3,lblwri+4 | ||||
| 	mov	saver0,r0 | ||||
| 	sys	indir; lblwri
 | ||||
| 	mov	$lnlast,r2 | ||||
| 2:	movb	$' ,(r2)+ | ||||
| 	sob	r3,2b | ||||
| 3:	mov	$lnlast,r2 | ||||
| 	rts	pc | ||||
| 
 | ||||
| lnrnxt:	jsr	pc,nexttab | ||||
| 	tst	(r5) | ||||
| 	ble	0f | ||||
| 	mov	(r5),r1 | ||||
| 	clr	(r5) | ||||
| 	add	$6,r2 | ||||
| 	mov	r2,r0 | ||||
| 	jsr	pc,itoa | ||||
| 0:	rts	pc | ||||
| 
 | ||||
| sfllast:jsr	pc,nexttab | ||||
| 	tst	(r5) | ||||
| 	bne	0f | ||||
| 	clr	linused | ||||
| 	mov	eb,-(sp) | ||||
| 	sub	filext,(sp) | ||||
| 	add	$4,(sp) | ||||
| 	mov	*(sp),(sp) | ||||
| 	mov	(sp)+,(r5) | ||||
| 0:	jsr	pc,slnlast | ||||
| 	jsr	pc,filadj | ||||
| 	mov	$14.,r3 | ||||
| 	mov	$fllast+14.,r2 | ||||
| 	mov	(r5),r0 | ||||
| 3:	inc	r3 | ||||
| 	movb	(r0)+,(r2)+ | ||||
| 	bne	3b | ||||
| 	movb	sep,-(r2) | ||||
| 	mov	$fllast,lblwri+2 | ||||
| 	mov	r3,lblwri+4 | ||||
| 	mov	saver0,r0 | ||||
| 	sys	indir;lblwri
 | ||||
| 	mov	$fllast+14.,r2 | ||||
| 	sub	$10.,r3 | ||||
| 2:	movb	$' ,(r2)+ | ||||
| 	sob	r3,2b | ||||
| 	clr	(r5) | ||||
| 	tst	linused | ||||
| 	beq	2f | ||||
| 	jsr	pc,slilast | ||||
| 2:	rts	pc | ||||
| 
 | ||||
| filadj: | ||||
| 	cmp	ml,(r5) | ||||
| 	bhi	8f | ||||
| 	sub	filarg,(r5) | ||||
| 	br	7f | ||||
| 8:	cmp	eb,(r5) | ||||
| 	bhi	7f | ||||
| 	sub	filext,(r5) | ||||
| 7:	rts	pc | ||||
| 
 | ||||
| procrun: | ||||
| 	mov	firstp,r4 | ||||
| 	sub	filext,r4 | ||||
| 0: | ||||
| 	tst	4(r4) | ||||
| 	beq	8f | ||||
| 	jsr	pc,msgfile | ||||
| 	mov	r4,-(sp) | ||||
| 	mov	countsiz,r4 | ||||
| 7:	cmp	r2,$lnend+10 | ||||
| 	blo	6f | ||||
| 	jsr	pc,slnlast | ||||
| 	mov	$lnlast,r2 | ||||
| 6:	tst	filb | ||||
| 	bne	3f | ||||
| 	add	$11.,r2 | ||||
| 	mov	r2,-(sp) | ||||
| 	jsr	pc,ltoa | ||||
| 	mov	(sp)+,r2 | ||||
| 	br	4f | ||||
| 3: | ||||
| 	jsr	pc,bittoa | ||||
| 	add	$4,r2 | ||||
| 4:	sob	r4,7b | ||||
| 	jsr	pc,slnlast | ||||
| 	mov	(sp)+,r4 | ||||
| 8:	mov	8.(r4),r4 | ||||
| 	beq	8f | ||||
| 	sub	filext,r4 | ||||
| 	br	0b | ||||
| 	mov	r0,saver0 | ||||
| 	sys	write;sep;1
 | ||||
| 8:	rts	pc | ||||
| 
 | ||||
| 
 | ||||
| msgfile: | ||||
| 	jsr	pc,slilast | ||||
| 	add	$6,r2 | ||||
| 	mov	6(r4),r1 | ||||
| 	mov	r2,r0 | ||||
| 	jsr	pc,itoa | ||||
| 	add	$4,r2 | ||||
| 	movb	 msgto,(r2)+ | ||||
| 	movb	msgto+1,(r2)+ | ||||
| 	add	$6,r2 | ||||
| 	mov	8.(r4),r1 | ||||
| 3:	bne	1f | ||||
| 	mov	maxcount,r1 | ||||
| 	br	2f | ||||
| 1:	sub	filext,r1 | ||||
| 	tst	4(r1) | ||||
| 	beq	1f | ||||
| 	mov	4(r1),r1 | ||||
| 	br	2f | ||||
| 1:	mov	8.(r1),r1 | ||||
| 	br	3b | ||||
| 2:	sub	4(r4),r1 | ||||
| 	mov	r1,countsiz | ||||
| 	dec	r1		/ is this a bug? | ||||
| 	add	6(r4),r1 | ||||
| 	mov	r2,r0 | ||||
| 	jsr	pc,itoa | ||||
| 	mov	$fllast,r3 | ||||
| 	mov	$14,r1 | ||||
| 2:	movb	(r3)+,(r2)+ | ||||
| 	sob	r1,2b | ||||
| 	mov	10.(r4),r3 | ||||
| 	bne	6f | ||||
| 	mov	$unknown,r3 | ||||
| 	br	5f | ||||
| 6:	cmp	ml,r3 | ||||
| 	bhi	4f | ||||
| 	sub	filarg,r3 | ||||
| 	br	5f | ||||
| 4:	cmp	eb,r3 | ||||
| 	bhi	5f | ||||
| 	sub	filext,r3 | ||||
| 5: | ||||
| lblmsgf: | ||||
| 2:	movb	(r3)+,(r2)+ | ||||
| 	bne	2b | ||||
| 	jsr	pc,slnlast | ||||
| 	rts	pc | ||||
| 
 | ||||
| itoa: | ||||
| 
 | ||||
| 	mov	r5,-(sp) | ||||
| 	mov	r0,r5 | ||||
| 1:	clr	r0 | ||||
| 	div	$10.,r0 | ||||
| 	add	$'0,r1 | ||||
| 	movb	r1,-(r5) | ||||
| 	mov	r0,r1 | ||||
| 	bne	1b | ||||
| 	mov	r5,r0 | ||||
| 	mov	(sp)+,r5 | ||||
| 	rts	pc | ||||
| 
 | ||||
| 	rts	pc | ||||
| ltoa: | ||||
| 0:	mov	(r5),r1 | ||||
| 	clr	r0 | ||||
| 	div	$10.,r0 | ||||
| 	mov	r0,(r5) | ||||
| 	swab	r1 | ||||
| 	clr	r0 | ||||
| 	bisb	3(r5),r1 | ||||
| 	div	$10.,r0 | ||||
| 	movb	r0,3(r5) | ||||
| 	clr	r0 | ||||
| 	swab	r1 | ||||
| 	bisb	2(r5),r1 | ||||
| 	div	$10.,r0 | ||||
| 	add	$'0,r1 | ||||
| 	movb	r1,-(r2) | ||||
| 	movb	r0,2(r5) | ||||
| 	bne	0b | ||||
| 	tst	(r5) | ||||
| 	bne	0b | ||||
| 	add	$4,r5 | ||||
| 	rts	pc | ||||
| 
 | ||||
| bittoa: | ||||
| 	mov	(r5),r1 | ||||
| 	mov	flowsiz,r0 | ||||
| 	ash	r0,r1 | ||||
| 	bit	$1,r1 | ||||
| 	beq	0f | ||||
| 	movb	$'1,(r2) | ||||
| 	br	1f | ||||
| 0:	movb	$'0,(r2) | ||||
| 1:	dec	r0 | ||||
| 	cmp	$-16.,r0 | ||||
| 	beq	2f | ||||
| 	mov	r0,flowsiz | ||||
| 	br	3f | ||||
| 2:	clr	flowsiz | ||||
| 	add	$2,r5 | ||||
| 3:	rts	pc | ||||
| 
 | ||||
| /------------------------------------------------------------------------------ | ||||
| /	Leftover data | ||||
| /------------------------------------------------------------------------------ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 	.bss | ||||
| filb:	.=.+2 | ||||
| loadstart:	.=.+2 | ||||
| saver0:		.=.+2 | ||||
| filarg:		.=.+2 | ||||
| filext:		.=.+2 | ||||
| memlim:		.=.+2 | ||||
| header: | ||||
| bstrt:	txtsiz:	.=.+2 | ||||
| bend:	ndatad:	.=.+2 | ||||
| 	nprocs:	.=.+2 | ||||
| option:	entry.:	.=.+2 | ||||
| 	nlines:	.=.+2 | ||||
| 	szdata:	.=.+2 | ||||
| 	firstp:	.=.+2 | ||||
| 	maxcount: .=.+2 | ||||
| argc:	.=.+2 | ||||
| argv:	.=.+2 | ||||
| environ: | ||||
| 	.=.+2 | ||||
| pb:	.=.+2 | ||||
| pd:	.=.+2 | ||||
| eb:	.=.+2 | ||||
| globmax: .=.+2 | ||||
| tblmax:	.=.+2 | ||||
| ml:	.=.+2 | ||||
| lasttab:.=.+96.	       / 16 descriptors	of integers + index at the end | ||||
| linused:.=.+2 | ||||
| 
 | ||||
| counttab: | ||||
| opfra:	.=.+512. | ||||
| opfrb:	.=.+512. | ||||
| opfrc:	.=.+640. | ||||
| 
 | ||||
| lcount:	.=.+2 | ||||
| countsiz:.=.+2 | ||||
| 
 | ||||
| lflow:	.=.+2 | ||||
| flowsiz:.=.+2 | ||||
| 
 | ||||
| ltime:	.=.+2 | ||||
| profsiz:.=.+2 | ||||
							
								
								
									
										1
									
								
								mach/pdp/int/f+
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								mach/pdp/int/f+
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| .flow = 1 | ||||
							
								
								
									
										1
									
								
								mach/pdp/int/f-
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								mach/pdp/int/f-
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| .flow = 0 | ||||
							
								
								
									
										1
									
								
								mach/pdp/int/p+
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								mach/pdp/int/p+
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| .prof = 1 | ||||
							
								
								
									
										1
									
								
								mach/pdp/int/p-
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								mach/pdp/int/p-
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| .prof = 0 | ||||
							
								
								
									
										1
									
								
								mach/pdp/int/t+
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								mach/pdp/int/t+
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| .test = 1 | ||||
							
								
								
									
										1
									
								
								mach/pdp/int/t-
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								mach/pdp/int/t-
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| .test = 0 | ||||
		Loading…
	
	Add table
		
		Reference in a new issue