79 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 	  subttl  Structure definitions
 | ||
| 	  page
 | ||
| 
 | ||
| ; Data structures in the child's space
 | ||
| 
 | ||
| ; File block
 | ||
| file_block struc
 | ||
| fb_id	  dw	  ?		   ;ID
 | ||
| fb_flags  dw	  ?		   ;flags
 | ||
| fb_lut	  dw	  ?,?		   ;lookup table@ (far)
 | ||
| fb_pb	  dw	  ?,?		   ;parameter block@ (far)
 | ||
| fb_reserved dw	  8 dup (?)	   ;reserved
 | ||
| file_block ends
 | ||
| ;
 | ||
| fb_dummy       equ  fb_reserved	   ;dummy for now
 | ||
| fb_sysint_addr equ  fb_reserved+2  ;system code (far @ of entry routine)
 | ||
| 
 | ||
| ; Parameter block
 | ||
| parm_block struc
 | ||
| pb_select      dw ?		   ;lookup table entry maps to number
 | ||
| pb_ss	       dw ?		   ;special services
 | ||
| pb_ss_args     dw 8 dup (?)	   ;special service arguments
 | ||
| pb_reserved    dw 8 dup (?)	   ;reserved
 | ||
| pb_rvtype      dw ?		   ;return value type
 | ||
| pb_rv	       dw 4 dup (?)	   ;return value
 | ||
| pb_args        dw ?		   ;beginning of passed parameters
 | ||
| parm_block ends
 | ||
| 
 | ||
| ; Local structures
 | ||
| 
 | ||
| ; The context we will remember for parent or child
 | ||
| state	  struc
 | ||
| st_ds	  dw	  0
 | ||
| st_es	  dw	  0
 | ||
| st_ss	  dw	  0
 | ||
| st_sp	  dw	  0
 | ||
| st_bp	  dw	  0
 | ||
| state	  ends
 | ||
| 
 | ||
| ; The child's stack at the point it called us
 | ||
| cstack	  struc
 | ||
| cs_ret	  dw	  0,0		   ;far return address
 | ||
| cs_len	  dw	  0		   ;child's length
 | ||
| cs_psp	  dw	  0		   ;child's PSP
 | ||
| cstack	  ends
 | ||
| 
 | ||
| ; String search temporary structure
 | ||
| search_struc struc
 | ||
| srch_exe   dw	  0		   ;# of child being tested
 | ||
| srch_dptr  dw	  0,0		   ;seg:offset of child's string
 | ||
| srch_sptr  dw	  0,0		   ;seg:offset of parent's string
 | ||
| srch_slen  dw	  0		   ;#chars in Scheme string
 | ||
| search_struc ends
 | ||
| 
 | ||
| ; Swap structure
 | ||
| swap_struc struc
 | ||
| sw_reg	  dw	  0		   ;VM register containing this argument
 | ||
| sw_offset dw	  0		   ;argument's final location (after
 | ||
| 				   ;packing, etc) in parm block
 | ||
| swap_struc ends
 | ||
| 
 | ||
| ; Information needed during one xesc call
 | ||
| xesc_struc struc
 | ||
| xs_rvptr  dw	  0,0		   ;return value@ (far)
 | ||
| xs_args   dw	  0,0		   ;first arg@ (far)
 | ||
| xs_local  dw	  0,0		   ;work area@ (far)
 | ||
| xs_dest   dw	  0,0		   ;copy data to this dest@ (far)
 | ||
| xs_pc	  dw	  0,0		   ;bytecode@ into xesc instruction (far)
 | ||
| xs_select dw	  0		   ;name converted to this number
 | ||
| xs_flags  dw	  0		   ;flags
 | ||
| xs_nargs  dw	  0		   ;actual #args in current call
 | ||
| xs_rvtype dw	  0		   ;return value type
 | ||
| xs_rvreg  dw	  0		   ;return value goes into this VM register
 | ||
| xs_pb_segment dw  0		   ;segment address of parm block
 | ||
| C_fn	  dw	  ?		   ;used during far calls to our C routines
 | ||
| C_retadr  dw	  ?,?
 | ||
| xesc_struc ends
 | ||
| 
 | ||
|  |