X68030でDOSコール番号が変更された理由

6
yunk @yunkya2

X68030が出た際にHuman68kの一部のDOSコール番号が変更されましたが(ff50~ff7f→ff80~ffaf)、これって68030で追加された命令がDOSコールと被ったせい、で合ってます? #X68000 確かにコプロセッサID=7へのcpRESTORE命令がDOSコールと重複してる(mode=00xはこの命令では使えないのでff4xはセーフ) pic.twitter.com/4W9N5DOgmI

2023-05-10 19:28:00
拡大
yunk @yunkya2

疑問なのが、cpSAVE命令で同じ問題が起きないのかということなのですが。この命令のビットパターンだとff10~ff3fが重複しそうだけどこの辺のDOSコール番号は変更されていないし。 pic.twitter.com/5WGrukl5dd

2023-05-10 19:28:01
拡大
Makoto Kamada @kamadox

@yunkya2 cpRESTOREが駄目なのはコプロと通信する前にメモリをリードしようとするためです。変なアドレスをリードしたりスーパーバイザスタックポインタをインクリメントしたりするので使えません。cpSAVEはメモリへライトする前にコプロと通信しようとするのでFライン例外(または特権違反)で拾えます。

2023-05-10 20:12:57
Makoto Kamada @kamadox

@yunkya2 X68030実機で簡単なプログラムで「変なアドレスをリードする」を確認できたのですが「スーパーバイザスタックポインタをインクリメントする」を確認できませんでした。やり方がいけないのか事実でないのか。後者だとしたらごめんなさいです。この件はOh!X 1993年4月号に詳しく書かれています。

2023-05-10 20:59:46
yunk @yunkya2

@kamadox おお、なるほど~。プロセッサの命令実行シーケンスの違いに起因するのですね。これはマニュアルを読んだだけでは分からない…。ありがとうございます! Oh!Xにも載っていたんですね。時期的には私も買って読んでいるはずですが、完全に忘れてましたw

2023-05-10 21:09:42
TcbnErik / 立花@桑島技研 @kg68k

@yunkya2 M68000PRMではなくて個々のプロセッサのマニュアルのコプロセッサインタフェースの説明が参考になると思います。 添付画像はMC68030ユーザーズ・マニュアル p.496、497 pic.twitter.com/oFDhTJV0Bg

2023-05-11 00:05:11
拡大
拡大
yunk @yunkya2

@kg68k なるほど…。確かにしっかり読み込めば、その通りの動作なんですね。

2023-05-11 01:07:03