Sounds like you should be able to log into the master database despite the error during recovery of tempdb. The error suggests a problem with the sysusages rows for tempdb.
Please do a "select * from master..sysusages where dbid = 2 order by lstart" and post the results here.
Most likely the way past this error will be to do a little slight-of-hand to replace the troubled tempdb with a good database. To do that
1) manually edit the $SYBASE/ASE-*/<servername>.cfg file to turn on the "allow updates to system tables" option
2) edit the $SYBASE/ASE-*/install/RUN_<servername> file and add -T3608 to the list of dataserver parameters. This flag causes ASE to only recover the master database when rebooted and avoids the possibility of recovery leaving a lock on sysdatabases if a problem happens during recovery
3) reboot the server. Only the master database should recover.
4) log in and run the following:
-- create a dummy database on master device
create database foo on master
go
-- remove the existing sysusages entries for tempdb
delete sysusages where dbid = 2
go
-- reassign the sysusages row for foo to tempdb
update sysusages set dbid = 2 where dbid = db_id("foo")
go
-- remove the now-defunct "foo" entry from sysdatabases.
delete sysusages where name = "foo"
go
5) Shutdown ASE. Remove the 3608 flag from the RUN_SERVER file. Reboot ASE. Recovery of tempdb should now complete without error. You will want to enlarge tempdb to a reasonable size. Assuming sybsystemprocs recovers, use sp_configure to run off the "allow updates to system tables" option.
-bret