自分の弾の座標をTX,TYとかにして一発だけ飛ばせるようにしているという事でしょうか。
まずは
DIM TX[3]
DIM TY[3]
と配列宣言を使って3つの弾の座標で管理してみるといいと思います。
弾が発射されているときは座標がどうなっているか、発射されていないときはどうなっているか考えてみましょう。
もしくはDIM TFLAG[3]という弾が発射されているかどうか判定する別な配列を作ってしまうという手もあります。
MSFがMYSHOTFLAGの略だと思うのですが、今はMSFが一つしかないので全部発射か発射していないかの2つしか表現できません。
MSFも配列してしまうのが良いと思います。
80行目と82行目のMSFはMSF[]にする。81行目で画面外に消えたら隠す処理が書かれていますが、SPHIDE Mの後ろにMSF[]=0も必要でしょう。
ところでFOR I=5 TO 8になっていますがこれだと4発弾がでることになってしまいますよ。
たぶんスプライトを0は自機、2~4は敵、5~8は弾というように管理番号をつけているのかもしれませんが、FOR I=5 TO 8というような手抜きな書き方は後々バグのもとになるので
SHOTSP=5
FOR I=0 TO 2
IF MSF[I]==1 THEN SPOFS SHOTSP+I,MSX[I],MSY[I]
NEXT
とかしておいた方が