Are you using your compiler or the supplied compiler? If you are using the supplied compiler, the only thing that its generated code uses that for is array references. You likely have a bad Array base pointer.
Does it fail if you use the supplied Screen and Math VM files instead of just deleting yours?
There is dependency between the various OS modules. For instance the supplied Screen.vm and Math.vm use Arrays, and Array.vm uses Memory.alloc. Therefore, Sys.vm must call Memory.init() before calling either Screen.init() or Math.init(). I suspect that the built-in system functions don't mimic this dependency.
Your dependencies may not be the same as the supplied OS modules'. Therefore, your Sys.vm may not be interchangeable with the supplied Sys.vm.
If you can't get anywhere, feel free to email me your OS sources and I'll take a look at them. I should have time over the Thanksgiving weekend.
--Mark