万願寺の吉日日記


ザウルスに関することなど気まぐれに書いています。<><><><><>

新規投稿
過去記事 >>次月

こんにちは、はじめまして

at 2002 04/02 23:47 編集

どうも、こんにちは。万願寺です。
たくさん来てもらってるのに何にもできてなくて申し訳ないです。
アプリ(電卓)が出来るまでって言ってたら、どこやらのプライベートページみたいに、1年以上ほったらかしってことにもなりかねませんので、作成状況くらいアップしようかと思っています。
今後ともよろしくお願いします。

何故電卓か

at 2002 04/03 00:01 編集

私、E1を使ってるんですが、E1の電卓ってキーが小さいですよね。ちょっと電卓を使うってくらいでスタイラス出しませんから爪でキーを叩くんですが、非常に叩きづらい。(一時はスタイラス代わりに爪を尖らせてたくらいです)
で、もっとキーの大きい電卓が欲しいというのが作成動機です。

しかし、L1以降キーの大きい電卓になった見たいやし、一般的には必要ないかもとも考えられるんですが、私には一番必要なアプリということで・・・。

ただ、作り始めてわかる、ただの電卓っていうのはすごい(作るの結構大変)。

電卓その1(キーの表示)

at 2002 04/03 22:02 編集

まずは、キーの表示から作り始めたんですが、こんな感じです。
MAINXMAINYは横型対応への布石(^^)v

−−−−−−−ここから−−−−−−−
MAINX=0:MAINY=80
GOSUB *KEYDISP キー表示
END
REM *---------------------------
REM *キー表示
*KEYDISP
DIM VTAP(5-14-1)='7''8''9''/''C''4''5''6''*''(''1''2''3''-'')''0''000''.''+''='
FOR I2=1 TO 4
VL2=(I2-1)*35
FOR I1=1 TO 5
VL1=(I1-1)*45
COLORFG 200200200
BOXFILL MAINX+10+VL1MAINY+90+VL2MAINX+50+VL1MAINY+120+VL2
COLORFG 000
GCURSOR MAINX+20+VL1MAINY+100+VL2
FONT 8*16+1
PRINT VTAP(I1-1I2-1)
BOX MAINX+10+VL1MAINY+90+VL2MAINX+50+VL1MAINY+120+VL2
COLORFG 255255255
BOX MAINX+11+VL1MAINY+91+VL2MAINX+49+VL1MAINY+119+VL2
COLORFG 505050
LINE MAINX+49+VL1MAINY+91+VL2MAINX+49+VL1MAINY+119+VL2
LINE MAINX+11+VL1MAINY+119+VL2MAINX+49+VL1MAINY+119+VL2
NEXT I1
NEXT I2
RETURN
−−−−−−−ここまで−−−−−−−


↓のリスト、カンマが全部飛んでます

at 2002 04/03 22:19 編集

というわけでこのまま複写貼付でザウルスもって行っても動かないと思います(動いてもキーが表示されるだけですが)。
修正版は・・・アップしません。ごめんなさい。

インクワープロ経由でザウルスから送信した(と思う・・・何度か回線エラーでどれが通ったのかわからない)んですが、どっか間違えたんやろうと思います。

その2は、明日かな・・・

at 2002 04/04 19:40 編集

ここへの書き込みをするのに、ザウルスだけでしようと思って、ブラウザに文章を貼り付けようとすると、メモリが足らないとか言って拒否される。

で、クリップリンクの光経由でXPからアップしてるんですが、クリップリンクはすごくいいソフトで大変重宝させてもらってるんですが、XPの調子が大変よくない。しょっちゅう固まったり光らなかったり・・・

安定性抜群やなかったんかい!

2000からのアップグレードなんですが、やっぱりMSのOSは使い込むほどにあくが出る・・・DOSが一番安定してたんかな〜。

でも後戻りは出来ません。ユーザーの切り替えがすごく便利>XP

電卓その2(キー押下げ表示)

at 2002 04/04 21:30 編集

プログラムを作るときは、まず見栄えから。と言う訳で、キーを押したときの動作です。

−−−−ここから−−−−
MAINX=0:MAINY=80
GOSUB *KEYDISP キー表示
*KEYIN SYNC キー入力
IF PADONB GOTO *KEYEND
IF PEN=0 THEN GOTO *KEYIN
GOSUB *KEYONOFF キー押下表示
GOTO *KEYIN
*KEYEND
END
REM *---------------------------
REM *キー押下表示
*KEYONOFF
REM ===押さえたら===
VTAPX=INT((PENX-MAINX-10)/45)
VTAPY=INT((PENY-MAINY-90)/35)
COLORFG 505050
BOX MAINX+11+VTAPX*45MAINY+91+VTAPY*35MAINX+49+VTAPX*45MAINY+119+VTAPY*35
COLORFG 255255255
LINE MAINX+49+VTAPX*45MAINY+91+VTAPY*3549+MAINX+VTAPX*45MAINY+119+VTAPY*35
LINE MAINX+11+VTAPX*45MAINY+119+VTAPY*35MAINX+49+VTAPX*45MAINY+119+VTAPY*35
*KEYOUT SYNC
IF PEN=3 THEN ELSE GOTO *KEYOUT
REM ===離したら===
COLORFG 255255255
BOX MAINX+11+VTAPX*45MAINY+91+VTAPY*35MAINX+49+VTAPX*45MAINY+119+VTAPY*35
COLORFG 505050
LINE MAINX+49+VTAPX*45MAINY+91+VTAPY*35MAINX+49+VTAPX*45MAINY+119+VTAPY*35
LINE MAINX+11+VTAPX*45MAINY+119+VTAPY*35MAINX+49+VTAPX*45MAINY+119+VTAPY*35
RETURN
−−−−ここまで−−−−

↓やっぱりカンマが全部飛んでます

at 2002 04/04 21:36 編集

このCGIの仕様かな?
あんまりリストはあげないようにします。

というわけで、疑ってごめんなさい>インクワープロ

次は入力数字の表示・・・

at 2002 04/06 06:30 編集

その3は入力した数字の表示の予定です。

とりあえずは押したキーを表示するだけなんですが、やっぱり右詰で表示したいので、右から左へ1字づつ押し出すような形になります。
というわけで配列変数に1字づつ格納して表示します。

あと944BASICの仕様で、変数に文字は入りますが、文字の入った変数を他の変数に代入すると、数値になってしまいます。
A='A'
PRINT A ・・・・「A」と表示
B=A
PRINT B ・・・・「0」と表示

表示数値を前0ではなくブランクにするために、当初配列に-1を入れてたんですが、演算のところで面倒くさいことになってしまったので、ただいまリストをちょっと変更中です。

電卓その3(入力数字の表示)

at 2002 04/07 17:14 編集

押したキーをそのまま表示するサブルーチンです。右詰めにするのと、12桁以上表示させないために、ちょっとだけ工夫しています。
−−−−ここから−−−−
MAINX=0:MAINY=80
DIM VDATA(131)
REM =VDATA(XY) Y:1[+-・・]0=1
VDATA(00)=0000000000000
GOSUB *KEYDISP キー表示
*KEYIN SYNC キー入力
IF PADONB GOTO *KEYEND
IF PEN=0 THEN GOTO *KEYIN
GOSUB *KEYONOFF キー押下表示
REM ↓12桁になるまで データ表示
IF VDATA(120)=0 THEN GOSUB *DATADIS
GOTO *KEYIN
*KEYEND
END

REM *---------------------------
REM *===データ表示===
*DATADISP
IF VTAPX>2 THEN RETURN 数字以外戻る
FONT 8*16+0
COLORFG 000
VDATA(00)=VTAP(VTAPXVTAPY)
REM *===一字送り、表示
VSP=0
FOR I=1 TO 12
VDATA(13-I0)=VDATA(12-I0)
GCURSOR MAINX+I*10MAINY
IF (VSP=0)*(VDATA(13-I0)=0) THEN PRINT ' ':GOTO *SP1
VSP=1
PRINT VDATA(13-I0)
*SP1
NEXT I
RETURN
−−−−ここまで−−−−

いよいよ計算。ところが・・・

at 2002 04/09 17:40 編集

さあ、いよいよお待ち兼ね(だれも待ってない・・)計算部分になるんですが、ここへ来て大きな障害が。
944BASICでは今のところ、数値変数は単精度しかないというのに気が付いたのです。つまり、8桁の演算しかできないので、12桁の電卓を作ろうと思うと、掛算からプログラムを組んで行かなければならない!

できるのか、12桁電卓!


つづく

実は加減乗までは出来てたりして

at 2002 04/09 23:35 編集

実はここ1週間ほどかかって、加減乗算までは、単精度変数で有効桁12桁の演算プログラムが出来上がりました。しかし、割り算がとっても難しい。ここ2,3日は寝てもさめても割り算ばっかり考えてたりして・・・。
しかし、何とかプログラム組めるめどが立ったんですが、少しかっこ悪いリストになりそう・・・
どうしようかな・・何れ944BASICが倍精度に対応してくれそうだしなと思っていた矢先、本日にも最新版がアップされそうなことが944さんのページに書いてありました。

いやあ、これですっぱり諦めがつく。倍精度を待ちます!

しかし、単精度で作った加減乗算のプログラムをどうしよう・・・せっかく作ったのでいずれここにリストでも出すかもしれません。

12桁乗算(単精度対応)

at 2002 04/11 08:34 編集

倍精度対応の944BASICをダウンロードしました。とーいうわけでこのルーチンは日の目をみなかった訳ですが、誰かが100桁電卓とか作るときの参考に、いちよのしときます。

−−−ここから−−−
DIM A(92)
A(00)=0000000000
A(01)=999999999999000000
A(02)=999999999999000000
REM =掛算=
FOR M=0 TO 3
FOR N=0 TO 3
A(N+M0)=A(N+M0)+A(N1)*A(M2)
NEXT N
NEXT M
REM =答整理=
FOR M=0 TO 8
B=INT(A(M0)/1000))
A(M0)=A(M0)-B*1000
A(M+10)=A(M+10)+B
NEXT M
FOR M=0 TO 2
FOR N=0 TO 9
LOCATE (N-10)*(-4)-3(M-3)*(-1)
PRINT A(NM)
NEXT N
NEXT M
KEYWAIT
−−−ここまで−−−

さっき何書いたんやったっけ

at 2002 04/11 22:30 編集

今、ついさっきオンラインで書き込みして、送信送ったんですが、パスワードが違いますって出て(日記書き込み時にパスワードを求められます)しまいました。

確かにFEPをオフにし忘れた私が悪い。でも、書き込んだやつを消すことはないやろ〜。

と文句を言ったところで消えたものは仕方ありません。想像にお任せします。

倍精度対応の効能

at 2002 04/12 08:48 編集

今まで変数が単精度だったので、12桁の答を一つの変数で持つことができないため、配列に分割して格納していましたが、倍精度に対応してもらえたお陰で一つの変数で数値として持つことができるようになりました。

今まで触れずにいましたが、マイナスや、小数点位置をどのように持つのかが、懸案であったのですが、数値でそのまま持つことができるので、大変楽になりました。

現在、大幅にプログラムを見直し中です

万願寺の日記の更新方法

at 2002 04/12 23:16 編集

7対3でPCで更新することが多いんですが、ザウルスで更新するときは、大概電車の中でオフライン書込みし、降りたとたんに送信してます。

(1)標準ブラウザで書込み用ページをあらかじめ取り込んでおきます。
(2)オフラインでタイトル、内容、パスワードを書き込んだ後、送信ボタンを押します。
(3)接続しますかと聞いてきますので接続します。
(4)ニフティのIDPWを聞いてきますのでIDボードでいれます。
(5)もう一回送信ボタンを押します。
(6)接続をきります。

だいたい1分以内・・・だと思っているんですが。

12桁電卓、改め15桁電卓

at 2002 04/13 21:39 編集

12桁電卓を作るつもりでいたんですが、944BASICが倍精度の15桁になりましたんで、15桁電卓にすることにしました。
100兆まで何で必要なんだと思われる方もおられるかも知れませんが、けして必要だから15桁にしたわけではなく、15桁出た答えを12桁にするのが面倒くさそうやと言うだけの理由です。

15桁電卓にしようと決めたとき、答えの表示も「わざわざ一文字ずつ配列に入れて表示するんやなく、そのまま表示したら楽やん!!」と思いついたんですが、それはやめました(今のところ)。

右詰、3桁カンマの表示が面倒くさそうやったからです。(ってそればっか)

15桁改め12桁電卓(^^ゞ

at 2002 04/14 21:38 編集

たった一日で15桁電卓挫折(^_^;)。どうも整数部15桁の演算がおかしいようなので、まあそれほど15桁にこだわる必要もないので、12桁電卓に戻しました。
あと、整数部10桁を超える値の整数変換(INT関数)についてもおかしいようです。

値を画面に表示するのに、1桁ずつ配列変数に格納してから表示していたんですが、
DIM D(12)
A=1234567890
FOR I=1 TO 12
B=INT(A/10)
D(I)=A-B*10
NEXT I
って感じで下の桁から配列に入れていました。これですと、12桁以上の値は配列に入れられないことになりますので、INT関数の10桁制限は非常に困ったんですが、
DIM D(12)
A=1234567890
B=(A+0.5)/100000000000
FOR I=1 TO 12
D(13-I)=INT(B)
B=(B-D(13-I))*10
NEXT I
って感じで上の桁から配列に入れていけば、まったく問題ないことに気がついたときには、まさに目からうろこの気分でした。

これがあるから、プログラムはやめられません(^^)


10桁電卓にすれば何にも問題なかったんや、ということにさっき気がつきました。

・・・

at 2002 04/14 21:42 編集

「最近いっつもそれしてるね」「・・・ちょっと電卓作ってるんよ」「ふ〜ん」「パソコンも?」「・・・うん」「ふ〜ん」





プログラム開発の危機か!!!

ここ2、3日

at 2002 04/18 00:09 編集

ここ2、3日電卓の開発を離れて違うもん作ってました。ちょっと魔が差したらどっぷりはまってしまって(^^ゞ
というわけで今日からまた電卓の開発始めます。もうじき、ベータバージョンくらいは公開できそうやとは思うんですが・・・

あ、魔が差したやつ。たいしたやつではないんですが、よかったらどうぞ。不具合(眩暈、吐き気、失神など)とかあってもどうにも出来ませんので、気をつけてください。



って、どこでしょう・・・

手ごわいINT関数

at 2002 04/18 17:36 編集

整数桁が10桁を超す値をINT関数にかけると誤った値を返すと言うのは気が付いてたんですが、プログラムで何とかなるやろうと思ってました。しかし、結構面倒な処理になるんで、いっそ10桁電卓にしようと考えリストを書き換えました。

頻繁に電卓の桁数を変更するので、その度に何カ所もリストをいじるのは手間ですので、1カ所直せば済むようにしました。

これで、2桁から180桁までの変更が容易になりました。もちろん変数の精度とINT関数が対応すればですが。

しかしその後、整数桁が10桁の場合でも、INT関数が誤った値を返すことがあることが判明。9桁電卓にしようかとも思いましたが、結局INT関数に換わるルーチンを作成し、現在は、12桁電卓として開発中です。

「歪むザウルス」の説明

at 2002 04/18 21:19 編集

たーくさんの方来ていただいたのに、たどり着けなかった方もおられたみたいで申し訳ありませんでした。洞穴の下の方に置いてます。

また、起動して「なんやこりゃ」と思われた方もおられるようですので(っていうか、みんなそう思たんやろか)、説明させていただきます。

起動してメッセージに従い何かキーを押すと、赤と緑の線が上下に流れます。で、2分ほどすると自動的に終了します。
プログラムは、これだけです。線が流れている間に、何かが起こるとかいうことは一切ありません。

「なんやそれだけかい」というと、実はそれだけではありません。これは、目に錯覚を起こさせるためのプログラムです。
線が流れている間、白い点を凝視し続けると、プログラム終了直後、今みているザウルスの画面が歪みます。

ただ、動作確認はE1で私が行っただけで、誰でも起こるのかどうかは解りません。今日の昼休みに後輩にしてもらったら、「なんですか?」と言われてしまいました(^^;

操作方法としては、できればバックライトをつけっ放しにするか、明るい場所で、画面から10cmくらいの距離で、ひたすら凝視し続けると、終了直後ザウルスが歪む・・・といいんですが。


できれば来訪日記に動作報告書いていただけるとうれしい。

電卓その4(計算結果の表示)

at 2002 04/20 23:33 編集

CommAさんのよろず雑感堂で紹介していただいたおかげで、たくさんの方においでいただいて、ゲーム作ればもっと来てくれるかもしれん・・とか思ったりもしたんですが、ま、相変わらず電卓です。

計算結果の表示部分が出来上がりました。ただ、リストがえらく長くなりまして、ここに載せるわけにはいきませんでした。結構ややこしいことをしています。
正常に動くまで、ザブルーチンだけ別ファイルで作成してデバッグするんですが、計算結果の表示部分だけで1.5KBになってしまいました。

どんなことをしてるんやろうと興味のある方は、洞穴に出来かけのやつを置いておきますんで、もしよかったら見てみてください。ただ、まだ出来上がっていません。


今回のサブルーチンのコンセプト
「なるべくGOTO命令を使わない」
理由
「リストが長くなったので、どんなラベル名を使ってるかわからなくなってきたから(^^ゞ」

電卓その5(電卓機能装備)

at 2002 04/22 22:19 編集

洞穴の「電卓未完成」がとりあえず電卓機能だけは装備しました。まだ、「000」キーと「(」キーはその機能を有していません。


もうじきかな

電卓完成も、バグだらけにつき非公開(^^ゞ

at 2002 04/23 23:29 編集

とりあえず、いちよ完成しました。
ただ、バグがいっぱいなのでもうしばらくここだけの話にしたいと思います。一通りバグが取れたら公開するつもりです。

ただ、需要は・・・

内蔵電卓との違いは、
見かけがシンプル(^^ゞ。
M+、M−などのメモリー機能がない
複写、貼付がない
あとないものは・・・・

ただ2階層の括弧付演算が可能です。これはぜひつけたかった機能の一つです。(というか今のところついてるのはこの機能だけなんですが)
ま、こんな電卓もあってもいいかなっていうことで。

唯(ただ)電卓 Ver1.0公開開始

at 2002 04/25 19:22 編集

唯(ただ)電卓 Ver1.0を公開します。

名前からしてただの電卓なんですが、特徴は2階層の括弧つき演算が可能。ただ関数電卓では有りませんので、乗算除算が優先されるということは有りません。

関数電卓では
(10+10)*5/(10/(3+2))=50
と入れるところを、

普通の電卓では
10+10*5=100
3+2=5
10/5=2
100/2=50
って具合になりますが、

唯電なら
10+10*5/(10/(3+2))=50
ってなります。

よければ試してみてください。ただ、出た答に対して100%の自信が有る訳ではないので、あまり重要な局面での使用はおさけください(^^;。
不具合や意見等が有りましたら来訪日記にでも書込んでいただければ幸いです。

唯電起動方法

at 2002 04/26 22:11 編集

Keiさんの「ただなんとなく944BASICなところ。」で紹介いただきましてありがとうございます。起動にもKeiさんの「らんちゃらんちゃ」を使わせていただいてます。
E1の場合だと

F:SYSTPREF.TXT
ここから
[SYST]
Version=1.0
AddAplKey=R,0x7aff,0x00,0x00,MPTC
ここまで

F0:MPTCCFG.TXT
ここから
LNCH,WOFZ
ここまで

F0:MPTCCFG1.TXT
ここから
00,M0
ここまで

F0:MPTCCFG2.TXT
ここから
F1:\944BASIC\BABCALC1.BAS
ここまで
(なお、カンマはすべて半角に直してください)

の4つのファイルを本体に作成してリセットをすると、ホームインデックス2回連打で唯電が起動します(^^)。
ただし、くれぐれも「らんちゃらんちゃ」の説明を読んで設定したほうがいいと思います。間違ってるかも知れませんし(^^ゞ

本当に便利なアプリ感謝>Keiさん

唯電その後

at 2002 04/26 22:23 編集

唯電の上のほう240×80の無駄なスペースはなんなんやろうと思われた方も、一人くらいはおられたかもしれません。
実はここに機能を追加するつもりでいます。どんな機能かは内緒(^.^)。ただ、いつになるかは・・・

ちょっと今トランプのソリティアを作りかけていまして、気持ちは完全にそちらへシフトしています。まあトランプといいましても、相変わらず画像を使いませんので、スートと数字だけの愛想のないものですが。

また進行状況をぼちぼちと書き込んでいきます。さて、なんのソリティアでしょう。

唯電バグ発覚

at 2002 04/30 22:01 編集

括弧つき演算をした後、7、8のキー入力ができないという不具合がありました。

VCALC(0,3)=0,0,0,0
という行が誤っており、正しくは
VCALC(0,3)=0,0
でした。

DIM VCALC(1,3)
としか定義してなかったので、次に定義した
DIM VTAP(4,3)
の最初の2つを食ってしまったのが原因でした。

使用してくださっている方には大変ご迷惑をおかけして申し訳有りませんでした。近日中に修正版をアップします。