--- /dev/null
+define newline
+ call (void)scm_newline (scm_current_error_port ())
+end
+
+define gdisplay
+ call (void)scm_display ($arg0, scm_current_error_port ())
+ newline
+end
+
+define gwrite
+ call (void)scm_write ($arg0, scm_current_error_port ())
+ newline
+end
+
+define sputs
+ call (void)scm_puts ($arg0, scm_current_error_port ())
+end
+
+define gslot
+ print ((SCM**)$arg0)[1][$arg1]
+end
+
+define pslot
+ gslot $arg0 $arg1
+ gwrite $
+end
+
+define lforeach
+ set $l=$arg0
+ while $l != 0x404
+ set $x=scm_car($l)
+ $arg1 $x
+ set $l = scm_cdr($l)
+ end
+end
+
+define modsum
+ modname $arg0
+ gslot $arg0 1
+ set $uses=$
+ output "uses:\n"
+ lforeach $uses modname
+end
+
+define moduses
+ pslot $arg0 1
+end
+
+define modname
+ pslot $arg0 5
+end
+
+define modkind
+ pslot $arg0 6
+end
+
+define car
+ call scm_car ($arg0)
+end
+
+define cdr
+ call scm_cdr ($arg0)
+end
+
+define smobwordtox
+ set $x=((SCM*)$arg0)[$arg1]
+end
+
+define smobdatatox
+ smobwordtox $arg0 1
+end
+
+define program
+ smobdatatox $arg0
+ p *(struct scm_program*)$x
+end
+
+define proglocals
+ set $i=bp->nlocs
+ while $i > 0
+ set $i=$i-1
+ gwrite fp[bp->nargs+$i]
+ end
+end
+
+define progstack
+ set $x=sp
+ while $x > stack_base
+ gwrite *$x
+ set $x=$x-1
+ end
+end
+
+define tc16
+ p ((scm_t_bits)$arg0) & 0xffff
+end
+
+define smobdescriptor
+ p scm_smobs[0xff & (((scm_t_bits)$arg0) >> 8)]
+end
+
+define vmstack
+ set $vmsp=sp
+ set $vmstack_base=stack_base
+ set $vmfp=fp
+ set $vmbp=bp
+ set $vmframe=0
+ while $vmsp > vp->stack_base
+ set $orig_vmsp=$vmsp
+ while $vmsp > $vmstack_base
+ output $orig_vmsp - $vmsp
+ sputs "\t"
+ output $vmsp
+ sputs "\t"
+ gwrite *$vmsp
+ set $vmsp=$vmsp-1
+ end
+ newline
+ sputs "Frame "
+ output $vmframe
+ newline
+ sputs "ra:\t"
+ output $vmsp
+ sputs "\t"
+ output (SCM*)*$vmsp
+ set $vmsp=$vmsp-1
+ newline
+ sputs "mvra:\t"
+ output $vmsp
+ sputs "\t"
+ output (SCM*)*$vmsp
+ set $vmsp=$vmsp-1
+ newline
+ sputs "dl:\t"
+ output $vmsp
+ sputs "\t"
+ set $vmdl=(SCM*)(*$vmsp)
+ output $vmdl
+ newline
+ set $vmsp=$vmsp-1
+ sputs "hl:\t"
+ output $vmsp
+ sputs "\t"
+ gwrite *$vmsp
+ set $vmsp=$vmsp-1
+ sputs "el:\t"
+ output $vmsp
+ sputs "\t"
+ gwrite *$vmsp
+ set $vmsp=$vmsp-1
+ set $vmnlocs=(int)$vmbp->nlocs
+ while $vmnlocs > 0
+ sputs "loc #"
+ output $vmnlocs
+ sputs ":\t"
+ output $vmsp
+ sputs "\t"
+ gwrite *$vmsp
+ set $vmsp=$vmsp-1
+ set $vmnlocs=$vmnlocs-1
+ end
+ set $vmnargs=(int)$vmbp->nargs
+ while $vmnargs > 0
+ sputs "arg #"
+ output $vmnargs
+ sputs ":\t"
+ output $vmsp
+ sputs "\t"
+ gwrite *$vmsp
+ set $vmsp=$vmsp-1
+ set $vmnargs=$vmnargs-1
+ end
+ sputs "prog:\t"
+ output $vmsp
+ sputs "\t"
+ gwrite *$vmsp
+ set $vmsp=$vmsp-1
+ newline
+ if !$vmdl
+ loop_break
+ end
+ set $vmfp=$vmdl
+ set $vmbp=(struct scm_program*)(((SCM*)($vmfp[-1]))[1])
+ set $vmstack_base=$vmfp+$vmbp->nargs+$vmbp->nlocs+4
+ set $vmframe=$vmframe+1
+ newline
+ end
+end