%%HP: T(3)A(D)F(.);
"::
 CK1NoBlame
 CK&DISPATCH0  ( don't strip tags )
 # 7F	( Code-object type )
 ::
  DUP OSIZE TWENTYFOUR #- SWAP
  CODE
	A=DAT1	A
	A=A+CON A,16
	A=A+CON A,8
	DAT1=A	A
	GOVLNG	=Loop
ENDCODE
  DUP OSIZE ROT #<> IT SETIVLERR  ( weed out bad Code objects )
 ;
 ZERO  ( non-Code objects go here )
 CODE
	GOSBVL	=SAVPTR
	A=DAT1	A		      A:[A]: @ OB on Level 1
	R1=A.F	A
	D0=A			      D0: Points to Beginning of OB
	GOSBVL	=SKIPOB 	      D0: Points to End of OB
	CD0EX
	A=R1.F	A		      A:[A]: @ Beginning of OB
	C=C-A	A		      C:[A]: Size of OB in nybbles
	R2=C.F	A
	LA(5)	14
	C=C+A	A		      C:[A]: Size of OB + 14 nybbles for =DOCODE, length field, and Code instr.
	GOSBVL	=MAKE$N
	C=DAT1	A		      C:[A]: @ of Level 1
	D0=C			      D0: @ of OB Level 1
	C=R0.F	A		      C:[A]: @ of String made by =MAKE$N
	D1=C
	LC(5)	=DOCODE
	DAT1=C	A		      Changing string to code object
	D1=D1+	10
	LCHEX	C80890F8184B18	      Instr to Execute embedded OB
	DAT1=C	14
	D1=D1+	14		      Move over 14 nybbles to begin emedding OB
	C=R2.F	A		      C:[A]: Size of OB in nybbles
	GOSBVL	=MOVEDOWN	      Copy C.A nybbles from D0 to D1
	GOSBVL	=GETPTR
	D1=D1+	5		      Drop OB
	D=D+1	A
	A=R0.F	A		      A:[A]: @ of new Code OB
	GOVLNG	=PUSHA		      PUSH Code OB onto stack
ENDCODE
;"
