目次

8049到着

 アマチュア無線の知人が、i8049互換のチップをくれました。



 さらに、ROMも多数くれました。



 場所をとっている部品を処分したかったのかも知れませんが
 こちらにとっては、新しい玩具が来たイメージです。

 i8048よりも、ROMサイズが増えているので、これまで
 容量不足で作成を断念したプログラムを実現できそう。

 ROM容量が大きくなれば、モニタプログラムが入るので
 Real Time Monitorを新しく設計していきます。

 8049のメモリ空間は、以下。



 プログラム容量が増えたので、モニタプログラムを
 配置する仕様を採用します。

 8048と同様に、0Fhまでは割込みのベクトル空間で
 固定なので、10hから1FFにモニタプログラムを配置
 します。

 プログラムの配置は、次のように指定。



 SRAMは128バイトとなっているので、16バイトだけを
 モニタで使えるようにします。

 汎用レジスタ、スタック領域、モニタ領域で合計40バイト
 なので、88バイトはユーザーに解放されるように指定。

 この仕様では、ソースコードの雛形は、以下となります。

;
;	TEST program for 8049 ( PROASM-II )
;	Copyright (C) 2019 Kensuke Ooyu
;
	INCLUDE 8048.LIB

;****************
; define symbols
;****************
ENTRY	equ	0h
E_INT	equ	3h
E_TIM	equ	7h

;*********************
; define monitor area
;*********************
MONR0   equ     70h
MONR1   equ     71h
MONR2   equ     72h
MONR3   equ     73h
MONR4   equ     74h
MONR5   equ     75h
MONR6   equ     76h
MONR7   equ     77h
MONR8   equ     78h
MONR9   equ     79h
MONRA   equ     7Ah
MONRB   equ     7Bh
MONRC   equ     7Ch
MONRD   equ     7Dh
MONRE   equ     7Eh
MONRF   equ     7Fh

;*******************
; interrupt vectors
;*******************
	org	ENTRY
	jmp	START

	; external interrupt
	org	E_INT
	retr

	; timer interrupt
	org	E_TIM
	retr

	org	10h
;**************
; sub routines
;**************
INIT:
        ;
	ret

;**************
; main routine
;**************
	org	200h
START:
	call	INIT
	;
MAIN:
        ;
        ; ???
	;
	jmp	MAIN

	end

 次のコードを利用して、動作を確認しました。

;
;	TEST program for 8049 ( PROASM-II )
;	Copyright (C) 2019 Kensuke Ooyu
;
	INCLUDE 8048.LIB

;****************
; define symbols
;****************
ENTRY	equ	0h
E_INT	equ	3h
E_TIM	equ	7h

;*********************
; define monitor area
;*********************
MONR0   equ     70h
MONR1   equ     71h
MONR2   equ     72h
MONR3   equ     73h
MONR4   equ     74h
MONR5   equ     75h
MONR6   equ     76h
MONR7   equ     77h
MONR8   equ     78h
MONR9   equ     79h
MONRA   equ     7Ah
MONRB   equ     7Bh
MONRC   equ     7Ch
MONRD   equ     7Dh
MONRE   equ     7Eh
MONRF   equ     7Fh

;*******************
; interrupt vectors
;*******************
	org	ENTRY
	jmp	START

	; external interrupt
	org	E_INT
	retr

	; timer interrupt
	org	E_TIM
	retr

	org	10h
;**************
; sub routines
;**************
INIT:
	; disable external interrupt
	dis	i
	; disable timer interrupt
	dis	tcnti
	; initialize I/O
	mov	a,#0
	outl	p1,a
	outl	p2,a
	;
	ret

WAIT:
	; set counter
	mov	R7,#0
WAITL:
	nop
	djnz	R7,WAITL
	;
	ret

;**************
; main routine
;**************
	org	200h
START:
	call	INIT
        ; set code
        mov     R2,15
	;
MAIN:
        ; get code
        mov     a,R2
        ; inverse
        xrl     a,#0FF
        ; store
        mov     R2,a
        ; impress
        out     P1,a
	; delay
	call	WAIT
	call	WAIT
	call	WAIT
	call	WAIT
	call	WAIT
	;
	jmp	MAIN

	end


目次

inserted by FC2 system