◆◆◆ポケコンとパソコンをつなぐ設定(BASICのようなテキストのみ)◆◆◆
パソコン側設定
高松製作所様のところにはハイパーターミナルで・・とあるけど
vistaにはありません。
ewterm2000 Ver1.32a というターミナルのフリーソフトで代用しました。作者様に感謝します。
各項目の設定は
設定の通信
ポートCOM3 速度9600 パリティなし ストップ1ビット ビット長8ビット
送信ウエイトなし フローXON/XOFF 改行 CR+LF コードは全部 シフトSJIS
設定の環境
基本 プロトコル 無手順
設定のディレクトリ
アップロード、ダウンロード テキストファイルのフォルダを任意に設定
としました。
ポケコン側設定
POKE &BFD35,0,255,0,80
OPEN "9600,N,8,1,A,L,&1A,X,S":CLOSE
としました。OPEN$で確認できます。
送るには
ポケコン側 LOAD リターン
パソコン側 転送からテキスト送信−ファイル選択−無手順
受けるには
パソコン側 転送から受信−ファイル名入力−送信
ポケコン側 SAVE リターン
これでできました。
反応が無い、終わらないなど、安定しない面がほんのちょっとありますが
ソフト再起動で回避できます。
ソフト切り替えやスクリーンセーバにからむところを考えるとこれは
vistaの問題であるようです。
◆◆◆文字のグラフィックを変更する◆◆◆
一般的にカナ文字が変更に使われると思います。
以下はカナ文字 ア を自前のグラフィックに変更する方法です。
&BFE40以下192バイトは自由に使える空間で、ここに自前の
グラフィックデータをいれます。
POKE &BFE40,&50,&20,&10,&0E,&0A,&0C
次にカナ文字のグラフィックデータが入っているアドレスを指定する
部分がありますので、そこに今回の&BFE40から入れたデータを指定します。
この時 &BFDDA を指定していますが、それは、ア にくる部分の
位置を考えてのことです。
POKE &BFC93,&DA,&FD,&B
以上で ア のグラフィックを変更しました。(鍵の絵のつもり)
直す場合
CTRL + +/- 又は
INIT"SRCN: return
で直してください。
いじられたカナを直す場合、
CTRL + +/- 又は
INIT"SRCN: return
を使いますが
プログラム中では再度、カナ文字のグラフィック指定アドレスを正規の物に指定し直す事が必要です。
この時、先の表にある番地が有効になります。
つまり
PEEK&FFFF0の値 カナ文字の正しい番地を指定
1 or 2 POKE &BFC93,&58,&25,&F
3 or 7 POKE &BFC93,&65,&25,&F
4 POKE &BFC93,&C3,&24,&F
6 POKE &BFC93,&95,&25,&F
8 POKE &BFC93,&40,&05,&3
となります。
◆◆◆ファンクションキー(キーバッファ関係中心)◆◆◆
■key0,???
キーバッファにデータを入れる。???に入れる。
例 CHR$0+CHR$??
4 offキーを押したのと同じ
15 オートoff
6 menuに戻る
&4e 下のkeylistが出る
5 runからproへ
&cf カナに戻す
&60 クリック音ON/OFF
&61 リピートON/OFF
&25 AER
&26 CAL
&1E DEG->RAD->GRADー>・・・
■入力後、編集
key0,A$:input a$
■RCL
key0、chr$0+chr$144
で前押した、又は最後の数値が表示される。
■16進数の訂正
key0,"&"+hex$A:INPUT"???";a$
a=eval a$
■リプレイに使う
ENDの前にkey0,"RUN"とすると、リターンキーでリプレイ
■key0の内容の場所
&BFD1Aの指す番地&ECから後にkey0の内容がある
■プログラム中でrun、proモードの区別をなしにする
例
A$=CHR$0+CHR$5
b$=CHR$13
key0,a$+"list"+B$
・・・・runからproへ、そしてリスト表示
応用例
"FI."+CHR$34+"E:"+B$+CHR$31+"LY"+"G.10"+B$
E:をfileして下に移動後ロードし10行目から実行。
RUNは文中使えない。
"L."+STR$i+B$+CHR$28+CHR$24
i行の最後尾にいく
■ファンクションキー登録
CHR$&H81-&H9F
&HE0-&HEF は、普通登録できない。
例 KEY1,CHR$81+CHR$82
ようするに2つならべると、できる。
◆◆◆音関係◆◆◆
■音長指定
(Hz)=25600/(90+4*a)
aは音の高低指定データ。半音ずつ変化する。 これに流す秒数をかける。
■音関係その1
T=150
L=38400/T
beep1,N,L/(22+N)*S
四分音符 1
八分音符 0.5
全音符 4
■音関係その2
マニュアルの高低指定値の周波数・・・・s
テンポ・・・・・t
四分音符は58*s/t
例 ド BEEP1,222,58,216.8/T
四分休符
forW=1to44118/T:next(nextWは駄目)
■beep
print chr$7 beep1と同じ
■音を消す
11ピンの1番と2番をつなぐ。
絶えず1mA流れるので必要の無いときははずす。
■音を消す2
11Pコネクタ2番7番からイヤホンに
◆◆◆本体の設定など◆◆◆
■poke&fd,&xx
xx ・・・・ 12 クリック音変化
01 キーリピート速度変化
04 カーソル速度変化
08 全ての機能停止
00 クリック音変化、カーソル速度向上
■画面のon,off
off poke&2000,&3E
on poke&2000,&3F
■パワーオフ
poke&BFE00,8,0,&41:call&FFFDC
又は key0,chr$0+chr$15
■文字反転
poke&BFCA1,&40
もどすのは&0
■width設定
poke&BFC9D,40から1まで。
はじめは40
■行数制限設定
poke&BFC9E,4から1まで。
はじめは4
C-CEキーを押すとファンクションキーを表示して元に戻ってしまいます。
■キーを押さえてからリピートするまでの時間
poke&BFCBA,1から255まで
始めは43
■リピートの時間
poke&BFCBB,1から255まで
始めは4
■テープの音待ち
poke&BFD48,??
始めは80
■インサートモードのキャラクタをハートに
poke&BFC84,&1c,&28,&F
◆◆◆その他◆◆◆
■メモリ
E500、E550において、&BFE40より数バイトはフリー
&BFF00まで192バイト(&C0バイト)
小さいマシン語、キャラクタ変更データ入れるのに使用できます。
■外部電源
11Pコネクタ上から2番に+3番に-
乾電池4本直列分 300mA6Vいれる
■シンボルランプ点灯
E=&B8
poke&2008,E:poke&2008,&7f
a=PEEK &200B:A=PEEK&200B:ifA<>3 LET E=E+1
poke&2008,E:poke&2008,&7F
poke&200A、????
注a=PEEK &200Bはダミーリード。レーンを調べてあわせている。
3がAレーン、8がBレーン、24がCレーン
A 0 PBL PRO RUN BUSY
B 2rdF CAPS HYP カナ 小文字
C DE G RAD E PRINT
D 0 0 0 0 BATT
画面戻すのはPOKE&2000,&3F
■縦横比
31/28=1.107
■S1:に機械語セーブ
そのサイズのファイルを作っておく。
open"S1:MASHINE.BIN"for outputAS#1
print#1,そのサイズ分のデータ
close
のちに、savem"S1:MACHINE.BIN",番地
■BTEXT$について
初期値="S1:TEXT.BAS"
変更するとTEXT.BASの時が保存されたまま
他のプログラムが入力できる。
■エンジニアソフトウェア禁止
BTEXT$="ENG.$$$"なので
SET"ENG.$$$",Pとする。解除は、," "
■高速化改造
CPU・SC62015の上にある2.3のセラロックを3.00へ切り替える
1.31倍速くなる。
■キー入力
INKEY$1 INKEY$と同じ
INKEY$0 キー入力があるまでまつ。
しかしE500以外で動かないので使わない事が大事
INPUT$(入力文字数) 上に同じだが入力文字は表示されない。
INPUT$1 括弧無くても動く
■画面転送
copy"S1:funckey"to"scrn:"
でファンクションキーの内容が画面転送される。
data.basにすると変数データを参照できる。
■コントロールキーでちょっと楽に入力
CTRL+E カーソル以降消去(使えます)
CTRL+H BS
CTRL+K HOME
CTRL+L CLS
CTRL+M CR
CTRL+R INS
CTRL+U そのカーソルでうったところ消去
◆◆◆BASICテクニック関連◆◆◆
■for、next
fori=0to1step0
この間が無限ループになる。
next
■\、modを使いたい
a \ b = int(a/b)
a mod b = a-int(a/b)*b
■-1or1
=(RND2-1)*2-1
■ハイパーオリンピック技
k$=inkey$:if i$<>k$ LET y=y+1:i$=k$
前後をループさせる
■四捨五入
CINT(A)=INT(A+0.5)
■16=>2進データ変換
clear:cls
input w$:e=eval ("&"+w$)
t=128:fori=0to7:
a$=a$+chr$(&7F-((E AND t)<>0)*8)
t=t/2:next
print a$
注
変数 t を使わず
a$=a$+chr$(&7F-((E AND 2^(7-i))<>0)*8)
でもOK
a$=a$+chr$(&30-((E AND 2^(7-i))<>0))
とすると0、1で表現されます。
■RND命令 初期化
R=RND-1で乱数列を初期化する
■nextについて
nextの後の変数を書くか書かないかでスピードが異なる
■A=-1,1,-1,1・・・・
Z=1-Z:A=Z*2-1
良く考えれば、A=1:A=-A
■文字列1字挿入
1<=A<=LEN B$の範囲にある時
B$=LEFTt$(B$,A-1)+"?"+RIGHT$(B$,LENB$-A)
■0について
0は&でよい。メモリの短縮になる。スピードは犠牲になる。
■for、nextの時間差測定
fori=0to500:???:nextで実験
なお、ループ自体はfori=&to&1f4:???:next
としても時間は変わらない。
???で
A=0 43秒
A=& 44秒
a=&0 45秒