// dvec.c// outgoing externalsexternal	[// 	Dvec	DefaultArgs1	]// incoming externalsexternal	[	FrameSize; CallersFrame; Usc; errhlt	]manifest endCode=#335// let Dvec(caller, newVecs, nil, nil, nil, nil, nil, nil,//  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,//  nil; numargs na)=valof [////	let myArgs=lv caller//	let cf=CallersFrame()//	let cfs=FrameSize(caller)//	let top=cf+cfs////	let length=0//	let i=0//	while i ls na-1 do [//		i=i+1//		if myArgs!i eq 0 then break//		length=length+rv myArgs!i+1//		rv myArgs!i=top-length//		]////	while i ls na-1 do [//		i=i+1//		let t=rv myArgs!i//		if t ge cf & t ls top then rv myArgs!i=t-length//		]////	let newCf=cf-length//	if Usc(newCf, rv endCode) le 0 then errhlt("Stack overflow")//// BMOVE(cf, newCf, cfs-1)// resultis newCf+cfs//	let DoMove=table [//	#35003	// lda 3 extraArgs,2//	#131400	// inc 1 2//	#173000	// add 3 2//	#61005	// blt//	#121400	// inc 1 0	return address of first new word//	#35001	// lda 3 savedPC,2//	#1401	// jmp 1,3//	]////	DoMove(cf-1, newCf+cfs-1, -cfs)//	]let DefaultArgs1(lvNa, base, defaultValue, nil, nil, nil, nil,  nil, nil, nil, nil, nil; numargs na) be [	if na ls 2 then base=0	let defaultOnZero=false	if base ls 0 then [ defaultOnZero=true; base=-base ]	let dvVec=lv defaultValue-base	let actualNumDVs=na-3+base	let defaultDV=(na ls 3 ? 0, dvVec!actualNumDVs)	let callersFormals=CallersFrame()+4	if rv lvNa ls base then errhlt("Too few arguments")	for i=base to (lvNa-callersFormals-1) do	  if i ge rv lvNa % (defaultOnZero &	   callersFormals!i eq 0) then		callersFormals!i=(i le actualNumDVs ?		  dvVec!i, defaultDV)	](2293)