SC/MP(とII)の後継に、SC/MP III(INS8070)というCPUがあります。
これってクロスコンパイラあるのかな?と思って検索すると、ありました。

https://github.com/EtchedPixels/Fuzix-Compiler-Kit

いろいろなレトロCPUをサポートするコンパイラですが、この中に8070がありました。
しかし、製作途上(WIP)だそうです。
無難な書き方で短いプログラムを書いてみると、なんとなくそれっぽいアセンブリを出力しているので試してみることにしました。

INS8070マニュアル
https://8073sbc.wordpress.com/wp-content/uploads/2019/05/70-series_user_manual_bw-1979.pdf

前モデルからの改良点は、
AとEと繋げて16ビットデータを扱えるようになった
ページ単位の細切れがなくなり、リニアアドレスになった
P1がスタックポインタになり、コール・リターンをサポートした
乗除算ができるようになった

なんというか、普通っぽくなりました。

コンパイラ

後述のサンプルを作る過程でサポートライブラリが足りなかったり、いくつかのバグに遭遇したのですが、書き方で結構回避できました。
例えば、charサイズとlongサイズはリンクエラーになったりバグがあったりするので、なるべくintサイズを使うなどです。
それでも避け難い不具合をいくつか修正してプルリクエストを出し、マージされました。

ではインストールをします。
あらかじめ/opt/fccディレクトリを作り、書き込み可能にしておきます。

https://github.com/kwhr0/Fuzix-Compiler-Kit

からCodeのZIPファイルをダウンロードします。
unzip Fuzix-Compiler-Kit-main.zip
cd Fuzix-Compiler-Kit-main
make install

エミュレータ

後述のサンプル用に、128x64ドットのフルカラーグラフィックとサウンドをサポートしています。

https://github.com/kwhr0/emu8070

からCodeのZIPファイルをダウンロードします。
unzip emu8070-master.zip
cd emu8070-master
make
とし、 出来上がったemu8070をパスの通ったところに置いておきます。

サンプル

今回は

Raspberry Pi Picoで作るマトリクスLED用ムービープレイヤー

のSDカードに相当するディスクイメージから動画を読み出し、再生するものです。
ファイルを扱う部分が簡易実装のため、パーティションマップなしのFAT16フォーマットが必要で、以下のように作成します。

ディスクユーティリティを開き、ファイル->新規イメージ->空のイメージを作成...メニューを選ぶ。
以下のように設定する。
サイズ:2GB以下
フォーマット:MSDOS (FAT)
暗号化:なし
パーティション:パーティションマップなし
イメージフォーマット:読み出し/書き込みディスクイメージ
これで保存ボタンを押してできるイメージはFAT32になるので、以下のようにしてFAT16に変更します。
diskutil listでイメージがマウントされている番号を確認
diskutil unmount disk番号
sudo newfs_msdos -F 16 /dev/disk番号
絶対にdisk番号を間違えてはいけません。

これでボリュームの準備ができたので、
/MOVIEディレクトリを作ってその中に上記ページにあるようにAVIファイルを入れ、以下のコマンドでイジェクトします。
diskutil eject disk番号
イメージファイルはfatmovie.dmgという名前でホームディレクトリに置きます。
# エミュレータはイメージファイルを直接読みます

https://github.com/kwhr0/movieplay8070

からCodeのZIPファイルをダウンロードします。
unzip movieplay8070-master.zip
cd movieplay8070-master
make
emu8070 a.out
-sオプションをつけるとサウンドも再生します。このとき、main.cのSOUND_ENABLEを1にしてください。
-cオプションでクロックを指定できます。
1.5GHzくらいまで上げると音が途切れずにスムーズに再生できました。
指定しないと全力で走ります。