Ranman, IMO you have two choices.
1. Live like you are. There is nothing you can do.
2. Tell him (and MEAN it) if he doesn't go on his meds immediately, he can't continue to live with you. He is an adult. You are no longer legally responsible. He hasn't learned any responsibility, as he is getting disability AND has a job. He spends his money as he likes, keeps hours that suit him, does drugs, is abusive to you and makes your life miserable. I understand you think it's your job to protect him, but in reality you are the problem. I am sorry to be harsh, but you need to look at this from a reality standpoint.
3. If he chooses not to take his meds, you can set him up in an apartment (that would be more than you owe him) and tell him he's on his own. If he gets arrested (more than likely) don't call you. If he gets fired, get a job at mcdonald's. If he runs out of money, don't ask you. You get the idea. You MUST do this, it is a favor to him. If you don't, do you seriously think he will get responsible by himself. I know he is sick, but he has made the choice to stay that way. By putting up with it, you are an enabler. If you choose not to do this, you will live to your old age with this situation. Trust me. Just like an alchoholic, he has to hit rock bottom to learn.
I don't mean to offend you and I know it's a hard thing to consider, but tough love is just that - love. He has to learn, he is an adult.