132 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			132 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| #include "e.h"
 | |
| 
 | |
|  exa .1			; global Pascal variables
 | |
|  exp $PROC
 | |
|  exp $PROC1
 | |
|  exp $PROC2
 | |
|  exp $PROC3
 | |
|  exp $PROCH
 | |
|  exp $CLPASC1
 | |
|  exp $CLPASC2
 | |
|  exp $CLPASC5
 | |
|  exp $CLRDSTR
 | |
|  exp $CL68
 | |
|  exp $FUNC68
 | |
|  exp $CALLPASC
 | |
| 
 | |
|  pro $PROC,0
 | |
|  LFL SZADDR+SZADDR	; load environment, static link for procedure
 | |
|  LFL SZADDR		; load address of code
 | |
|  ret SZPROC
 | |
|  end 0
 | |
| 
 | |
|  pro $PROC1,0
 | |
|  LFL SZADDR+SZADDR
 | |
|  LFL SZADDR
 | |
|  ret SZPROC
 | |
|  end 0
 | |
| 
 | |
|  pro $PROC2,0
 | |
|  LFL SZADDR+SZADDR
 | |
|  LFL SZADDR
 | |
|  ret SZPROC
 | |
|  end 0
 | |
| 
 | |
|  pro $PROC3,0
 | |
|  LFL SZADDR+SZADDR
 | |
|  LFL SZADDR
 | |
|  ret SZPROC
 | |
|  end 0
 | |
| 
 | |
|  pro $PROCH,0
 | |
|  LFL SZADDR+SZADDR
 | |
|  LFL SZADDR
 | |
|  ret SZPROC
 | |
|  end 0
 | |
| 
 | |
|  pro $CLPASC1,SZWORD
 | |
|  loc PASCALSTAMP
 | |
|  stl -SZWORD
 | |
|  lal SZADDR				; load base address of params (source)
 | |
|  loc SZADDR+SZPROC
 | |
|  los SZWORD
 | |
|  cai
 | |
|  ret 0
 | |
|  end SZWORD
 | |
| 
 | |
|  pro $CLPASC2,SZWORD
 | |
|  loc PASCALSTAMP
 | |
|  stl -SZWORD				; set frame stamp as pascal
 | |
|  lal SZADDR				; load base address of params (source)
 | |
|  loc SZADDR+SZADDR+SZPROC
 | |
|  los SZWORD
 | |
|  cai					; call proc, params & static link set
 | |
|  ret 0
 | |
|  end SZWORD
 | |
| 
 | |
| #define P5PARAMSPACE SZADDR+SZADDR+SZWORD+SZWORD+SZADDR+SZPROC
 | |
| 
 | |
|  pro $CLPASC5,SZWORD
 | |
|  loc PASCALSTAMP
 | |
|  stl -SZWORD				; set frame stamp as pascal
 | |
|  lal SZADDR				; load base address of params (source)
 | |
|  loc P5PARAMSPACE
 | |
|  los SZWORD
 | |
|  cai
 | |
|  ret 0
 | |
|  end SZWORD
 | |
| 
 | |
| #define PRDSTRSPACE SZADDR+SZADDR+16+SZADDR+SZADDR+SZPROC
 | |
| 
 | |
|  pro $CLRDSTR,SZWORD
 | |
|  loc PASCALSTAMP
 | |
|  stl -SZWORD				; set frame stamp as pascal
 | |
|  lal SZADDR				; load base address of params (source)
 | |
|  loc PRDSTRSPACE
 | |
|  los SZWORD
 | |
|  cai
 | |
|  ret 0
 | |
|  end SZWORD
 | |
| 
 | |
|  pro $CL68,SZWORD
 | |
|  loc PASCALSTAMP
 | |
|  stl -SZWORD
 | |
|  LFL SZADDR				; OBJECTP parameter
 | |
|  LLC 0					; bitpattern
 | |
|  loc 1					; locrg
 | |
|  LFL SZADDR+SZADDR+SZADDR		; procbl
 | |
|  dup SZADDR
 | |
|  LFL SZADDR+SZADDR			; env
 | |
|  exg SZADDR
 | |
|  loi SZADDR				; XBASE
 | |
|  cai
 | |
|  ret 0
 | |
|  end SZWORD
 | |
| 
 | |
|  pro $FUNC68,SZWORD
 | |
|  loc PASCALSTAMP
 | |
|  stl -SZWORD
 | |
|  LFL SZADDR				; OBJECTP parameter
 | |
|  LLC 0					; bitpattern
 | |
|  loc 1					; locrg
 | |
|  LFL SZADDR+SZADDR+SZADDR		; procbl
 | |
|  dup SZADDR
 | |
|  LFL SZADDR+SZADDR			; env
 | |
|  exg SZADDR
 | |
|  loi SZADDR				; XBASE
 | |
|  cai
 | |
|  ret SZWORD
 | |
|  end SZWORD
 | |
| 
 | |
| 
 | |
|  pro $CALLPASC,SZWORD ; +SZADDR+SZWORD
 | |
|  loc PASCALSTAMP
 | |
|  stl -SZWORD
 | |
|  lal SZADDR+SZADDR+SZWORD+SZLONG        ; address of first (A68) parameter
 | |
|  loe .1+SZWORD+SZADDR			; PASCPARAMS
 | |
|  los SZWORD
 | |
|  lae .1+SZWORD+SZADDR+SZWORD		; address of PASCPROC
 | |
|  loi SZPROC				; PASCPROC
 | |
|  cai
 | |
|  ret 0
 | |
|  end SZWORD ; +SZADDR+SZWORD
 |