From Tapestries MUCK
Takes a list, and returns a subset of the list items within it.
The subset is all the list items between list item pos1, and list item pos2, inclusive.
If the pos2 argument is omitted, it assumes that pos2 is the same as pos1. If pos2 is less than pos1, then all the list items between pos2 and pos1 are returned, in reversed order. If pos1 or pos2 are negative, it counts that many list items back from the end of the list, so -1 is the last list item, and -5 would be the fifth from last list item.
The input list is assumed to be delimited by carriage returns (\r) unless the sep argument is given.