ホーム 太陽光発電 無線 パソコン通信 ファミコン
迷路 PC−1245 MSX PC−9800 PDA


JP3TLC's homepage
PC−1245



← 「PC−1245」メニュー

PC−1245のプログラムの作り方

【1】プログラムの入力・実行の仕方
@右上のスライドスイッチを「PRO」のポジションにする。
ABASICの場合はそのままリストを入力する。 1行入力する都度、「ENTER」を押す。押すと、 行番号の横に:がついたり、命令の前後にスペースが入るなどの編集が自動的に行われる。
B アセンブラの場合はアセンブル時に出力されたダンプリストを見ながら PC−1245のマシン語操作(BASIC)で説明している POKE命令を使用して、番地とセットする値を入力する。カセットインターフェースを持っている場合は、 アセンブラでWAVファイルを作って読み込めば、自分で入力しなくてもよい。
Cプログラムの実行の際は、右上のスライドスイッチを「RUN」のポジションにして、 BASICの場合はRUN(ENTER)、マシン語の場合はCALL &○○○○(ENTER)と 入力する。
【2】画面に任意のドットを表示する方法
 &F800番地から&F83B番地までが液晶の左12桁、 &F868番地から&F87B番地までが液晶の右4桁の VRAMになっている(右4桁については、画面の右へいくほど若番)。 そこで、例えば2桁目の左上のドットを黒くするには、 BASICで「POKE &F805,1」 を実行すればよい。書き込む値を2にすると、 上から2つめのドットが黒くなる。 書き込む値を4にすると、上から3つめのドットが黒くなる。 書き込む値を127にすると縦1列が黒くなる。 ただし、BASICの命令実行中はLCDがOFFになるため、 実際に表示を目で見る場合には、POKE命令を実行した後に、 LCDをONにするBIOSを呼び出す「CALL &11E0」を 実行する必要がある。 また、プログラムが終了してしまうと、 ユーザが表示したものを全部消して、 コマンドプロンプトが表示されてしまうため、 LCDをONにした後に別の処理を行うか、 空のループで時間稼ぎをして、 プログラムがすぐに終わってしまわないように する必要がある。 BASICの実行中はVRAMがBASICの処理のための ワークエリアとして使用されるため、 左端には意味不明なドットが表示されることがある。 あまり左端の桁は使用しない方がよい。 (全部アセンブラで組んでいる場合は別) 

@BASICで2桁目から山田と表示してみる (スクロール可:スマホの方)
10 PRINT ""
20 POKE &F805,124,64,127,64,124,127,73,127,73,127
30 CALL &11E0
40 FOR A=0 TO 99:NEXT A
Aアセンブラで2桁目から山田と表示してみる (スクロール可:スマホの方)
	ORG	$C100
	LIDP	$F800	;DP←$F800
	LII	59	;I←59(…5×12−1)
	LIA	0	;A←0
	FILD		;(DP)〜(DP+I)←A(…左12桁のクリア)
	LIDP	$F868	;DP←$F868
	LII	19	;I←19(…5×4−1)
	FILD		;(DP)〜(DP+I)←A(…右4桁のクリア)
	LIB	$00	;FONTのアドレスの上位(一度アセンブル後、改めて設定※)
	LIA	$00	;FONTのアドレスの下位(一度アセンブル後、改めて設定※)
	CAL	$11F1	;X←BA−1(…BIOSの機能呼出し)
	LIB	$F8	;B←$F8
	LIA	$05	;A←$05
	CAL	$11F5	;Y←BA−1(…BIOSの機能呼出し)
	LIA	9	;A←9
	PUSH		;スタックにAの値を入れる
TRAN:	IXL		;X←X+1,A←(X)
	IYS		;Y←Y+1,(Y)←A
	LOOP	TRAN	;スタックの値+1回ループ
	CAL	$11E0	;LCDをON(…BIOSの機能呼出し)
	LIA	$FF	;A←$FF
	PUSH		;スタックにAの値を入れる
	PUSH		;スタックにAの値を入れる
WWLP:	WAIT	$FF	;時間待ち
	LOOP	WWLP
	LOOP	WWLP
	RTN
FONT:	DB	124,64,127,64,124	;山
	DB	127,73,127,73,127	;田
※一度アセンブルしてFONTの配置されるアドレスを確定後、改めてその値をセットし、再度アセンブルする。
【3】音を出す方法
BASICの場合は、例えば「BEEP 3」とか入力すれば ピーピーピーと簡単に音が出るが、音程は変えられない。 アセンブラの場合は「12 5F 61 52 DF F1 E0」で よく耳をすますと「ぷち」という音がするので、 このルーチンをループさせればよい。 ループ内に適当なWAITを入れておくと、WAITが短いときは高い音が、 WAITが長いときは低い音が出る。また、WAITの時間を適切に設定すれば、 メロディの演奏も可能である。

(音を出すプログラム(スクロール可:スマホの方))
	ORG	$C100
	LIA	$FF	;A←$FF
	LIDP	ONTEI	;DP←ONTEI
LAB1:	STD		;(DP)←A
	LIA	5	;A←5
	PUSH
LAB2:	LIP	$5F	;P←$5F
	ORIM	$52	;(P)←(P)or$52
	OUTC
	CAL	$11E0
	LIDP	ONTEI	;DP←ONTEI
	LDD		;A←(DP)
	LP	$00	;P←Iレジスタ
	EXAM		;(P)←→A
	LIDP	$4000	;DP←$4000
	FILD		;(DP)〜(DP+I)←A
	LOOP	LAB2
	LIDP	ONTEI	;DP←ONTEI
	LDD		;A←(DP)
	DECA		;A←A−1
	JRNZM	LAB1	;IF Z=0 THEN LAB1
	RTN
ONTEI:	DS	1
※低い周波数から高い周波数まで上がっていく効果音が出ます。
【4】キースキャンする方法
 BASICの場合、INKEY$を利用できる。アセンブラの場合は、 &1F44をコールすると、その時点でキーが押されていれば、キャリーが立つとともに結果がAに入る(B、DP、K、L、P、Q、X、Mが破壊される)。 ただし、これらの方法は、同時に2つ以上のキーを押すと、何も押さなかったのと同じになってしまう。
 複数キーが同時に押されていることを判別するには、スキャンしたい行を 1にして、OUTA(とOUTB)を実行し、直後にINAを実行する。 すると、押されているキーに対応するビットが1になっているので、あるキーが押されているかどうか、判別できる。この方法は、複数キーが同時に押されても判別できるが、何のキーが押されているかは個々に調べなければ分からない。

キーマトリクス
← 「PC−1245」メニュー
このホームページの内容についてのご意見ご感想は jp3tlc@jarl.com までお願いします。

ホーム 太陽光発電 無線 パソコン通信 ファミコン
迷路 PC−1245 MSX PC−9800 PDA