// MICRO Utility Routines // last edited February 5, 1981 10:01 AM // Copyright Xerox Corporation 1979, 1981 get "micdecl.d" external // O.S. [ MoveBlock; SetBlock ] structure [ blank bit 15 odd bit 1 // Least significant bit ] //let unpak(dest,source,count) be // Unpack an unformatted (non-NOVA/ALTO BCPL) string starting // at source into dest for count characters. // *** In assembly code // for i = 0 to count-1 do dest!i = source>>bytes^i let pak(dest,source,count) be // Packs an unformatted string starting at source into // dest for count characters. [ let sptr,dptr,send = source,dest,source+count-2 let wd = nil while sptr le send do [ wd = @sptr lshift 8 sptr = sptr + 1 @dptr = (sptr>>rh) + wd sptr = sptr + 1 dptr = dptr + 1 ] if count<>lh