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でASSIST092020年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台持っていても邪魔にならない測定器だと思います。