CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

USART動作確認

シリアルコントローラ8251のテストを行いました。

プログラムが多少大きくなるのでまずアセンブラが必要です。
ここでは汎用アセンブラのPROASM-IIで行いました。
これはもともとZ80用のアセンブラですが8085命令のマクロファイルを読み込むことで
Intel8085ニーモニックに対応できます。

USARTを初期化してインクリメントデータを垂れ流しするプログラム
   3   0000          	        LIST
   4   0020          	SIOD    equ     20h
   5   0021          	SIOC    equ     21h
   6   0000          		
   7   0000 3E00    +	init:   mvi     a,0     ;ダミーライト
   8   0002 D321     	        out    (sioc),a
   9   0004 D321     	        out    (sioc),a
  10   0006 D321     	        out    (sioc),a
  11   0008 D321     	        out    (sioc),a
  12   000A D321     	        out    (sioc),a
  13   000C 3E40    +	        mvi     a,40h    ;リセット
  14   000E D321     	        out    (sioc),a
  15   0010 3E4E    +	        mvi     a,4eh    ;8bit,1stop,nonparity,*16
  16   0012 D321     	        out    (sioc),a
  17   0014 3E37    +	        mvi     a,37h        ;TX,RXenable
  18   0016 D321     	        out    (sioc),a
  19   0018          	
  20   0018 0E00    +	        mvi     c,0
  21   001A DB21     	loop:   in      a,(sioc)
  22   001C E601    +	        ani     01h
  23   001E CA1A00  +	        jz      loop
  24   0021 79      +	        mov     a,c
  25   0022 D320     	        out     (siod),a
  26   0024 0C      +	        inr     c
  27   0025 C31A00  +	        jmp     loop
  28   0028          	
  29   0028          	end
0000-0028
No Fatal error(s)
ザイログニーモニックが混ざっていてもエラーの検出が出来ませんが
Z80専用命令をうっかり入れてしまうと実行時にCPUが暴走するかもしれないってことです。

イメージ 1

USART周りの残り配線、実装をしたところです。

はじめ送信レディフラグの0/1の意味を間違え「jnz loop」とコーディングしていて
シリアルデータがちっとも出て行かないんでハードを本気で見直してしまいました。