26 |
6809 |
さて、目的はレトロコンピュータの設計ですが、そのために8bit CPUを搭載します。ここでは使用するソフトウェアの関係上6809を取り上げます。入手元はOpen Coresで、VivadoにはRTLとして取り込みます。
https://opencores.org/projects/6809_6309_compatible_core
開発ツールが必要ですが、6809アセンブラを以下から入手します。
https://www.6809.org.uk/asm6809/
画面表示用のサンプルソースファイルをテキストエディタで、
VRAMB equ \$0000
VRAMR equ \$4000
VRAMG equ \$8000
;
start org \$c000
;
clra
l1 ldx #VRAMR
l2 sta ,x+
inca
cmpx #VRAMR+16000-1
blo l2
;
ldx #VRAMG
l3 sta ,x+
inca
cmpx #VRAMG+16000-1
blo l3
;
ldx #VRAMB
l4 sta ,x+
inca
cmpx #VRAMB+16000-1
blo l4
bra l1
;
org \$fffe
fdb start
;
end
として、以下のようにアセンブルします。
asm6809 --bin test.asm -l test.lst -o test.o
以下のアセンブルリストのようにアセンブルされ、合わせてバイナリファイルが生成されます。
0000 VRAMB equ \$0000
4000 VRAMR equ \$4000
8000 VRAMG equ \$8000
;
C000 start org \$c000
;
C000 4F clra
C001 8E0000 l1 ldx #VRAMR
C004 A780 l2 sta ,x+
C006 4C inca
C007 8C3E7F cmpx #VRAMR+16000-1
C00A 25F8 blo l2
;
C00C 8E4000 ldx #VRAMG
C00F A780 l3 sta ,x+
C011 4C inca
C012 8C7E7F cmpx #VRAMG+16000-1
C015 25F8 blo l3
;
C017 8E8000 ldx #VRAMB
C01A A780 l4 sta ,x+
C01C 4C inca
C01D 8CBE7F cmpx #VRAMB+16000-1
C020 25F8 blo l4
C022 20DD bra l1
;
FFFE org \$fffe
FFFE C000 fdb start
;
0000 end