77 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| ! (c) copyright 1984 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | |
| ! Explicit permission is hereby granted to universities to use or duplicate
 | |
| ! this program for educational or research purposes.  All other use or dup-
 | |
| ! lication  by universities,  and all use or duplication by other organiza-
 | |
| ! tions is expressly prohibited unless written permission has been obtained
 | |
| ! from the Vrije Universiteit. Requests for such permissions may be sent to
 | |
| 
 | |
| !      Dr. Andrew S. Tanenbaum
 | |
| !      Wiskundig Seminarium
 | |
| !      Vrije Universiteit
 | |
| !      Postbox 7161
 | |
| !      1007 MC Amsterdam
 | |
| !      The Netherlands
 | |
| 
 | |
| ! Organizations wishing to modify part of this software for subsequent sale
 | |
| ! must  explicitly  apply  for  permission.  The exact arrangements will be
 | |
| ! worked out on a case by case basis, but at a minimum will require the or-
 | |
| ! ganization to include the following notice in all software and documenta-
 | |
| ! tion based on our work:
 | |
| 
 | |
| !	    This product is based on the Pascal  system  developed  by
 | |
| !      Andrew  S.  Tanenbaum, Johan W. Stevenson and Hans van Staveren
 | |
| !      of the Vrije Universiteit, Amsterdam, The Netherlands.
 | |
| !
 | |
| !=========================================================================
 | |
| 
 | |
| ! This is an interpreter for EM programs with no virtual memory for the
 | |
| ! the PMDS-II . This interpreter is adapted from an interpreter which was
 | |
| ! made for the pdp11 by Evert Wattel and Hans van Staveren . The present
 | |
| ! version is made by Freek van Schagen
 | |
| !		     Vrije Universiteit
 | |
| !		     Amsterdam.
 | |
| 
 | |
| 
 | |
| !-------------------------------------------------------------------------
 | |
| 
 | |
| ! The program requires preprocessing by the C-preprocessor . There are
 | |
| ! several options :
 | |
| !	lword:  4byte word size in stead of 2 byte word size ;
 | |
| !	test:   checking for undefined variables , nil pointers
 | |
| !		array indices , overflow , etc ;
 | |
| !	last:	generation of a file with the last 16 lines executed ;
 | |
| !	count:	generation of a file with a flow count ;
 | |
| !	flow:	generation of a file with a flow bitmap ;
 | |
| !	prof:	generation of a file with a runtime profile ;
 | |
| !	opfreq:	generation of a file with a frequency count per opcode.
 | |
| 
 | |
| !--------------------------------------------------------------------------
 | |
| 
 | |
| ! Memory layout:
 | |
| 
 | |
| !  --------------------------------------------------------------------------
 | |
| !  |		|	|     |		|	|	|	|	|   |
 | |
| !  |	1	|   2	|  3  |	   4	|   5	|   6	|   	|   7	| 8 |
 | |
| !  |		|	|     |		|	|	|	|	|   |
 | |
| !  --------------------------------------------------------------------------
 | |
| 
 | |
| !	1:	Interpreter text+data+bss.
 | |
| !	2:	EM text.
 | |
| !	3:	EM procedure descriptors.
 | |
| !	4:	EM global data area.
 | |
| !	5:	tables for flow , count , profile.
 | |
| !	6:	EM heap area.
 | |
| !	7:	EM local data and stack.
 | |
| !	8:	Arguments to the interpreter .
 | |
| 
 | |
| 
 | |
| !REGISTER USE
 | |
| !	pc	programcounter
 | |
| !	a7=sp	stackpointer		d7	if lword: 1 , if not lword: 0
 | |
| !	a6	external base= eb	d6	0
 | |
| !	a5	scratch			d5	scratch
 | |
| !	a4	address of loop		d4	scratch
 | |
| !	a3	EM programcounter	d3	scratch
 | |
| !	a2	local base =lb		d2	scratch
 | |
| !	a1	address of return area	d1	scratch
 | |
| !	a0	scratch			d0	opcode byte and scratch
 |