( MemSafe Micro )

0 VALUE MemGetLastErr

: MemErr: ( err "func" -- )
	>in @
	create smudge
	>in ! ' , , smudge
does>
	dup>r
	@ execute dup if
		rdrop
	else
		r> cell+ @
		to MemGetLastErr
	then ;

api: MemPtrNew
api: MemHandleNew
api: MemPtrRecoverHandle
api: MemHandleToLocalID
api: MemLocalIDToLockedPtr
api: MemLocalIDToPtr

0x0102 MemErr: MemPtrNew
0x010B MemErr: MemHandleNew
0x0103 MemErr: MemPtrRecoverHandle
0x0103 MemErr: MemHandleToLocalID
0x0103 MemErr: MemLocalIDToLockedPtr
0x0103 MemErr: MemLocalIDToPtr

: ?MemErr
( n -- n )
( 0 -- ) \ throw
	?DUP 0= IF
	MemGetLastErr THROW THEN ;
