start_mt.hファイル

(Mini-c マルチタスク化)

 まずは、スタートアップファイルですが、基本は”mini−c 関数の作成”で説 明したことと同じですが、マルチタスク化のために追加した点と、変更した点を 説明します。

TASK_0		EQU	1	;実載タスクを1にする
TASK_1		EQU	1
TASK_2		EQU	0
TASK_3		EQU	0
TASK_4		EQU	0
TASK_5		EQU	0
TASK_6		EQU	0
TASK_7		EQU	0
 これは、実装したタスクの値を、動作、休止に関係無く”1”にします。この後の RAMTOPの計算や、スタックの確保に使用します。


SYSTEM_TOP	EQU	08000H
 ここから、システムが使用するためのエリアで、ここに各種バッファーを確保し ています。

STAK_START	EQU	08100h
 ここから、スタックエリアとして使用します。通常はメモリーエリアのアドレスの 最後から使いますが、今回はタスクごとに必要となるため、変則的な使用法と なってしまいました。

RAM_TOP		EQU	STAK_START+512*TASK_0+512*TASK_1+512*TASK_2
+512*TASK_3+512*TASK_4+512*TASK_5+512*TASK_6+512*TASK_7+256
 ここより、コンパイラーが静的変数を割り当てて行きます。実装しているタスク の数により、アドレスが変化します。  スタックの大きさを変える場合に、"MT_S TAK.H""STAK_EREA_0    DS   512"と合わせて変更する必要が有り、 一応ここでは、512Byt確保してあります。このままでたいていのプログラムは 問題なく動作するでしょうが、動的変数を多量に使用する時は、大きくして下さい。
 例えば、タスク”0”のスタックを1024Bytに変更するときは、
RAM_TOP		EQU	STAK_START+512*TASK_0+512*TASK_1・・・・・・・・・・
これを
RAM_TOP		EQU	STAK_START+1024*TASK_0+512*TASK_1・・・・・・・・・
と同時に"MT_STAK.H"
STAK_EREA_0	DS	512
これを
STAK_EREA_0	DS	1024
に変更します。

目次に戻る


;************************************************************************
;*									*
;*	マルチタスクOS						*
;*									*
;*	start_mt.h	Vr1.00		97/01/20			*
;*									*
;************************************************************************

TASK_0		EQU	1	;実載タスクを1にする
TASK_1		EQU	1
TASK_2		EQU	0
TASK_3		EQU	0
TASK_4		EQU	0
TASK_5		EQU	0
TASK_6		EQU	0
TASK_7		EQU	0

;*****************************************************

SYSTEM_TOP	EQU	08000H

STAK_START	EQU	08100h

RAM_TOP		EQU	STAK_START+512*TASK_0+512*TASK_1+512*TASK_2+512*TASK_3+512*TASK_4+512*TASK_5+512*TASK_6+512*TASK_7+256

;*****************************************************


		ORG	0000h

		DI
		LD	SP,STAK_START_SYS
		CALL	MT_INIT
		CALL	__TASK_INIT
		JP	TASK_START


__st_loop__:	DI
		nop
		JR	__st_loop__




		ORG	0050H

CTC_VECTER	DW	TASK_CHANG
		DW	DUMMY
		DW	DUMMY
		DW	DUMMY


		ORG	0066H

		JP	0000H


		ORG	00A0H

DUMMY:		EI
		RETI

		ORG	0100H



目次に戻る