2018年6月27日水曜日

ASSIST09に追加したLoad, Saveコマンドを改良しました

ASSIST09に追加したLoad, Saveコマンドは使いにくかった


5月26日のブログで公開したASSIST09の追加コマンドLoad, Saveですが、使用していると使い勝手が悪いところが目に付いてきましたので、改良しました。

使いにくい点は
(1)毎回、Windows側のslwin.exeを起動しなければならない。
(2)末尾が0でないアドレスからSaveし始めると、その値から16バイトずつ保存していくので、メモリのダンプ値と比較しにくい。

ということで、コマンドプロンプト画面でWindows側のソフトを起動すれば、その画面を閉じない限り、繰り返しLoad, Saveコマンドが使えるように改良しました。
また、アドレスが切りの良い値でSaveされるように一行目の保存バイト数を調整しました。


コマンド発行の様子



コマンドの使い方は全く同じです。











Windows側の様子





一度起動するだけで、連続してLoad, Saveコマンドが使えます。終了するにはQを入力して少し待ちます。








作成されたMOTファイル




Saveコマンドで保存されたMOTファイルの中身です。
2行目からは切りの良いアドレス値で保存されています。















残念な点...
ASSIST09側のプログラムもそれに合わせて若干の手直しをしましたので、モニタROMの焼き直しが必要となってしまいました。

ASSIST09側のプログラムとWindows側のプログラム(slwinr.exeと改名)をMicrosoftのOneDriveに上げておきます。

17 件のコメント:

  1. 初めまして、tomi9と申します。
    SBC6809/6800でFLEXを動作させたいと思っていますので参考にさせていただく予定です。
    Assist09について質問ですが、SBC-I/OでPTMの追加によりトレース動作の確認ができるようになったのですがブレークポイントの追加ができない状況です。
    assist09のブレークポイントの追加、削除など普通にできますでしょうか。
    内部workエリアを編集してブレークポイントを追加すれば、削除系はできるのですが追加ができませんもしよろしければ教えれ頂けると助かります。

    返信削除
    返信
    1. tomi9さまのブログは拝見させていただいております。SBCボードへの拡張端子の取り付け法などのアイディアには感心するばかりです。PTMも追加されたのですね。私も今作成中のボードでは追加する予定です。
      Assist09でのブレークポイントの追加・削除ですが、正常にできております。
      8個まで追加でき、削除も1個ずつでも全部まとめてでもできました。
      私のAssist09はその昔「MC6809-MC6809Eプログラミングマニュアル」中のリストから入力したもので、ワークエリアを800h上にずらしてE7FFh-E751hにしてあるのと、拡張ROMをF000h-F7FFhに置いて拡張コマンド Fill,Xfer,FLEXを追加しただけで、特別なことはしておりません。
      ということで、原因について思い当たることはありません。申し訳ありません。
      私も最近、SBC6303/6303BL基板を購入しました。tomi9さまのブログを参考にさせていただきますのでよろしくお願いいたします。

      削除
  2. ソースを修正してブレークポインタも動作しました。
    assist09は、as9と同時に入手させていただいたものでアドレスの配置以外変更していませんでした。SBC-I/Oでアドレスを拡張する前は、RAM領域の影響でworkでも破壊していると思って追っていませんでした。
    SBC-I/Oを作ってトレースが動作したのでアドレス配置を修正しましたがダメで質問させていただきました。
    最終的にCBKADDの部分を「MC6809-MC6809E 8-Bit Microprocessor Programming Manual」に合わせました。
    Assist09のブレークポイントの追加・削除も8個まで正常にできるようになりました。
    これで1月からのもやもやが晴れてFLEXをSBC6809とSBC6800で確認することができます。
    ありがとうございました。

    返信削除
    返信
    1. ブレークポイントが動作したとのことで良かったです。
      そう言えば昔、この本のリストとネットで出回っているリストを比較したことがあったなと思いだしましたので、本を確認してみたら、CBKADDの行に「ネット版は違う」という書き込みがありました。もっと早く思い出してお知らせできていれば良かったですね。済みません。
      蛇足になりますが、本とネット版との違いはもう一か所あります。
      DEFAULT I/O DRIVERSブロックのラベルCIDTAで始まるルーチンが異なっています。2行異なっており、ネット版では1行追加されています。
      私は以降のアドレスがずれるのが嫌なので、本のリストのままで使用しています。どちらが良いのかは分かりませんが、特に支障は感じていません。

      削除
    2. 情報ありがとうございます。現在チョンボが多くて動作した物が??で再度動作確認を行ったりしていてなかなか先に進みません。
      CBKADDの所で1バイトずれてる原因がDEFAULT I/O DRIVERSブロックのラベルCIDTAの修正ですよね。
      これは、NOPの追加ですからwaitの挿入が必要なボードがあったと理解しています。基本的に私も必要のない修正と思います。
      しかし、CBKADDのDECBへの修正意味は理解できません時間ができたら考えたいと思います。

      削除
  3. 初めてメールさせて戴くLEO夢七と申します。
    現在、MUTIF09を弄っておりましてここでもASSIST09を試すために参考にさせていただいております。これで動作を確認しましたので合わせてX,Tコマンドを追加したものをBlogにアップしました。事後報告で恐縮ですが何か不都合があればお知らせいただくと幸いです。それから、SBC6809でのFLEXですが、WIn10だとロードコマンドは受け取っているのですがデータが送られてきません。ということはWin10ではないのかなと推測している次第です。参考になるサイトでたいへん感謝しております。

    返信削除
  4. LEO夢七さま コメントありがとうございます。しばらく留守にしておりまして返事が遅れてしまいました。済みません。
    ASSIST09のT,Fコマンドの追加は「シングルボードコンピュータとFLEXシステムの詳細('18.5.4)」で述べましたように、インターフェース誌の1982年4月号で高橋豊氏が公開されたものですので、個人的に使用される分には何も問題はないと思います。お役に立てたようで嬉しいです。
    FLEXのロードコマンドでデータが送られてこないとのことですが、FLEXにはSAVEコマンドはありますが、LOADコマンドはありませんので、ASSIST09の追加コマンドとして私が作成したLOADコマンドのことでしょうか。それでしたら、私の開発環境はWindows10(64bit版)ですので、Windows10で正常に動作しております。当然、他のプログラムもすべてWindows10で使用しているものです。
    ただ、プログラムの公開以降、ハードソフト共に結構いじっておりますので、公開当時のプログラムの動作確認がしにくい状態です。
    次回のブログで、6809/6802用のモニタプログラムを大幅に書き換えたものを公開する予定ですが、それに合わせて、今までに公開した全プログラムの最新版を公開するつもりですので、それを試してみていただけますでしょうか。
    よろしくお願いいたします。

    返信削除
    返信
    1. お答えに感謝しております。FlexDrvWin.exeを実行させた時に「ハンドルされていない例外」が発生します。パラメータ名はSelectedIndex。これが原因だと思いますが。これを無視して続行し、FLEXコマンドを発行した後のLOADがうまく動作しません。時間のブログを参照させていただいた後に再挑戦してみたいを考えています。ありがとうございます。

      削除
    2. 勘違いをしてお答えしてしまいました。済みません。
      FlexDrvWin.exeなのですね。もちろんWindows10で使用しておりますが、これは起動時にシリアルポートを探して、存在しているポートのみをComboBoxに設定しております。SelectedIndexのエラーが出るのは、存在しないポート番号を指定した場合です。起動時に毎回ポート設定をするのは面倒なので、私の環境に合わせてポートNoを4に指定してあるためと思います。
      この部分を含めて各自の環境に合わせて初期化ファイルで指定できるように改造する予定なのですが、まだ実現していません。(元がVisualStudio2008で作成してありますので、現在のVCでは大量のエラーで手が付けられません。)
      とりあえず、決め打ちでCOM1を指定したものをメールの方にお送りしましたので、試してみていただけますでしょうか。よろしくお願いいたします。

      削除
  5. たびたび済みません。コメントの連絡メールには返信できないのですね。
    OneDriveにFlexDrvWinという名称で上げましたので、そちらからダウンロードをお願いします。(先の返信では決め打ちでCOM1と書きましたが、最初に検出したポートです。)慌てて作りましたので、何かミスがあるかも知れませんが、何かありましたらご連絡ください。

    返信削除
    返信
    1. OneDriveの6809/6802用のモニタプログラムをSBC6809,SBC6800とMUTIF09ボードに移植して動作を確認しました。Load, Save, FLEXについてはWin10側からの応答が無いのでまだですが、上記ユーザ向けにこのモニタをアップロードしようかと考えております。ご意見を頂けると幸いです。

      削除
    2. MEK6800DIIさま おっしゃられているのは09Mon02Mon61.zip中のVer6.1のモニタプログラムのことですね。動作確認をありがとうございます。使いたい方があれば自由に使っていただければということで公開しておりますので、アップロードしていただくのは全く構いません。よろしくお願いいたします。

      Load,Save,FLEXというWindowsとの通信をするコマンドが動作しないとのことですが、Windows側のslwinr.exe(Load,Save用)FlexDrvWin.exe(FLEX用)の双方とも動作しないとすると、両方に共通のルーチンに問題があるのかと思うのですが、当方では動作しているので、どうしたものかと考えあぐねているところです。(いっそのこと、ソースも公開して皆さんのお知恵を借りた方が良いのかとも思ったりもしますが、自己流の汚いソースなので公開はためらわれるところです。見ていただけるのであれば、メールでソースをお送りしても構いませんが。)

      削除
  6. 初めまして「SBC6809」で FLEX を動作させたく悪戦苦闘して
    います。ところで、関連記事で分からないところがあったので
    質問いたします。

    「MakeFlex.zip」同梱の、ファイルについて

     1.DRIVER_DSK.BIN は、github で公開されていた
      「DRIVER.TXT」と差異はあるのでしょうか。
     2.CONSOLE_DSK.BIN は、github で公開されていた
      「CONSOLE.TXT」と差異はあるのでしょうか。
     3.BLANK.DSK内のBootLoderは、ACIA のアドレスを
      変更する必要があると思うのですが、ソースを公開するか
      変更場所を明示することは可能でしょうか。

     以上について過去記事を見直してみましたが判らなかったので
     書かせていただきました。

    返信削除
    返信
    1. 不器用貧乏さま 初めまして
      1.2.について:DRIVE_DSK.BIN, CONSOLE_DSK.BINの内容はいずれもgithubで公開したものと同じですが、その名前の通りDISKに保存されたときの形式になっています。2018年5月4日公開の「シングルボードコンピュータとFLEXシステムの詳細」に書きましたように、FLEXのDISKにはベタなバイナリファイルは存在せず$02か$16で始まるパケットの集合体の形式になっています。
      3.について:BootLoaderの先頭からのオフセット$B8以降の$B6/$B7/$F7に続く$F0CCまたは$F0CD(計8箇所)がACIAのアドレスですのでこれらをハードに合うように書き換えればOKです。
      githubで公開しております6809DasmWin.exeを使っていただければソースを簡単に得ることができます。
      まずBLANK.DSKの先頭$0000~$00E6を抜き出します。(BootLoader.binとします)
      6809DasmWin.exeを起動してファイル名のボックスにBootLoader.binをドラッグし、オプションメニューのオフセット指定で先頭アドレス300を、スキップ範囲追加で302-30Cを入力します。これで逆アセンブル実行ボタンを押せばアセンブルリストが得られます。

      削除
  7. Old68funさん こんばんは

    まだ、先に書いたコメントを読んでいただいたか不明ですが
    自己レスです。

    「MakeFlex.zip」同梱の、BLANK.DSK の先頭部分の
    BootLoader を切り出して逆アセンブルしてみました。
     やはり、仮想ドライブ用のACIAをアクセスしている
    部分がありました。自分の理解が正しいか不明ですが
    「SBC6809+SBC-IO」構成のSBC-IO側のACIAのアドレスに
    書き換えて機能するか見てみるつもりです。

    再度要望ですが、「BootLoader」について
    ソースがあれば開示していただけないでしょうか。

    返信削除
    返信
    1. 不器用貧乏さま こんばんは
      上記のように、本日の15:24に返信しておりますので、それをご覧いただけますでしょうか。
      SBC-IOを私は知らないのですが、それに2つ目のACIAが載っていれば、それを仮想ドライブ用に使えるのではないかと思います。ただし、Flex9本体は$C000~$DFFFに入りますので(移動不可)、IO関係が競合しないようにする必要があります。

      削除
  8. Old68funさん こんばんは

    返事をいただいたのに見落としてしまってすいませんでした

    1.ACIAの件、了解です。
    2.DRIVE_DSK.BIN, CONSOLE_DSK.BIN の件も了解しました。

    また、参考になるリストは「FLEX 6809 Adaptation Guide」に
    ありましたので、自分で理解できるように逆アセンブルした
    ものを弄りたいと思います。

    ここまでの情報で動作させることは出来そうなので頑張って動作
    させたいと思います。

    返信削除