A few observations / questions:
Other than a few DPEEK commands, and the MOVE command, I don't think it's using any Turbo BASIC commands; this could probably be translated to regular BASIC fairly easily.
Line 9000 appears to have an error - it refers to line 8396, which does not exist in the listing. (On further examination, I'm wondering if line 9000 is used at all?)
Line 8400 TRAPs line 40000, which doesn't exist.