PC-DOS 2000 で遊ぶ -- その3 DOSCALLSライブラリーのバージョンアップ ― 2020年08月03日 14:56
PC-DOSのDOS機能呼び出しを楽に使うためのライブラリー製作の続きです。 まずは、申し訳ございません。配慮が足らず多くのバグを作り込んでしましました。 実際に使って見て、DOSCALLSライブラリーでは、レジスタを保存することにしました。 また、DOSが検出したエラーを容易に判断できるように、DOSが返してきた、キャリー フラグとAXレジスタの値を確実に返すこととしました。
コマンドラインの引数を走査する、getAegv,getArgcは、スパゲッティーボールなところがあり、 気に入らなかったので、引数を分解するロジックを作り直しました。見通しが良くなったと 思います。
更に、ファイル操作があまりにも貧弱なので、ファイルの基本操作を容易にする FILELIBを追加しました。FILELIBは、少し高級言語風のファイルの操作ができます。
INCLUDE CONSTANT.INC INCL_FILELIB EQU 0 INCLUDE DSOCALLS.MAC INCLUDE DSOCALLS.DEF BUFSIZ EQU 80 AFileName DB "FileName.DAT", EOS Handle DW 0 AccessMode DW FL_READ ; 読み出しでオープン。このほかに、 ; FL_WRITE 書き込みでオープン ; FL_APPEND 追加書き込みでオープン ; FL_READWRITE 読み書き用にオープンで、オープンできる。 Buffer DB BUFSUZ DUP(BLANK) BSize DW BUFSIZ @Open Handle, AFileName, AccessMode ; ファイルをオープン JC DOSErr ; DOSのエラー検出 CMP AX, FL_NOERROR JNE FILELIBErr ; FILELIBのエラー検出 @get Handle, Buffer, Bsize ; BufferへBSizeバイト読み取り ; BSizeには、実際に読み取ったバイト数が返る JC DOSErr ; DOSのエラー検出 CMP AX, FL_NOERROR JNE FILELIBErr ; FILELIBのエラー検出 @Close Handle ; ファイルをクローズ JC DOSErr ; DOSのエラー検出 CMP AX, FL_NOERROR JNE FILELIBErr ; FILELIBのエラー検出 DOSErr: ; AXを見て、エラーを判断しリカバリー処理 FILELIBErr: ; AXを見て、エラーを判断しリカバリー処理この様な感じです。
ファイルの読み書きは、ブロック読み出し/書き込み、バイト単位の読み出し/書き込み、 行単位の読み出し/書き込みが有ります。
@get Handle, Buffer, Size @getchar handle, char @getline handle, line, length @put handle, Buffer, Size @putchar handle, char @putline handle, line
@get,@getchar,@getlineは、ファイルの終わりを検出します。@getlineは、現在のファイル 位置から行末までを読み取り、最後にEOSを追加します。行末は捨てられます。 バッファーに入りきらない場合、切り捨てます。
@put,@putchar,@putlineは、DISKFULLを検出します。@putはサイズ分書き込めなかった場合は、 書き込めたバイト数をsizeに返します。@putlineは、EOSで終端されている文字列を書き出し、 行末を追加します。
備忘録をかねて、必要そうな情報をDOSCALLS.TXTにまとめました。製作したライブラリーの インターフェイスの使い方をまとめてあります。
DOSCALLSライブラリーは、これ DOSCALLS.ZIPです。このパッケージには、DOSCALLSライブラリーのテストプログラムと サンプルもまとめてあります。ご参照ください。
SBC6809でASSIST09 ― 2020年08月17日 13:54

モトローラの6809には、ある種の憧れを持っています。究極の8bitとか、 多彩なアドレッシング・モードとか、Z80とはテイストの違い、一度は いじってみたいとずうっと思っていました。2年ほど前に、vintagechipsさんの ブログで6809のルーズキット「SBC6809」を知りました。キットといっても プリント基板一枚だけで、製作に必要な情報はネット上から、パーツは自力で 集める必要があります。こんなアプローチもあるもんだと感心していましたが、 全て自作にしたいことと、ASSIST09というモトローラのモニタをフルスペックで 動かしたいことにこだわって、このキットには手を出していませんでした。
でも、とうとう我慢しきれなくなり、キットを入手して制限付きですが ASSIST09を動かすことができました。
このSBC6809は、6809MPUとACIAの6850、ROM 8KB、RAM 8KB、PIC12F1822を 使ったボーレートジェネレーターの構成です。ASSIST09は、PTMの6840も使います。 PTMはトレースコマンドで使用していて、トレースコマンドを使用しないなら、 PTMが無しでもASSIST09は動作します。(でもやっぱりフルスペックで動かしたい。)
SBC6809自体の組立は問題なく完了しました。組立に当たり近い将来、ASSIST09を フルスペックで動かすために改造をしています。オリジナルでは、/NMIと/FIRQは Vccに直結してあるのをこのパターンをカットし、それぞれを4.7Kの抵抗でプルアップ しました。ASSIST09はトレースのためPTMで/NMIを発生させています。この準備です。
ASSIST09をSBC6809の構成に合わせるために、以下の部分を書き換えて再ビルドしました。 変更箇所は、
RAMOFS EQU -$1900 ACIA EQU $E008 PTM EQU $E000この3点をこのように変更しビルドします。
RAMOFS EQU -$D900 ACIA EQU $8018 PTM EQU $0000
書き込み元アドレスに注意してROMに書き込んで完了です。ASSIST09が動きました。
PTMの代わりをPICにさせてトレースコマンドを実装できないものか、思案中です。
SBC6809ルーズキットは、スイッチサイエンス で取り扱っています。
中華製トランジスター・テスター・キット Mega328を作る ― 2020年08月30日 13:58

AmazonやAliExxpress、Banggoodなどには、中華製の各種キットが沢山掲載されている。 同じ内容と思える物が複数出ており、また、価格もまちまちで、目が迷ってしまいます。 その中でも、トランジスター・テスター・キットとデジタル・オシロスコープが気になっていました。
Banggoodでケース付きのトランジスター・テスター・キットが約2500円と有ったので、 購入してみました。
このキットは、元々、本体セットとケースセットに分かれている物をまとめているだけのようです。 そのため、金属製の六角支柱が4本余ります。このほかにいくつか問題がありました。
問題点1:組み立てキットの説明書が一切ありません。部品が入った袋が届くだけです。 部品リストすらないので、基板のシルク印刷を頼りに部品表を作り、部品を仕訳して確認しました。
問題点2:ケースの組立が、パズル的です。頭の体操をしました。ビスが2種類、 計8本付属します。長い方はケースを止めるのに使います。短い方は基板を固定するのに使います。 しかし、短いねじの長さは長すぎて約3ミリほど出っ張りますので、カットする必要がありました。
問題点3:調整箇所などが分からない。そもそも、調整箇所があるのか無いのかも分からない。 これは、組み立ててから表示される調整手順に従って簡単なキャリブレーションをすれば良いことが 分かりました。
問題点4:端子台が3つ有るけれど、何に使うかうかがい知れない。 製作後、いじって調べることにしました。
問題点5:つまみが付属しない。ローレット軸用の小さいつまみを用意する必要があります。
問題点6:ACアダプターを用意する必要がある。問題と言うよりは使いかってなのですが。 電池で使うこともできますが、ケースに入れると電池用のスペースがないため、 電池がとても邪魔になります。
基板の組立は、難しくありません。半田付けのランドも大きく半田付けは容易です。 LEDは低めに、LCDより低く取り付けます。そうしないとケースに入れたときにぶつかります。 LCDは2本の六角支柱とコネクタで取り付けます。丁度良い長さのねじが付属しています。LCDは 簡単に接着されているだけなので、剥がれることがありました。取り扱い注意です。
ケースに入れるには、ちょっとしたパズルをすることになります。底盤の向きと基板の向きを 合わせないと組み立てられません、初めのうちは混乱しました。
組み上がると、底面には、8本のねじが出て、ナットが露出します。このような感じです。(手持ちのゴム足を追加してます。)
ナットが出ているのが気になるので、底面に皿ねじを使い出っ張りを無くしてます。長いねじをやめて支柱を使って止めています。
支柱は基板を固定するには20mm、ケースを止めるには33mmを使いました。33mmの支柱は標準ではありませんので35mmのアルミ支柱を入手し削りました。
これで完成としました。TEXTOOLのソケットにトランジスターなどを接続し、 つまみを押せば測定開始ですので、操作は容易です。精度は分かりませんがデジタルで 読み取れるのは便利です。キャパシターの測定には浮遊容量があるので要注意でしょう。 1台持っていても邪魔にならない測定器だと思います。
最近のコメント