[HOME]  [リストへもどる]  [全部表示 会議室風]  [最新100]  [最新50]   [新着40]    [全部表示 保存用]
新着記事 35

11262Re: 新着情報バグ一応直りました。(^^; 投稿者:としき   2024/05/28(火) 19:14
参照先:http://toshiki.la.coocan.jp/
  11261 番 konno さんへのコメント

無事に治ったようですね。めでたい。

> なんとか泥縄を重ねて見た目は正常になりました。(^^;

うん、まぁ、いいんじゃないでしょうか。
ただ、これは異常ではないのでしょうが、いささか意味不明というか。
なにかというと、「今日のテーマ」の一覧の上、「Virtual Zone」の日付のうしろ、
なんか謎の「(0)」がいくつか並んでいる。
ついでに言うと、ここの部分、</FONT>の閉じタグが多い。

あと、ざっくり見ただけなので間違いもあるかもしれませんが。
「MS-DOS Player」の日付のあとの部分、なんか改行が過剰?
それと、全体的に<a></a>と<b></b>のネストが互い違いになっているような気がする。
これ、あとから改造しようとしたときにえらいことになりそうな気がするので、今の
うちにきれいにしておいたほうが良いかと。
それと、もしかしたらうちのブラウザのせいかもしれませんが。
リンクの中の実体参照「&」と「&amp;」がなんかうまくない気もする。
ただ、この混在、この「今日のテーマ」本体でもあちこちあるような。
どこまで気のせいか、というのがわからないのが現在の私の弱点。
konnoさんにおかれましては、複数のブラウザでチェックされることをお薦めします。

> # 私が(プログラムを)織っている姿(ソース)は決して覗かないでください。

どこからもケチがつかないような美しいものを織り上げられる人だけがこのせりふを
口にする資格があるような気がするのは、やっぱり私の気のせいか。

    - No.11262 -   [コメント元:11261]     [リストへもどる ]
soft

11261新着情報バグ一応直りました。(^^; 投稿者:konno   2024/05/28(火) 17:42
  11260 番 konno さんへのコメント    コメント数 1

なんとか泥縄を重ねて見た目は正常になりました。(^^;

> > > 今までは、仮にURLがあっても、その特定の形式に該当するものではなかったので
> > > 発病しなかった、のではないかなぁ。
> > これが原因のような気がしますね。

やはりこれが原因だったようです。
フラグ変数を一つ増やして、リンク処理ルーチン内でカウントさせました。

> 試しに野ざらし言の私の発言内のリンクを消してみたら正常になりました。
> でも、VTDOS BBS 以降は消えたままです。(>_<)

野ざらし言の私の発言内のリンクを元に戻しても正常になりました。\(^^)/ ヤッタ-
でも、VTDOS BBS 以降が消えたままなのがわからなくて、古いルーチンで動いていたので
追加挿入してみたら、本来のルーチンも正常に表示されるようになりました。何で?
仕方がないので古いルーチンを一部残しておくことにしました。2重処理です。(^^;

# 私が(プログラムを)織っている姿(ソース)は決して覗かないでください。

    - No.11261 -   [コメント元:11260]     [リストへもどる ]
soft

11260Re^5: 新着情報にバグがある 投稿者:konno   2024/05/27(月) 17:52
  11259 番 konno さんへのコメント    コメント数 1

> > 今までは、仮にURLがあっても、その特定の形式に該当するものではなかったので
> > 発病しなかった、のではないかなぁ。
> これが原因のような気がしますね。

試しに野ざらし言の私の発言内のリンクを消してみたら正常になりました。
でも、VTDOS BBS 以降は消えたままです。(>_<)

この辺を色々弄ってみます。(^^;

    - No.11260 -   [コメント元:11259]     [リストへもどる ]
soft

11259Re^4: 新着情報にバグがある 投稿者:konno   2024/05/27(月) 17:39
  11257 番 としき さんへのコメント    コメント数 1

> なるほど、めざらさんの実験で、なんとなく見えてきたようです。
> konnoさんの使われているコードって、1つ分の発言全体から、ある特定の形式の
> URLを手がかりにして、本文だのなんだの不要なところを消して、<tr>から</tr>に
> はさまれた形に変換しているのでしょう。

その通りです。今見ると何をやってるかチンプンカンプンで、誰がこんなの作ったの〜状態です。

> ここで使ってるのは正規表現置換と見た。置換一発か複数発かはわかりませんが。
> でも、今回、その特定の形式に該当してしまうURLが1つの発言に複数含まれて
> しまった、ということかと。
> 今までは、仮にURLがあっても、その特定の形式に該当するものではなかったので
> 発病しなかった、のではないかなぁ。

これが原因のような気がしますね。
色々試したのですが良くならなくて、泥縄の限界かな。

> なので、正規表現を駆使して、何番目に該当するものだけ残す、みたいにすれば
> 解決しそうな気がする。

これを試してみようと思いますが、正規表現がもうわからない。(>_<)

    - No.11259 -   [コメント元:11257]     [リストへもどる ]
soft

11258Re^3: 新着情報にバグがある 投稿者:konno   2024/05/27(月) 17:13
  11256 番 めざら さんへのコメント

> 掲示板の形式が変わったわけないじゃないですか。(笑)

すみません、適当なことを言ってしまって。m(__)m
色々見てみたのですが、わからないんですよね。(>_<)

> 例えば,こちらで似たようなリンクを書き込んでみると……(^^;
> あるいは,
> http://mezala.la.coocan.jp/bbs/noz/wforum.cgi?mode=allread&no=5561#N5602
> みたいにハッシュが付いているリンクの場合とか。
> 違うなぁ……

私もリンクを書き込んだりしているので疑ったんですが、よくわからないです。

> あれ? 今度は VTDOS BBS の新着へのリンクが消えちゃったな。
> 消えたと言うか,a要素リンク内の値を括るダブルコーテーションが閉じていない?
> <tr><td><a href="http://tamaneko.world.coocan.jp/bbs/http://mezala.la.coocan.jp/bbs/noz/wforum.cgi?mode=allread&amp;no=5561#N5602' target='_blank' rel='noopener noreferrer' target='_blank' rel='noopener noreferrer'>???????e?[?}</a></td><td>11256</td></tr>
> 新着情報そのものは取得しているみたいだけれど,ダブルコーテーションの出力エラーで該当行以降が表示されないのと,他のBBSの不思議なリンクも中途半端に含まれていますね。
> もしかして弄っている途中でしたか?

VTDOS BBS もおかしくなってますね。その下のリンクまで消えてるし。
弄っているのは別名のやつなので、初めからこうだったのかなぁ?
上のa要素リンク関係が怪しい気はするんですが。

    - No.11258 -   [コメント元:11256]     [リストへもどる ]
soft

11257Re^3: 新着情報にバグがある 投稿者:としき   2024/05/27(月) 14:01
参照先:http://toshiki.la.coocan.jp/
  11256 番 めざら さんへのコメント    コメント数 1

なるほど、めざらさんの実験で、なんとなく見えてきたようです。
konnoさんの使われているコードって、1つ分の発言全体から、ある特定の形式の
URLを手がかりにして、本文だのなんだの不要なところを消して、<tr>から</tr>に
はさまれた形に変換しているのでしょう。
ここで使ってるのは正規表現置換と見た。置換一発か複数発かはわかりませんが。
でも、今回、その特定の形式に該当してしまうURLが1つの発言に複数含まれて
しまった、ということかと。
今までは、仮にURLがあっても、その特定の形式に該当するものではなかったので
発病しなかった、のではないかなぁ。
なので、正規表現を駆使して、何番目に該当するものだけ残す、みたいにすれば
解決しそうな気がする。

ハズレかな。

    - No.11257 -   [コメント元:11256]     [リストへもどる ]
soft

11256Re^2: 新着情報にバグがある 投稿者:めざら   2024/05/27(月) 07:11
参照先:http://mezala.la.coocan.jp/
  11255 番 konno さんへのコメント    コメント数 2

掲示板の形式が変わったわけないじゃないですか。(笑)
ただ,うちだけの問題なのかな。

例えば,こちらで似たようなリンクを書き込んでみると……(^^;

#5601:Re^14: 近況報告 めざら 2024/05/25(Sat)
http://mezala.la.coocan.jp/bbs/noz/wforum.cgi?mode=msgview&page=0&no=5601&reno=5600&oya=5561

あるいは,
http://mezala.la.coocan.jp/bbs/noz/wforum.cgi?mode=allread&no=5561#N5602
みたいにハッシュが付いているリンクの場合とか。

違うなぁ……

あれ? 今度は VTDOS BBS の新着へのリンクが消えちゃったな。
消えたと言うか,a要素リンク内の値を括るダブルコーテーションが閉じていない?
<tr><td><a href="http://tamaneko.world.coocan.jp/bbs/http://mezala.la.coocan.jp/bbs/noz/wforum.cgi?mode=allread&amp;no=5561#N5602' target='_blank' rel='noopener noreferrer' target='_blank' rel='noopener noreferrer'>???????e?[?}</a></td><td>11256</td></tr>
新着情報そのものは取得しているみたいだけれど,ダブルコーテーションの出力エラーで該当行以降が表示されないのと,他のBBSの不思議なリンクも中途半端に含まれていますね。
もしかして弄っている途中でしたか?
    - No.11256 -   [コメント元:11255]     [リストへもどる ]
soft

11255Re: 新着情報にバグがある 投稿者:konno   2024/05/27(月) 01:22
  11254 番 としき さんへのコメント    コメント数 1

> 新着情報の部分、野ざらし言#5602の発言のところ。
> ざっくり見てみたところ、野ざらし言#5602の発言本文の中のリンク情報を
> 拾って、偽のリンク情報を無理やり構築している模様。

ああ、本当だ、おかしいですね。
掲示板の形式とか変わったのでしょうかね。
見てみます。

    - No.11255 -   [コメント元:11254]     [リストへもどる ]
soft

11254新着情報にバグがある 投稿者:としき   2024/05/26(日) 21:57
参照先:http://toshiki.la.coocan.jp/
   コメント数 1

どうも、新着情報のページの表示がおかしいですね。
すぐにプッシュアウトされてしまいそうなので具体的に言うと、野ざらし言の
新着情報の部分、野ざらし言#5602の発言のところ。
ざっくり見てみたところ、野ざらし言#5602の発言本文の中のリンク情報を
拾って、偽のリンク情報を無理やり構築している模様。

ご確認いただけると幸いです。


    - No.11254 -             [リストへもどる ]
soft

11253エラーが出るなら元を絶ってしまえばいいじゃない 投稿者:konno   2024/05/22(水) 00:14
  11251 番 konno さんへのコメント

> 2024-04-16 10:01:41 STIME(09BA) 1876:4778 'サポート外 VIDEO BIOS(Int10h) 機能: AX=8500'
> 2024-04-16 10:01:42 STIME(09BA) 1876:47F1 'サポート外 VIDEO BIOS(Int10h) 機能: AX=8582'
> 2024-05-08 07:47:20 STIMEJ(2797) 433A:5982 'サポート外 KEYBOARD BIOS(int16h) 機能 F6'
> 2024-04-16 10:02:00 STIME(09BA) 1876:4D68 'サポート外 Int6F'
> 
> このようなエラーログが延々と出続けていたのです。

これを何とかしないと J31BASICコンパイラは使い物にならないですね。
それで考えたのは、常駐プログラムでこれらの割り込みを横取りして無効化すること。

私がいつもお世話になっている、アセンブラ入門のサイトから
トップ-> アセンブラ 第2章-> 第2章.メモリー管理-> 2-7. 常駐プログラム(TSR)
https://programmer.main.jp/assembler2/assembler10.html

このページの、「HOOK21」完成版(?) のソースを元に、INT10h でやってみたら出来ました。
ところが常駐解除が出来ないのです。
色々やってみてわかったのは、ソースの解放チェックルーチンで

STAY_CHEK:
	mov	ax,3521h
	int	21h             	;割り込みベクター取得

	mov	ax,es           	;解放できるかのチェック
	dec	ax
	mov	es,ax
	mov	di,8
	cld
	mov	si,offset PRCNAME
;	mov	cl,7			;★ cl ではうまくいかない、
	mov	cx,7			;★ cx ならうまくいく

	repz	cmpsb            	;名前が一緒かのチェック
	or	cx,cx
	jz	_STAY
	stc                     	;解放できない
	ret
_STAY:                           	;解放できる
	clc
	ret

★印のところの cl を cx に変えたら常駐解除できました。

# 汚れていたのは ch だったのです。

これで調子に乗って、INT16h  INT6Fh  も一緒にしてしまいました。
でもまたもや常駐解除が出来ない。(>_<)
プログラムの仕組みがわかってないからでしょうね。(;_;)

    - No.11253 -   [コメント元:11251]     [リストへもどる ]
pre

11252DOSVAXJ3の超巨大ファイルで C:の空きがゼロになった件 投稿者:konno   2024/05/21(火) 00:15
  11251 番 konno さんへのコメント

> ふと、VTDOSのエラーログ、vtd_err.log を確認してみたら、、、げげぇ、なんと!!
> ギガ越えの超巨大ファイルになっているではないですか!! なんじゃこりゃぁ!!
> その原因は、J31BASICコンパイラの実行ファイル、STIME.EXE でした。

このVTDOSのエラーログを削除しても Cドライブの空き容量の減少が止まりません。
そして、ついに Cドライブの空き容量がゼロになってしまいました。
その時ふと、DOSVAXJ3のフォルダを覗いてみたら、capture フォルダが出来ていて
こんな感じになっていました。げげぇ!!!

2024/04/26  05:15     5,866,799,616 stime_000.wav
2023/04/10  16:46             7,343 dosbox_000.png
2023/04/10  16:54         1,892,112 dosbox_000.wav
2023/04/10  16:54             7,202 dosbox_001.png
2024/03/06  14:10             5,300 stime510_000.png
2024/03/06  07:40         2,311,592 stime510_000.wav
2024/03/06  07:41         4,845,752 stime510_001.wav
2024/03/06  13:51         1,952,792 stime510_002.wav
2024/03/06  13:57        52,911,756 stime510_003.wav
2024/03/06  13:58         6,592,112 stime510_004.wav
2024/03/06  14:00        23,988,684 stime510_005.wav
2024/03/06  14:10        46,314,040 stime510_006.wav
2024/03/06  14:33       158,472,688 stime510_007.wav
2024/03/06  14:33         5,609,564 stime510_008.wav
2024/03/09  23:59     3,240,653,264 stime_000.wav
2024/03/09  23:59         1,792,092 stime_001.wav
2024/03/09  23:59            66,900 stime_002.wav
2024/03/09  23:59         1,114,112 stime_003.wav
2023/04/10  16:54         1,892,112 dosbox_000.wav

※ これはもう1台のPCの中身。件のデータはもっと巨大で、緊急事態につき速攻で削除しました。

どうやら DOSVAXJ3 の機能キーを不用意に押してしまったようです。

キー割当  機能名
Ctrl-F5   Screenshot
Ctrl-F6   Rec Wave

この辺のキー割り当てを弄ったので、その時に押してしまったと思われます。

# C部の空き丸ごと消滅だと!
  良くわからないものを無理して使うからよ・・・

PCの警告が出て、Cドライブのクリーンアップが推奨されたので、しかたなく OK しました。
その結果、3分の1くらい空きができました。(大丈夫なのか)
その後は問題なく動作しているようなので、まあいいか。(^^;

    - No.11252 -   [コメント元:11251]     [リストへもどる ]
pre

11251VTDOSの vtd_err.log のサイズが超巨大になってた件 投稿者:konno   2024/05/18(土) 23:57
  11226 番 konno さんへのコメント    コメント数 2

最近 Cドライブの空き容量が急激に減少してほとんど無くなってきました。
色々不要なファイルを削除したり移動させても追いつきません。

ふと、VTDOSのエラーログ、vtd_err.log を確認してみたら、、、げげぇ、なんと!!
ギガ越えの超巨大ファイルになっているではないですか!! なんじゃこりゃぁ!!
その原因は、J31BASICコンパイラの実行ファイル、STIME.EXE でした。

2024-04-16 10:01:41 STIME(09BA) 1876:4778 'サポート外 VIDEO BIOS(Int10h) 機能: AX=8500'
2024-04-16 10:01:42 STIME(09BA) 1876:47F1 'サポート外 VIDEO BIOS(Int10h) 機能: AX=8582'
2024-05-08 07:47:20 STIMEJ(2797) 433A:5982 'サポート外 KEYBOARD BIOS(int16h) 機能 F6'
2024-04-16 10:02:00 STIME(09BA) 1876:4D68 'サポート外 Int6F'

このようなエラーログが延々と出続けていたのです。
特に、Int10h AX=8500 〜 AX=8582 は毎秒30くらい出続けていました。
なんてこった、これでは VTDOSで使えないではないか。(>_<)

この割り込みは、ブラウンデータにも載っていない J31独自機能のようです。
J3100テクニカルブックを発掘したので見ると、カーソル位置のアトリビュート読み込みのよう。
int16h 機能 F6 は、キーバッファのチェックのようです。
Int6F は、ATOK5制御割り込みのようです。

VTDOSには エラーログ抑制オプションとかは無さそうだし、どうしたものか・・・・

    - No.11251 -   [コメント元:11226]     [リストへもどる ]
soft

11250DOSVAXJ3 Build JP240514版 更新 投稿者:konno   2024/05/15(水) 00:34


DOSVAXJ3 Build JP240514版 (2024/5/14)が更新されました

内容は

build JP240514 (2024/5/14)

    タイトルバーに表示する文字列を指定する [sdl] titlebar が有効になっていなかったのを修正しました。
    タイトルバーに表示する文字列を変更するコマンド title を追加しました。
    macOS Sonoma 上での SDL-IM+ の不具合を修正しました。


[sdl] セクションで

titlebar          =
     ↓
titlebar          = DOS/V

このように変更すると、窓のタイトルバーに表示されて、DOS/V モードか J31 モードか判別しやすくなります。
私は常時複数窓を開けて使い分けているので、コマンドラインで

title J31

等とすればその窓のタイトルが変わります。
タスクバーの表示も変わるので使い分けに便利です。

わがままな要望に応えてくださった軟式さんに感謝です。

    - No.11250 -             [リストへもどる ]
pre

11249Re^3: VTDOSは 2バイト文字の表示に難有り 投稿者:konno   2024/05/14(火) 22:08
  11248 番 めざら さんへのコメント

としきさん
> なんか昔、1バイト幅の2バイト文字、というのが話題になったようなおぼろげな
> 記憶が。PC-98でしたっけ?

PC98で 2バイト半角というのは聞いたことがあります。

めざらさん
> 大昔のPC8801のN88-BASIC のマニュアルなんか見たら,
> 1/4角文字コードなんて掲載があって凄く笑った。

そんなのもあるんですか、面白いですね。

> 実は,カセットテープの背ラベルとかに割と重宝してたの思い出して,
> なんだか切ないような愛おしさまで感じた。(PC88専用ワープロで対応してた)
> データベースが使えなくて印字で現物管理していた遠い昔の話です。

私も8ビットのパソピア7に漢字パック入れてドットプリンタで漢字印字とかやってたような。
5インチFDDも買っていたので凄い出費でしたが、全部捨ててしまったのは惜しいことしたかなぁ。

    - No.11249 -   [コメント元:11248]     [リストへもどる ]
soft

11248Re^2: VTDOSは 2バイト文字の表示に難有り 投稿者:めざら   2024/05/14(火) 16:47
参照先:http://mezala.la.coocan.jp/
  11247 番 としき さんへのコメント    コメント数 1

文字だとちょっと思い出せないんですが……,
確か罫線で半角の2バイト素片があったように思います。

大昔のPC8801のN88-BASIC のマニュアルなんか見たら,
1/4角文字コードなんて掲載があって凄く笑った。
実は,カセットテープの背ラベルとかに割と重宝してたの思い出して,
なんだか切ないような愛おしさまで感じた。(PC88専用ワープロで対応してた)
データベースが使えなくて印字で現物管理していた遠い昔の話です。
    - No.11248 -   [コメント元:11247]     [リストへもどる ]
soft

11247Re: VTDOSは 2バイト文字の表示に難有り 投稿者:としき   2024/05/13(月) 22:24
参照先:http://toshiki.la.coocan.jp/
  11246 番 konno さんへのコメント    コメント数 1

なんか昔、1バイト幅の2バイト文字、というのが話題になったようなおぼろげな
記憶が。PC-98でしたっけ?

    - No.11247 -   [コメント元:11246]     [リストへもどる ]
soft

11246VTDOSは 2バイト文字の表示に難有り 投稿者:konno   2024/05/13(月) 15:07
  11226 番 konno さんへのコメント    コメント数 1

各種DOS/V系エミュのテキストモードで J31BASIC が動作する仕組みは大体わかりました。
J31BASIC では文字の読み書きなどを BIOSコールで行っていると思われます。
なので、BIOSレベルではほぼ互換なのでテキストが正常に表示出来ていると。

ところが VTDOSの場合、2バイト文字の表示にいくつか問題がありました。

・文字列の中で2バイト文字だけ表示位置が1バイト後ろにズレる。
 その後ろが1バイト文字の場合2バイト文字が表示されなくなる。

・CHR$()で文字表示の場合改行しないと(カーソル点滅で?)最後の文字が消えることがある。
 1バイト罫線文字などでもこの現象は起こる。必ず起こるわけではないのは点滅のせい?

・"日 月 火 水 木 金" これらの文字が特に表示されにくい("土"はそうでもない)
 カレンダーでは必須の文字なのでCHR$()を使って苦労して体裁を整えた。

いずれも結構な難題補間形書くで、どうにかこうにか見た目だけは正常に出来ました。(^^;
VTDOSだけ何故こうなるのかは謎ですね。

ちなみに DOSVAXJ3のVGAモードならカラーグラフィックも表示されます。
640*400 の範囲だけどね。(^^;

    - No.11246 -   [コメント元:11226]     [リストへもどる ]
soft

11245Re^6: A000h VRAM領域と CDBL$() の問題 投稿者:konno   2024/05/12(日) 02:04
  11244 番 としき さんへのコメント

> chr$だと1バイト値しか取れませんからね。
> N88-BASICだとAKCNV$かKNJ$を使う、ということになっているのですが、私、KNJ$って
> 使った記憶がない。これは純粋に文字コードの変換しかしてくれなくて、表示の際には
> もう一手間かかるので。

それらの関数は J31BASICには無いですね。調べてみたら、「0」は、KTN$("0") 
これで区点コードで &K0316 が得られました。この形式なら CHR$() で表わせるようです。
PRINT CHR$(&K0316)
0

&K は定数なので、これではちょっと使えないなぁ。
さらに調べてみたら、「0」は、内部連続コードなら CHR$() で表わせるようです。
その換算表が手元に無いのでさらに調べたら、ASC("0") で連続コードが得られるようです。
PRINT ASC("0")
459

PRINT CHR$(459)
0

おお、これなら使えるかもしれない。0〜9までの数値は

2バイト 区点コード	連続コード
0	&K0316		459
1	&K0317		460
2	&K0318		461
3	&K0319		462
4	&K0320		463
5	&K0321		464
6	&K0322		465
7	&K0323		466
8	&K0324		467
9	&K0325		468

こうなりました。この内部連続コードを使えば配列がいらなくなりますね。
早速 BB$(I) を CHR$(I+459) に入れ替えてみました。
おお、動いた。\(^^)/ ヤッタ-

でも、考えてみたら、TurboBasic ではこの関数使えないですね。
ということで、互換性を考えてこの案は没にします。(;_;) 時間を返せ〜

    - No.11245 -   [コメント元:11244]     [リストへもどる ]
pre

11244Re^5: C000h VRAM領域と CDBL$() の問題 投稿者:としき   2024/05/11(土) 11:11
参照先:http://toshiki.la.coocan.jp/
  11243 番 konno さんへのコメント    コメント数 1

配列方式は、わかり易くていいんですけどね。
やっぱり、初期設定がちょっと手間がかかる気がして。
単なる気のせいなんでしょうけど。

> こんな感じ? 結果はエラーになりました。(>_<)

あぁそうか。
chr$だと1バイト値しか取れませんからね。
N88-BASICだとAKCNV$かKNJ$を使う、ということになっているのですが、私、KNJ$って
使った記憶がない。これは純粋に文字コードの変換しかしてくれなくて、表示の際には
もう一手間かかるので。

    - No.11244 -   [コメント元:11243]     [リストへもどる ]
soft

11243Re^4: C000h VRAM領域と CDBL$() の問題 投稿者:konno   2024/05/11(土) 01:03
  11242 番 としき さんへのコメント    コメント数 1

> ところで、CDBL$()を使わない方法ってどんなものですか?
> Vzでよくやる、$824fを足しこむ、みたいなものかな。

Vzでよくやる、$824fを足しこむ、みたいなやりかたはしてないです。
「0」のコード $30 を「0」のコード $824f に変換ですか、出来そうですね。

私は単純に配列を使ってみました。

DIM BB$(10)
BB$(1)="1"
BB$(2)="2"
BB$(3)="3"
BB$(4)="4"
BB$(5)="5"
BB$(6)="6"
BB$(7)="7"
BB$(8)="8"
BB$(9)="9"
BB$(0)="0"
PRINT BB$(VAL(MID$(TIME$,1,1)));BB$(VAL(MID$(TIME$,2,1)));

これで2桁の2バイト数字表示になります。
VZ式だと配列を使わないで

k!=&h824f
PRINT chr$(k!)

こんな感じ? 結果はエラーになりました。(>_<)

    - No.11243 -   [コメント元:11242]     [リストへもどる ]
soft

11242Re^3: C000h VRAM領域と CDBL$() の問題 投稿者:としき   2024/05/10(金) 13:07
参照先:http://toshiki.la.coocan.jp/
  11241 番 konno さんへのコメント    コメント数 1

> > (2')でもJ3100以外の機械で使うためにCDBL$()を使わなくなった
> こちらですね。

理解できました。ありがとうございます。
ところで、CDBL$()を使わない方法ってどんなものですか?
Vzでよくやる、$824fを足しこむ、みたいなものかな。

    - No.11242 -   [コメント元:11241]     [リストへもどる ]
soft

11241Re^2: C000h VRAM領域と CDBL$() の問題 投稿者:konno   2024/05/10(金) 01:02
  11240 番 としき さんへのコメント    コメント数 1

> (2')でもJ3100以外の機械で使うためにCDBL$()を使わなくなった

こちらですね。
経緯は書いていますが、もう一度整理すると

・元々J3100 で使うために J31BASICでCDBL$()(2バイト数字文字)を使っていた。
・でも、PCがWin95ノートに変わってしまい、J3100のプログラムが動かなくなったので
 TurboBasicに移植して、CDBL$()が使えないので、1バイト数字文字で運用した。
・今回このプログラムを公開するために、2バイト数字文字表示を実現させた。
・その後 J31BASICで各種エミュで動くことが分かったので、CDBL$()(2バイト数字文字)を復活させた。
・だけど CDBL$()を使ったら文字化け。
・結局TurboBasicと同じCDBL$()を使わない方法に戻した

で、文字化け等の原因ですが、J3100と IBM-PCの VGAで同じBIOSコールを使っていても
機能が微妙に違ったり VRAMへの描画形式が違うためと思われます。
VRAM領域は、VGAと J31の画面モード 75 が同じ A000h セグメントなので動くみたいです。
実機では動かないと思っていましたが、エミュでは何故か動くのです。

> 余談ですが、N88-BASICにはCDBL$()という関数はありません。
> 数値型のCDBL()という関数はあります。
> 引数を倍精度型に変換するという関数です。

この関数は J31BASIC にもあります。機能的にも同じようです。

> 積極的には使われない関数であることは間違いありません。

私も使ったことが無いです。(^^;

    - No.11241 -   [コメント元:11240]     [リストへもどる ]
soft

11240Re: C000h VRAM領域と CDBL$() の問題 投稿者:としき   2024/05/09(木) 22:22
参照先:http://toshiki.la.coocan.jp/
  11234 番 konno さんへのコメント    コメント数 1

ごめんなさい、ここのところがよくわからないので解説希望。

> その原因は、J31BASIC の CDBL$() という、1バイトの数字を2バイト文字に変換する関数でした。
> 元々は J3100 でこの関数を使って表示していたので元に戻してみたらこうなったということです。
> しかたがないので、TurboBasic と同じやり方に戻しました。

(1)J31BASICではCDBL$()を使っていた
(2)でも何らかの理由でJ3100ではCDBL$()を使わなくなった
(3)だけどやっぱりCDBL$()を使ったら文字化け
(4)TurboBasicと同じCDBL$()を使わない方法に戻した

という理解でよろしいのでしょうか。それとも

(1)J31BASICではCDBL$()を使っていた
(2')でもJ3100以外の機械で使うためにCDBL$()を使わなくなった
(3)だけどやっぱりCDBL$()を使ったら文字化け
(4)TurboBasicと同じCDBL$()を使わない方法に戻した

こっちの理由かな。
つまり、(2)なのか(2')なのかで違いがあるかも、というお話。


余談ですが、N88-BASICにはCDBL$()という関数はありません。
数値型のCDBL()という関数はあります。
引数を倍精度型に変換するという関数です。
文例として
A#=CDBL(256%)
なんていうのが載っていますが、仮に
A#=256%
とした場合と何が違うのか、あまり知られていません。違いはないのかも。
積極的には使われない関数であることは間違いありません。

    - No.11240 -   [コメント元:11234]     [リストへもどる ]
soft

11239C000h セグメントは間違い、A000h でした。m(__)m 投稿者:konno   2024/05/06(月) 01:56
  11234 番 konno さんへのコメント

> C000h セグメントは VGAの領域で確保されていると思いますが、初期化の問題なのかな。
> VTDOS では、TPAEXT などでメモリ拡張していると干渉すると思われるので要注意です。

C000h セグメントはパソピア16 でした。思い込みで間違えました。m(__)m
J3100用BASICコンパイラでは、画面モード 75 (SCREEN 4) でカラーモードが使えます。
J3100テクニカルブックによるとこのモードでは VRAM領域 A000h - AFFFh となっています。

確認のために STIME実行中に SHELL で画面情報を見てみました。

・DOSVAXJ3 J31
CHEJ.EXE <MultiMode CHEV> ver 6.10 by Natrium.

現在 DOS/V(Normal)、日本語環境です。
現在のビデオモードは 03h です。

V - Video mode information    R1.0  (C)ChaN,1993

Current Video Mode = 03h
Screen Size        = 80x25
Character Height   = 19
VRAM Mode          = APA
VRAM Address       = C741:0000 (Virturl VRAM)


・DOSVAXJ3 VGA
現在 DOS/V(Normal)、日本語環境です。
現在のビデオモードは 03h です。

Current Video Mode = 03h
Screen Size        = 80x25
Character Height   = 19
VRAM Mode          = APA
VRAM Address       = C679:0000 (Virturl VRAM)


・VTDOS
現在 DOS/V(V-Text)、日本語環境です。
現在のビデオモードは 70h です。

Current Video Mode = 70h
Screen Size        = 110x35
Character Height   = 12
VRAM Mode          = A/N
VRAM Address       = D000:0000 (Real VRAM)


・MS-DOS Player
現在 DOS/V(V-Text)、日本語環境です。
現在のビデオモードは 75h です。

Current Video Mode = 75h
Screen Size        = 80x25
Character Height   = 22
VRAM Mode          = A/N
VRAM Address       = B800:0000 (Real VRAM)


うーむ、どのエミュも A000h - AFFFh の領域は使用していないようですが
VRAMアドレスがバラバラですね。

    - No.11239 -   [コメント元:11234]     [リストへもどる ]
pre

11238Re: DOSVAXJ3 Build JP240502 更新 投稿者:konno   2024/05/05(日) 02:37
  11237 番 めざら さんへのコメント

> ……てことで,あまり関係ないかしら(^^;)

あうう、更新の記事を上げようとしたら先を越されてしまいました。(^^;

問題無く動作しますが、特に変化は感じないです、(^^;
この機会にJ31関連でちょっと要望などしてみようかしら。(^^;

    - No.11238 -   [コメント元:11237]     [リストへもどる ]
soft

11237DOSVAXJ3 Build JP240502 更新 投稿者:めざら   2024/05/05(日) 00:19
参照先:http://mezala.la.coocan.jp/
   コメント数 1

DOSVAXJ3 が 240502版に更新されました。
以下更新内容です。

・J-3100 モードの場合、int 10h ah=02h のカーソル位置指定で bh のページ番号は使用せず常に 0 となるよう修正しました。
・J-3100 の int 10h ax=8200h でスクロールモードを変更した後に画面クリアするよう修正しました。
・macOS 上での SDL-IM+ の不具合を修正しました。

……てことで,あまり関係ないかしら(^^;)
    - No.11237 -             [リストへもどる ]
soft

11236Re^6: LXCLND.DEF の祝日変更対応版 投稿者:konno   2024/05/03(金) 22:01
  11235 番 めざら さんへのコメント

> > 疑似カーソルって、Shift+カーソルキーで () の日を移動出来るんですね。
> メニュー表示中のコマンドキーを受けるもののうち,以下の四つですね。
> (#37)	{ r=7, &11 }
> (#38)	{ r=7, &12 }
> (#a)	{ r=1, &11 }
> (#f)	{ r=1, &12 }

なるほど、詳細な解説ありがとうございます。
これなら改造も出来そうな気がしてきました。(やらないけど。(^^;)

> メニューアイテムの書換えというのはトンでもなく面倒なわけで,
> オリジナルのnomad版ではテキストに書き出すという手法をとっていたため
> konnoさんのようにキーを押しっぱなしにしたりする人(^^;はとても使えなかった。

い、いやぁ、、、そんなことは・・・ない、と思いますです。(^^;
実際のところ今カレンダ表示をモードによって分岐を変えるので四苦八苦してます。
とんでもないスパゲッティが出来上がりつつあり、ソースでごまかせるのかと。(^^;

> あ,元に戻って,「日付」というのは保持している値なので,あまり意味はなく,
> 「当日」を指示されたときだけリセットするというイメージですね。

これ、勘違いしていました。疑似カーソルの意味がやっとわかりました。
スケジュールとのリンクとか日付出力とかでこの機能が必要だったのですね。

    - No.11236 -   [コメント元:11235]     [リストへもどる ]
pre

11235Re^5: LXCLND.DEF の祝日変更対応版 投稿者:めざら   2024/05/02(木) 13:17
参照先:http://mezala.la.coocan.jp/
  11233 番 konno さんへのコメント    コメント数 1

> 疑似カーソルって、Shift+カーソルキーで () の日を移動出来るんですね。

メニュー表示中のコマンドキーを受けるもののうち,以下の四つですね。

(#37)	{ r=7, &11 }
(#38)	{ r=7, &12 }
(#a)	{ r=1, &11 }
(#f)	{ r=1, &12 }

これらのキーを受け取ったときに「日付」を再設定します。
再設定する値は現在の値に1日(左右)か7日(上下)を増減して再表示します。

再表示のしかたについては,多くのカレンダーマクロで当日の背景色を変えたり
括弧でくくったりするのとまったく同じで,メニューアイテムへの埋込みです。
(括弧の場合は前後の空白に上書きすることになりますが)

メニューアイテムの書換えというのはトンでもなく面倒なわけで,
オリジナルのnomad版ではテキストに書き出すという手法をとっていたため
konnoさんのようにキーを押しっぱなしにしたりする人(^^;はとても使えなかった。

Yushiさんはメモリ(ラインバッファ)上に出力することと機械語化で高速化し,
Emmettさんは機械語化をさらに徹底的に行なって超高速化しています。

メニュー内でカーソルを動かすというのは確かに高度なテクニックですが,
(アセンブラに馴れ親しんでいるkonnoさんには釈迦に説法に違いないのですが)
とにかくひたすら面倒な「低級」テクニックとも言えると思います。

Yushiさんなんか,メニューで十字カーソルですぜ。
そんな面倒なコードをよく書くものだなぁとひたすら感心します。

あ,元に戻って,「日付」というのは保持している値なので,あまり意味はなく,
「当日」を指示されたときだけリセットするというイメージですね。
    - No.11235 -   [コメント元:11233]     [リストへもどる ]
pre

11234C000h VRAM領域と CDBL$() の問題 投稿者:konno   2024/05/01(水) 17:48
  11226 番 konno さんへのコメント    コメント数 2

新しい STIME では、TIMER.DAT にタイマー画面を退避させています。
J31用BASICコンパイラを動作させてみると、その画面がおかしい。
ぐちゃぐちゃになっているのです。

TurboBasic では、48桁 23行で以下のように表示されます。
1行目は、d-他の受け渡しに使っています。

 1             1 
>                                               
 1日 17:16:31   0: 0: 0    0: 0: 9        
                                                
  中略
                                                
     1日 17:16:33   0: 0: 0   0: 0: 7     


J31BASIC では、各エミュごとに全部違っています。

VTDOS 4/13
13 把  0Oマ: 4Sマ: 4Sツ   8:12'45    0: 0:19        
                                                
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@

VTDOS 4/21
21日^@^@02:38:31  0: 0: 0   0: 6:48 ^@^@^@^@^@^@
                                                
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@

VTDOS 5/1
 1日  17:22:54  0: 0: 0   0: 0: 8       
                                                

最初は2バイト文字が変に文字化けして、背景のスペースがヌルになっています。
現在は正常表示になっていますが、ここまでするのに一苦労でした。

DOSVAXJ3 VGAモード
12日cc 1PP6UU:2QQ9XX:1PP0OO   0  8:40:54 0: 0: 3
                                                
ロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロ
ロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロ

DOSVAXJ3 J31モード
13日日 0011:0077:4477   0: 0'26    0: 0:13        
                                                
                                                
MS-DOS Player
13日c 0O0O:5T3R:3R0O   0: 0' 0    0: 0:11        
                                                
                                                
このように、どのエミュでも2バイト文字が化けたり2重になったりしています。
その原因は、J31BASIC の CDBL$() という、1バイトの数字を2バイト文字に変換する関数でした。
元々は J3100 でこの関数を使って表示していたので元に戻してみたらこうなったということです。
しかたがないので、TurboBasic と同じやり方に戻しました。

背景の空白が ヌル文字になったり、DOSVAXJ3 VGAモード では、$DB で埋められています。
これは、VRAM領域のメモリの状況によると思われます。
C000h セグメントは VGAの領域で確保されていると思いますが、初期化の問題なのかな。
VTDOS では、TPAEXT などでメモリ拡張していると干渉すると思われるので要注意です。

ともかく、動くのが不思議な状態なので、このまま使うのがよろしいようです。
                                                

    - No.11234 -   [コメント元:11226]     [リストへもどる ]
pre

11233Re^4: LXCLND.DEF の祝日変更対応版 投稿者:konno   2024/05/01(水) 16:02
  11232 番 めざら さんへのコメント    コメント数 1

> > 表示月を移動しても同じ日付に () が付いたままになっていますね。
> 日付出力のために疑似カーソルを表示しています。
> これは当日であるとは限らないです。(当日は[TAB]入力直後の表示)

疑似カーソルって、Shift+カーソルキーで () の日を移動出来るんですね。
凄いテクニックです。ソースを見てみました。

LXCLND.DEF 189行目以降

10:	;---- make menu --------------------------------------------------

	pr..15 = "$$3($$7",		;right of today
	pr..16 = "$$3)$$7",		;left of today

ここが多分メニューの中で () を表示するところでしょうか。
実際のメニュー表示はその下のマシン語かな。

10:	;---- mklxclnd.asm ----

こうなると全く読めないので追及は諦めます。(^^;

    - No.11233 -   [コメント元:11232]     [リストへもどる ]
pre

11232Re^3: LXCLND.DEF の祝日変更対応版 投稿者:めざら   2024/04/30(火) 08:26
参照先:http://mezala.la.coocan.jp/
  11231 番 konno さんへのコメント    コメント数 1

> 表示月を移動しても同じ日付に () が付いたままになっていますね。

日付出力のために疑似カーソルを表示しています。
これは当日であるとは限らないです。(当日は[TAB]入力直後の表示)

    - No.11232 -   [コメント元:11231]     [リストへもどる ]
soft

11231Re^2: LXCLND.DEF の祝日変更対応版 投稿者:konno   2024/04/29(月) 23:16
  11230 番 めざら さんへのコメント    コメント数 1

> わたしもオリ・パラ関連特別措置法による移動は無視しました。

これは Wikipedia でも参考程度になっていますね。

> 四月と五月は敢えて弄りませんでした。祝日名を表示するわけでもないので。

そうなんですよね、表示は同じなんですが、オリジナルでも分けているところがありましたので。

ところで、今回 LXCLND.DEF で気が付いたところがあります。
中央のカレンダに今日の日付が () に囲われてわかりやすくなっていますが
表示月を移動しても同じ日付に () が付いたままになっていますね。

これはバグという見方もできますが、仕様かもしれないと思いました。
このマクロはスケジュール管理のために月を変えてカレンダを参照しやすくなっています。
その時、今日は何日だっけ?と思うこともありそうなので、その確認になるかなと。
なので、この仕様はこのままにしておきます。

STIME でも現在の日付に色付けしていますが、改編時バグって毎月同じ日付に色がついて
修正に苦労したりして。いや、年取って頭が働かなくなっただけなんですけどね。(^^;

う、そういえば今日は祝日なのに今日の日付が赤になっていない。(>_<)
うーん、直せるかしら・・・(^^;

    - No.11231 -   [コメント元:11230]     [リストへもどる ]
soft

11230Re: LXCLND.DEF の祝日変更対応版 投稿者:めざら   2024/04/29(月) 07:36
参照先:http://mezala.la.coocan.jp/
  11228 番 konno さんへのコメント    コメント数 1

わたしもオリ・パラ関連特別措置法による移動は無視しました。
四月と五月は敢えて弄りませんでした。祝日名を表示するわけでもないので。

    - No.11230 -   [コメント元:11228]     [リストへもどる ]
soft

11229STIME.EXE Ver 240428 投稿者:konno   2024/04/28(日) 22:21


STIME.EXE Ver 240428 を「自作、改作アプリの放置部屋」に置きました。

STIME5.ZIP サイズ 84098bytes  24-04-28 new!

  STIME.EXE Ver 240428

・DOSVAXJ3 の VGAで動くアナログ時計とカレンダとタイマーのアクセサリです。
・NCPATH= でデータファイルの置き場所を指定してください。末尾に "\" が無ければ追加します。

・DOSVAXJ3 を起動したら、chev jp でVGAモードにして、STIME.EXE を起動してください。
・MS-DOS Player では、chej jp でVGAモードにします。文字のデジタル時計とカレンダのみ表示。
・VTDOS では動作しません。
・タイマーモード(6)の時は[F03]や[←]キーで小窓のカレンダー当月を表示します。
・ビジブルベルは[F06]だけの機能です。STIME.DAT で動作設定します。[ESC]でカラー表示消去。

STIME5 24-04-28
 240428 タイマーモード(6)の時は[F03]や[←]キーで小窓のカレンダー当月を表示。
 240315 指定時間経過でビジブルベル タイマー画面復帰
 240306 アナログ時計にタイマーのマーキング 設定ファイル STIME.DAT で各種設定可能に
 240202 タイマーの時間表示文字を大きく・経過時間をリアル表示、スリープモードにも対応。
STIME4 23-12-12
 231212 NCPATH が通ってなくてデータファイル読めない場合エラー終了していたのを警告表示に。
 231208 環境変数 NCPATH でデータファイルの置き場所を指定。指定無しならカレント
 春分、秋分の日を自動計算
 デジタル時計とカレンダ大の文字を2バイト文字に。
 [↑↓]キーで前年・次年 [←→]キーで前月・次月のカレンダーを表示

 動作保証はでき無いので実行は自己責任で。  


※今回は DOSVAXJ3 で TOUCH を使いファイルの日時を合わせました。
 使い慣れたDOSツールが使えるのは気持ちいいですね。
 今回の版は TurboBasic でコンパイルしています。
 VTDOSでは動かないので注意してください。

    - No.11229 -             [リストへもどる ]
soft

11228LXCLND.DEF の祝日変更対応版 投稿者:konno   2024/04/27(土) 23:07
   コメント数 1

STIME のカレンダ表示などを弄っていて、LXCLND.DEF と表示を比べてみたら
2月23日とか12月23日など違っている日がいくつかありました。
STIMEの HOLIDAY.DAT を見てみると

02/23 2020-2099 天皇誕生日  (令和天皇)
12/23 1989-2018 天皇誕生日  (平成天皇)

なるほど、最近変更された祝日に LXCLND.DEF が対応してないのですね。
STIME のバグでなくてほっとしました。(^^;

見たついでに、LXCLND.DEF の祝日テーブルを修正しました。
LXCLND.DEF には HOLIDAY.DAT のデータ形式で参考にさせてもらいましたからね。

LXCLND.DEF  431行目

72:	;---- holiday definition -----------------------------------------

;	hh..2  =  "1874>1948=11;1967>0=11",
	hh..2  =  "1874>1948=11;1967>0=11;2020>0=23",

;	hh..4  =  "1874>1948=3;1928>0=29",
	hh..4  =  "1874>1948=3;1928>1988=29;1989>2006=29;2007>0=29",

;	hh..5  =  "1949>0=3;1985>0=4;1949>0=5",
	hh..5  =  "1949>0=3;1985>2006=4;2007>0=4;1949>0=5",

	hh..8  =  "2016>0=11",

;	hh..10 =  "1874>1948=17;1966>1999=10;2000>0=BB",
	hh..10 =  "1874>1948=17;1966>1999=10;2000>2019=BB;2020>0=BB",

;	hh..12 =  "1989>0=23",
	hh..12 =  "1989>2018=23",


該当する HOLIDAY.DAT の祝日は

02/23 2020-2099 天皇誕生日  (令和天皇)

04/29 1948-1988 天皇誕生日 (昭和天皇)
04/29 1989-2006 みどりの日
04/29 2007-2099 昭和の日

05/04 1985-2006 国民の休日
05/04 2007-2099 みどりの日

08/11 2016-2099 山の日

10/10 1966-1999 体育の日
10/BB 2000-2019 体育の日
10/BB 2020-2099 スポーツの日

12/23 1989-2018 天皇誕生日  (平成天皇)

修正した LXCLND.DEF を VZマクロの部屋に置きました。
以下の直リンクでも見ることができます。

#txt:LXCLND.DEF


    - No.11228 -             [リストへもどる ]
pre