2013年12月14日土曜日

EISA領域の削除

無駄に使われている領域


コマンドプロンプトで削除作業をします。
diskpart
list disk          ディスク確認
select disk ?        ディスクを選択
list partition        パーティションを選択
select partition ?      削除パーティションを選択
list partition        [*]のチェック
delete partition override  パーティションを削除
list partition        確認
exit             終了




コンピュータの管理画面で確認

2013年12月7日土曜日

G850V DTMFデコーダー

DTMFテーブル
HIGH (Hz)
1209133614771633
LOW (Hz)697123A
770456B
852789C
9410#D

回路図


部品表
   IC     CM8870PI
   クリスタル 3.58MHz
   抵抗    100kΩ
   抵抗    300kΩ
   コンデンサ 0.1μF
   マイク   高感度マイクアンプキット(秋月)
   LED     3mm(赤、緑)
   抵抗    200Ω

製作 DTMFレシーバIC [ CM8870PI ] はデコードトーンをQ1(11pin)からQ4(14pin)の4ビットデータとして出力される。さらに信号の解析に成功すると、1StD(15pin)がHiになる。したがって、StDがHiになったときのQ1~Q4の4ビットを読み取り、対応のキーをディスプレイに表示させる。
KEYQ4Q3Q2Q1
10001
20010
30011
40100
50101
60110
70111
81000
91001
01010
1011
#1100
A1101
B1110
C1111
D0000

緑LEDは電源、赤LEDはStDに繋がっています。
プログラム的には、信号を受信するとKEYを表示し、
[CLS]キーで画面消去、[SPACE]キーで改行を行う。


10 OPEN "PIO:"
20 PIOSET &H1F                4~8pinを入力モードに設定
30 DIM KY$(15)*1                        KEY定義
40 FOR I=0 to 15
50 READ KY$(I)
60 NEXT I
70 DATA D,1,2,3,4,5,6,7,8,9,0,*,#,A,B,C

100 WHILE 1
110 A=PIOGET
120 IF A<16 THEN SD=0
130 IF (A>=16)*(SD=0) THEN PRINT KY$(A-16);:SD=1:T1=1:T2=1
140 Z$=INKEY$:Z=ASC Z$
150 IF (Z=&H02)*(T1=1) THEN CLS:T1=0        CLSキーで画面クリア
160 IF (Z=&H20)*(T2=1) THEN PRINT "":T2=0      スペースキーで改行
170 WEND


G850V 11pinコネクタと入出力

11ピンインターフェース

デフォルト
open "LPRT:"
パラレル
open "PIO:"
シリアル
ピン番号ミニI/OI/O8ビット制御I/OUARTI/O
1
2GND(+5V)
3VGG(0V)
4BUSYOI00I/ORSORequest to Send
5DoutOI01I/ODROData set Ready
6XinII02I/ORDIReceived Data
7XoutOI03I/OSDOSend Data
8DinII04I/OCDICarrier Detect
9ACKII05I/OCSIClear to Send
10EX1I06I/OEROEquipment Ready
11EX2I07I/OCIICalling indicator


コマンドリファレンス(BASIC)・・・PC-G850Sの取説より

ミニI/OINP機能 入力ポート(Xin、Din、ACK)からの入力関数
書式 INP
説明 Xin=4、Din=2、ACK=1の重みを持ち、10進数で0~7の値を返す。
例1 Xin=Lo、Din=Hi、ACK=Hiの時、INPの値は3
例2 50 IF INP AND 2 THEN 50
   Din=Loであれば次の行に移り、Hiであれば50行を繰り返す。
OUT機能 出力ポート(BUSY、Dout、Xout)への出力命令
書式 OUT
説明 BUSY=4、Dout=2、Xout=1の重みを持ち、10進数の0~7の値で指定
例  OUT 6
   BUSY=Hi、Dout=Hi、Xout=Loとなります。
OPEN機能 出力デバイスを指定
書式 OPEN "LPRT:" ミニI/O
   OPEN "PIO:"  8ビットパラレル
   OPEN "COM1:" 不明:シリアル?
CLOSE機能 デバイス指定を解除
書式 CLOSE
説明 OPEN 状態を解除
8ビット制御PIOSET機能 各信号の入出力モードを設定
書式 PIOSET 式
説明 式は8ビットに変換され、対応ビットが1の時、入力。0の時、出力
     ビット0 BUSY
     ビット1 Dout
     ビット2 Xin
     ビット3 Xout
     ビット4 Din
     ビット5 ACK
     ビット6 EX1
     ビット7 EX2
例  PIOSET &HF0 = PIOSET 240
   Din、ACK、EX1、EX2が入力モード。他は出力モード。
PIOGET機能 入力ポートからの8ビット入力関数
書式 PIOGET
説明 PIOSET命令で入力設定された端子からのデータを読み取ります。
   値は0~255になります。
   出力設定された端子は、常に0になります。
PIOPUT機能 出力ポートへの出力命令
書式 PIOPUT
説明 PIOSET命令で出力設定された端子からデータを出力します。
   一回の命令で0~255の値を1回だけ返します。
   入力モードに設定されている端子は、無視されます。

注意.入出力機器を製作する場合は入出力ライン(EX2~BUSYライン)に必ず保護抵抗(1kΩ以上)を取り付けてください。


LED点灯テスト

     
ミニI/Oサンプル          8ビット制御サンプル
10 OPEN "LPRT:"               10 OPEN "PIO:"
20 A=INP                  20 PIOSET 52
30 OUT A                  30 A=PIOGET
40 GOTO 20                 40 IF A=4 THEN PIOPUT 1
                      50 IF A=16 THEN PIOPUT 2
                      60 IF A=32 THEN PIOPUT 8
                      70 PIOPUT 0
                      80 GOTO 30

G850V 外部記憶装置

Gadget Factoryさんのサイトで紹介されていたポケメモです。
秋月で部品が全部そろうことから作ってみました。

メモリICを4個に減らし、容量128KB。およびDCジャック廃止で作りました。

製作


動作確認

ポケメモ初期化
  プッシュスイッチを押しながら電源を入れ、
  もう一度プッシュスイッチを押す。
  初期状態:通信速度=1200bps、メモリ個数=1
ポケコンの通信設定
  [ TEXT ]ボタン→[ Sio ]→[ Format ]
     baud rate   = 1200
     data bit    = 8
     stop bit    = 1
     parity     = none
     end of line  = CR LF
     end of file  = 1A
     line number  = yes
     flow      = RS/CS

コマンドの入力
  [ TEXT ]ボタン→[ Del ]
  [ TEXT ]ボタン→[ Edit ]
     10set 9600 4
コマンドの送信
  [ TEXT ]ボタン→[ Sio ]→[ Save ]
ポケコン側の通信速度変更
  [ TEXT ]ボタン→[ Sio ]→[ Format ]
     baud rate   = 9600
ポケコン側コマンドの受け入れ
  プッシュスイッチを押す

状態確認

コマンドの入力
  [ TEXT ]ボタン→[ Del ]
  [ TEXT ]ボタン→[ Edit ]
     10stat
コマンドの送信と情報の受信
  [ TEXT ]ボタン→[ Sio ]→[ Save ]
  すぐにLEDが情報の受信要求状態になるので
  [ Load ]
  を選択する。
内容の表示
  [ TEXT ]ボタン→[ Edit ]

G850V エミュレータg800

PC上で実行できるエミュレータがありました。
SHARP PC-G850/G815/E200エミュレータ g800 version 0.9.9

1.g800win32.0.9.8.zipとcopyrom.zipをダウンロードして解凍


2.ROMイメージをPCに転送

copyrom フォルダ内の manual.txt に従って転送します。
当初、copyg850.hex を copyg850.dat にリネームして転送しようとしたが上手くいかない。そこで、copyg850.asmを転送後アセンブルして、ようやくマニュアルどおりに進行した。

PC-G850Vの場合 A=0,1,2,3,・・・・,E,F,10,11,12,13,14,15
ファイルは base.txt,rom00.txt,rom01.txt,・・・・・,rom15.txt
(全23ファイル)

転送したファイルは[ g800win32 ]フォルダ内に[ G850Vrom ]フォルダを作り保存します。
   g800win32
     ├ G850Vrom    ROMイメージファイル
     └ RAM       RAMエリア
       g800.exe    実行ファイル
       g800config   環境設定ファイル


3.g800configの編集

#ROMイメージのあるディレクトリを指定
   rom_dir G850Vrom
#RAMファイルパス名
   ram_path RAM
#CPUクロック周波数(kHz)
   clock 8000
#ソフトウェアキーを使うか
   software_key y

※キー割り当ての変更
[ g800config ]内の[ #キー ]で変更することが出来ます。
通常ではノートPCのようなテンキーの無いキーボードでは数字の入力すら出来ません。ソフトウェアキーに有るものは省き、数字を指定します。その他、よく使いそうな物も空いているキーに指定。

4.実行

G850V USBシリアルインターフェース

1.製作

ポケコン情報サイト 【Kazuchi Software】を参考に作りました。
(閉鎖されたみたいです)
1.基盤
2.FT232RL USB-シリアル変換モジュール
  (秋月 K-01977)
3.丸ピンICソケット(24P)[600mil]
4.ピンヘッダ L型 1x11
5.LED(黄、赤、緑)
6.抵抗330Ω 3ヶ

最後のページにサラッと書いてあった電源、送信、受信のLEDも付けます。
LEDの電流制限抵抗はデータシートでは270Ωですが、手持ちで近い値を使用。


2.USBドライバ(VCP)のインストール

Virtual COM Port Drivers

USBシリアルインターフェースをPCと接続し、[新しいハードウェアの検出ウィザード]でファイル保存場所指定からインストール。USBドライバのインストール後、VCPドライバのインストールが始まり、同様に場所指定からインストールする。デバイスマネージャの[ポート(COMとLPT)]で[USB Serial Port(COM ?)]を確認。ここでのCOMポート番号を控えておく。


3.EEPROM書込

FT_PROG 2.8.2.0 - EEPROM Programming Utility

3-1.FT_PROG.exeを起動しUSBシリアルインターフェースボードを接続

3-2.[Scan and Parse]アイコンをクリック


3-3.各種設定

[ I/O Controls ]で
    C3:RXLED#
    C4:TXLED#
に入れ替えます。
PCから送信したときRx LEDが点灯、ポケコンから送信するときにTx LEDが点灯するようになる。

3-4.[ Program Devices ]アイコンをクリック


3-5.[ Program ]ボタンをクリック


4.PCとの通信

PC側のソフトは PC-Gリンク を使用します。

・PC-G850V 通信設定
テキストエディタを呼び出し
   [ S ][ F ]
上下キーで項目移動、左右キーで設定変更、リターンキーで決定。
[ end of file ]のみキーボード入力
   baud rate   = 9600
   data bit    = 8
   stop bit    = 1
   parity     = none
   end of line  = CR LF
   end of file  = 1A
   line number  = yes
   flow      = RS/CS

[ ON ]キーを押すと設定から抜けます。

5.ファイル転送

_/_/_/ ポケコン → PC _/_/_/
   1.PC-Gリンクの受信ボタンを押す
   2.ポケコンのテキストエディタで
      [ S ][ S ]
_/_/_/ PC → ポケコン _/_/_/
   1.ポケコンのテキストエディタで
      [ S ][ L ]
   2.PC-Gリンクの送信ボタンを押す

G850V スピーカー内臓

BASIC言語とC言語でBEEP命令が使えるようになる。

ポケコン本体裏側、中央上にNAMEと書かれたシールを剥がすとφ20程の窪みがある。ここにスピーカー取り付けます。

JUNK品のワンダースワンからスピーカーを貰う


6ヶ所のネジを取り外す(要トルクスドライバー)


スピーカーは両面テープで固定。半田を溶かし、リード線ごと取り外します。


PC-G850V分解前に動作チェック。
11ピンコネクタの3番と7番に接続し、
   BEEP 3[RETURN]
ピー、ピー、ピーと3回鳴ればOK


リード線を通し、スピーカーを押し込む。


BZ+、BZ-というランドに半田付け。


ついでにDCジャックのリード線を入れ替えてセンタープラス仕様に変更。
秋月のACアダプターが使える。


完成。


BEEP命令

BASIC:BEEP n,s,d
C言語:beep(int s,int d,int n);
   n:回数・・・・・0~65535
   s:音階・・・・・0~255(小さいほど高音 230Hz~8kHz)
   d:音の長さ・・・0~65535

音階表(G850)参考
s周波数s周波数s周波数s周波数
ラ#246233.1
232246.9
218261.6105523.3491046.5212093.0
ド#206277.299554.4461108.7192217.5
194293.793587.3431174.7182349.3
レ#182311.187622.3401244.5162489.0
172329.682659.3371318.5152637.0
ファ162349.277698.5351396.9142793.8
ファ#152370.072740.0321480.0122960.0
143392.068784.0301568.0113136.0
ソ#135415.364830.6281661.2103322.4
127440.060880.0261760.093520.0
ラ#119466.256932.3241864.783729.3
112493.952987.8221975.573951.1
s = (1300000÷周波数-166)÷22

音の長さは周波数で指定する。
ラの音を1秒間鳴らすには
   BEEP 1,127,440[RETURN]
とします。(誤差あり)
ちなみに、テンポ60では4分音符の長さが1秒

2013年12月1日日曜日

1490UⅡ マシン語領域確保

確保したいバイト数を6桁の16進数で表し、2桁づつ区切ります。
例)4386バイト確保したい場合→(00 11 22)H
                  ↑ ↑ ↑
                  a b c
                 c  b  a
                 ↓ ↓ ↓

   POKE &BFE03,&1A,&FD,&B,&22,&11,&00[RETURN]
   CALL &FFFD8[RETURN]

マシン語の確保される領域の最終アドレスは、BFBFFH固定のため、
開始アドレスは
   BFBFFHー001122H+1
となる。


・開始アドレスの確認
BFD1AHからの3バイトに開始アドレスが格納されている。

   A=BFD1AH '下位
   B=BFD1BH '中位
   C=BFD1CH '上位
   PRINT HEX$ C;RIGHT$("0"+HEX$ B,2);RIGHT$("0"+HEX$ A,2)

1490UⅡ 外部コネクタ

PC-1490UⅡはCPUにSC-62015が使われており、CPU内部ラムに直接アクセスが可能。これによりオプション11pinコネクタやSIO15pinコネクタをコントロールできる。

SC-62015 ピンアサイン


オプション 11pin コネクタSIO 15pin コネクタ
PinCPU入出力Address,bitPinCPU入出力Address,bit
1MT21FG
2Vcc2SDTxDO
3Gnd3RDRxDI
4BUSYE6OF3H,64RSKO12OF1H,4
5DoutE10I/OF6H,2 / F4H,2ACK=Hiの時入力可5CSE2I/OF3H,2
6XinCIIFDH,BZ2,BZ1,BZ06N/C
7XoutCOOFDH,BZ2,BZ1,BZ07SGGnd
8DinE11I/OF6H,3 / F4H,38CDE1I/OF3H,1
9ACKE7IF5H,79N/C
10IO2E9I/OF6H,1 / F4H,1ACK=Hiの時入力可10Vc1Vcc
11IO1E8I/OF6H,0 / F4H,0ACK=Hiの時入力可 11RRKO13OF1H,5
12PARE0?/OF3H,0
13Vc2Vcc
14ERKO14OF1H,6
15PRQKO15OF1H,7
4pin:BUSY(E6)は出力専用だがF5H,6をHiにしたらどうなるのか、
9pin:ACK(E7)は入力専用だがF3H,7をHiにしたらどうなるのかは不明。

内部ラム 256byte
0123456789ABCDEF
00HWork Area
B0H
C0HSystem Reserved
D0Hblbhclchdldhsidi
E0HSystem ReservedBPPXPYAMC
F0HKOLKOHKIEOLEOHEILEIHUCRUSRRxDTxDIMRISRSCRLCCSSR


赤字は11pinコネクタ、青字は15pinコネクタ
Addressbit7bit6bit5bit4bit3bit2bit1bit0
KOH
(Key Output Buffer)
F1HKO15KO14KO13KO12KO11KO10KO9KO8
15pin14pin11pin4pin
EOL
(E-port Output Buffer)
F3HEO7EO6EO5EO4EO3EO2EO1EO0
4pin5pin8pin0pin
EOH
(E-port Output Buffer)
F4HEO15EO14EO13EO12EO11EO10EO9EO8
8pin5pin10pin11pin
EIL
(E-port Input Buffer)
F5HEI7EI6EI5EI4EI3EI2EI1EI0
9pin
EIH
(E-port Input Buffer)
F6HEI15EI14EI13EI12EI11EI10EI19EI18
8pin5pin10pin11pin
SCR
(System Control Register)
FDHISEBZ2BZ1BZ0VDDCSTSMTSDISC


CO、CI pinコントロール --- 直接コントロールするbitはなく、SCRレジスタのBZで指定する。
         BZ2  BZ1  BZ0   CO    CI
         0   0   0   Low    O(入力不可)
         0   0   1   High   O(入力不可)
         0   1   0   2KHz   O(入力不可)
         0   1   1   4KHz   O(入力不可)
         1   0   0   Low    I/O(入力可)
         1   0   1   High   I/O(入力可)
         1   1   X   CI    I/O(入力可)


※EO4 ( F3H,4 ) は必ずHighにしておく!LowにするとLCDが消灯します。

Basicからの使用例
F4H 番地に b'0000 1111' をセットする
poke &HF4,&HF (poke &F4,15) 5番8番10番11番pinから出力

1490UⅡ 日本語化

用意するもの
・RAM増設したPC-E500系ポケコン
・レベルコンバータ(自作)
・ポケコン用ソフトウェア
 (set、PLINKC、HMF、DEVICE、SCRNJPN、恵梨沙フォント、JFP)
・PC用ソフトウェア(APLINKS for Win32)
・USB-シリアル変換ケーブル(ELECOM UC-SGT)使用可能

RAM (E:)の確保が後々出来なくなるため、先に確保しておきます。
(64KB確保する場合)
   INIT "E:64K"


1.通信設定

[[ ポケコン側 ]] ノーマルクロックで設定
入力画面表示
通信設定確認OPEN$  
通信設定
※1
POKE &BFD35,0,255,0,80
OPEN "9600,,,,,,,X":CLOSE
  
受信待機LOAD
※1.baud rate 9600、フロー制御をXon/Xoff。
   通信エラーが起こる場合 baud rate を下げていく。

[[ PC側 ]]
ハイパーターミナル起動
新しい接続で適当な名前を付け、
   接続方法:COM?(レベルコンバータを接続したCOMポート番号)

[ファイル]→[プロパティ]
[ポートの設定]      [設定]          [ASCII設定]


[エンコード方法]
   Shift-JIS(S)

2.SET.BASのインストール

マシン語エリアを簡単に確保するプログラム

[ハイパーターミナル]→[転送]→[テキストファイルの送信]→"SET.BAS"
注)転送が終わってもポケコン側にプロンプト(">")が表示されないときは、
パソコンで[CTRL]+[Z](EOFコード)を入力する。

転送が終わったらポケコン側で
   RUN [RETURN]
16KB確保したいときは16Kと入力

3.PLINKとAPLINKS for Win32

ハイパーターミナルの転送ではマシン語ファイルの転送が行えない。
PLINKとAPLINKS for Win32を使えば、ポケコン側からPCのディスクを
"L:"ドライブとして扱える。

PLINKC.BASを転送(SET.BASを転送したのと同じ方法)
   RUN [RETURN]   →"S1:"に"PLINK.SYS"が作成される
   INIT "L:5"

[[ APLINKS for Win32 ]]
[設定]→[環境設定]
通信速度をポケコンの通信速度に合わせる

仮想ドライブ容量を512KBに設定


ポケコンから見たいディレクトリを開き、接続をクリック。ポケコンに
   FILES "L:"
と打ち込めば、仮想ドライブを見ることが出来る。

重要)切断するときは、必ず以下をポケコンで実行
   INIT "L:D"

4.HMFのインストール

HMFはファイラーです。

PCでAPLINKSを起動し、HMFのアーカイブの中身を仮想ドライブに
読み込んでおきます。ポケコンに
   LOADM "L:HMFINST"
   CALL &BF000
   COPY "L:HMFMDL.SYS" TO "S1:"
これでインストール終了。

起動は
   INIT "HMF:"

S1:にコピーした"HMFMDL.SYS"はHMFに付属のBLK2TOPでスロットの先頭に移動しておく。
   LOADM "L:BLK2TOP":CALL &BF800"S1:HMFMDL.SYS

[ PF5 ]キーへの登録
   KEY5,"INIT"+CHR$(&22)+"HMF:"+CHR$(&22)+CHR$13

5.SCRNJPNのインストール

PCでAPLINKSを起動し、DEVICE、SCRNJPN、恵梨沙フォントのアーカイブを仮想ドライブに読み込む。

HMFを起動し"L:"上の"DEVICE"の上でXキーを押す。
   (入力) DEVICE SCRNJPN.DVF

美咲フォントの導入
”MSKG13KU.FNT" をS1にコピーし "SCRNJPN.FNT" にリネーム
(※恵梨沙フォントを使う場合は "elisap10.fnt" をS1にコピーし "SCRNJPN.FNT" にリネーム)
"SCRNJPN.FNT" は "HMFMDL.SYS" と同様にはBLK2TOPでスロットの先頭に移動しておく。
   LOADM "L:BLK2TOP":CALL &BF800"S1:SCRNJPN.FNT

実行は
   INIT"SCRN:JS"
※文字化けの時も実行する。(所有機では頻繁に使います)
[ PF4 ]キーへの登録
   KEY4,"INIT"+CHR$(&22)+"SCRN:JS"+CHR$(&22)+CHR$13

6.JFPのインストール

PCでAPLINKSを起動し、JFPのアーカイブの中身を仮想ドライブに読み込んでおきます。ポケコンに
   POKE &BFE03,&1A,&FD,&B,0,&2C,0
   CALL &FFFD8
   LOADM "L:JFPINST"
   CALL &BD000
S1 に "JFP.SYS" というメモリ・ブロックが作成されていればインストール終了。

"JFP_TAN.DIC" と "JFP5K.DIC" の2つのファイルを S1 にコピーする。
"JFP5K.DIC" を "JFP.DIC" にリネームすると日本語が使えるようになる。

※表示がおかしいときは
   INIT"SCRN:JS"
を実行する。

------------------------------------------------------------------------------------
その他のプログラム
・SET.BAS    1838             機械語領域確保
・M-AREA.BAS  185             機械語領域のアドレス表示
   転送しただけではLOAD時にエラー(LOADはされている)がでるので、
   再保存する。
・カンイモニタ.BAS   1006        BASICによるモニタプログラム
・GMON.     1235 &BE000 - &BE4C2  銀行君モニタ ver1.03
・KTERM.      3480 &BD000 - &BDD87  日本語ターミナル ver3.01
・ASM.      4469 &BEA9B - &BFBFF  アセンブラ
   ASM.BASを読込、RUNで実行。その後 SAVE M "E:ASM",&HBEA9B,&HBFBFF,&HBEA9B

PC-1490UⅡ / PC-G80V 仕様

学生の時に強制的に買わされた1490UⅡとジャンクで買った850V。
共にSHARP製。

PC-1490UⅡPC-G850V
発売年1991年2002年
CPUSC-62015S1L50752F25N0(Z80)
クロック周波数2.3MHz8MHz
RAM64KB32KB
LCD240 x 32 dot
フルグラフィック
144 x 48 dot
フルグラフィック
ハイコントラスト
文字数40桁 x 4行24桁 x 6行
文字構成5 x 7 dot5 x 7 dot
言語BASICBASIC、C、CASL
Z80アセンブラ
PICアセンブラ
BEEP音255段階スピーカー無し
BASICで255段階サポート
大きさ(WxHxD)200 x 100 x 14 mm196 x 95 x 20 mm
重量265g(電池含む)260g(電池含む)
定格消費電力0.07W0.20W
RAM256化
クロック周波数(2.3⇔4.0MHz)切替式