私は1991年ぐらいまでポケコンに入れ込んでいましたが
マシン語をまるで使えないヘタレでした。
努力してみましたが、おぼえることを断念してます。
それもあってか、TYーDOS、PLINKなど重要そうな
ものまで全く導入しませんでした。
それと91年ごろ?壊れてしまったせいで、その後の技術については
全くわかりません。
つまるところ漢字をいれるとか、常駐ソフトとか、そういった
事はまるっきり知らないのです。(最近知ってビビりました)
ですので過度な期待はしないでください。

ここにあるメモは、

◆ポケコンとパソコンをつなぐ設定
◆エミュレータについて
◆文字のグラフィックを変更する

以上の3つは今回記述

その他の部分は
小技をまとめたメモ帳から抜粋した物が主体となっています。
(当時穴のあくほど見ていたPJから読者が投稿した物などです)
このメモを使っていろいろプログラムを組んでいました。

なにかの参考になれば幸いです。



ポケコンとパソコンをつなぐ設定
エミュレータについて
文字のグラフィックを変更する
文字のグラフィックを変更する2
ファンクションキー(キーバッファ関係中心)
EVALの用法
同時キー読み(簡略)
音関係
本体の設定など
その他
BASICテクニック関連


2008/01/09 
ご指摘部分をちょっと訂正しました(16進=>2進部分)。
まだまだ直す所がちょろちょろしてますので
時間見てちょくちょく直していく予定




◆◆◆ポケコンとパソコンをつなぐ設定(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の問題であるようです。




◆◆◆エミュレータについて◆◆◆


吸出しに3時間半かかりました。9600bpsなので注意が必要です。

パソコン エミュ間のデータ移動方法(バイナリ除く)

□取り込む
si.dat内に、入れたいベーシックをテキストのコピーアンドペーストでそのまま入れます。
このファイルはデフォルトで実行ファイルのフォルダにあります。
エミュ上で LOAD"COM:" これで読み込まれます。

□取り出す
エミュ上で SAVE"COM:"
これで so.dat内にテキストデータとして入ります。 





◆◆◆文字のグラフィックを変更する◆◆◆

一般的にカナ文字が変更に使われると思います。
以下はカナ文字 ア を自前のグラフィックに変更する方法です。

&BFE40以下192バイトは自由に使える空間で、ここに自前の
グラフィックデータをいれます。

POKE &BFE40,&50,&20,&10,&0E,&0A,&0C


次にカナ文字のグラフィックデータが入っているアドレスを指定する
部分がありますので、そこに今回の&BFE40から入れたデータを指定します。
この時 &BFDDA を指定していますが、それは、ア にくる部分の
位置を考えてのことです。

POKE &BFC93,&DA,&FD,&B


以上で ア のグラフィックを変更しました。(鍵の絵のつもり)

直す場合
CTRL + +/-  又は
INIT"SRCN:  return
で直してください。




◆◆◆文字のグラフィックを変更する(詳細)◆◆◆

E500シリーズは
PEEK&FFFF0 にて機種(又はバージョン)が調べられます。
文字のグラフィックを指定しているアドレスは機種によって異なります。
こんな感じです。

&FFFF0の値 1 2 3 4 6 7 8
格納番地 ASC値 E500 E500 E500,BL 1480U 1490U,U2 E550 E650
BFC87 00〜1F F2198 F2198 F21A5 F2103 F21D5 D21A5 30000
BFC90 20〜7F F2258 F2258 F2265 F21C3 F2295 F2265 300C0
BFC8A 80〜9F F2498 F2498 F24A5 F2403 F24D5 F24A5 30300
BFC93 A0〜DF F2558 F2558 F2565 F24C3 F2595 F2565 303C0
BFC8D E0〜F0 F26D8 F26D8 F26E5 F2643 F2715 F26E5 30540
いじられたカナを直す場合、 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つならべると、できる。






◆◆◆EVALの用法◆◆◆


■例1
print right$("0"+hex$ A,2)

これと同じ事が

h$="ri.(hex$(a+256),2)"
print eval h$

でできる。

■例2
a$="A.I.$ 1-48"
a=eval a$
キー入力待ちになり、0ー9を押すと0ー9の値を得る。





◆◆◆同時キー読み◆◆◆

例
10 poke&fb,&a,&0
20 poke&f0,xx,0
30 print peek &F2
40 goto 30

20行目のxxが&20の場合

押されたキー	返ってくる値
RCL		1
hyp		2
HEX		4
EXP		8
7		16
4		32
1		64
0		128

同時に押された場合、数値の合計が返ってくる。

解除はpoke&fb,&e3





◆◆◆音関係◆◆◆

■音長指定

(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秒






※不必要としか思えない内容、全く理解できない内容など、内部RAM関連、BTEXT$、MEM$、reservedに関してかなりの部分割愛しました。
 ある程度確認しましたが、確認しきれていない部分もかなりあります。ですのでこの情報に関する質問にはほとんど答えられません。
 全て自己責任にてお願い致します。
TOPへ戻る