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
|
|||
|
|
|||
|
|