A couple of options depending on your version of SQL to exclude microsoft objects.
In SQL 2005, there is a field called is_ms_shipped. It's a bit value. 1 means it's a microsoft object, 0 if it is not.
SELECT name
FROM sys.objects
WHERE type = 'p' and name not like 'sp[_]%' AND is_ms_shipped=0
ORDER BY name
To use this in SQL 2000 you would modify the SQL code to this:
SELECT name
FROM sysobjects
WHERE type = 'p' and name not like 'sp[_]%' AND OBJECTPROPERTY(object_id,'isMSShipped')=0
ORDER BY name
Thanks for sharing this code.