シンプルにしたサンプルを作ってみました。HEX$には桁数を指定できるので、それでスッキリさせることができます。
うまく行っていなかったのは、多分マイナスの値がシフト演算(>>)された時に、最上位のビットが1のままになってしまう為だと思います。
例えば
&B10000000000000000000000000000000>>1
は
&B11000000000000000000000000000000
になります(これはプチコンの仕様で、算術シフトって呼ばれてたかな)。
あとちょっと気になったのは、ダンプ出力の順番。
元のプログラムでは例えば
&H01234567
は
67 45 23 01
と、逆順で出力されるようになっていました。
こうしたかったのであれば別に良いんですけど、順番通りに出力する場合は、サンプルのGOSUB@REVのところをGOSUB@SEQに変えると良いです。