ファミリーベーシック活用テクニックat I4004
ファミリーベーシック活用テクニック - 暇つぶし2ch831:ナイコンさん
11/01/15 01:47:44
>>830
V3がOKでV2.1AがNGということは、バックアップのシーケンスにポイントがありそうに思います。
そこ以外あまり差はなさそうですし。
V2.1AでSRAM無効化する前にスタート画面に戻っていますか?
プログラム入力⇒動作確認⇒GAME BASICモード画面⇒スタート画面⇒…⇒オワリ⇒SRAM無効化⇒電源OFF
ではいかがでしょうか?

「T起動してBASICに入って、SRAM無効のままLIST取る」
SRAM無効化というのは、要はライトプロテクトですので、
起動時に走るはずのSRAMの初期化が走っていないのであれば、
プログラムは出鱈目になることもありそうです。
…っていうか、そんなことあった気がします、昔遊んでいて。
ピーッ、ピーッっと、BEEP音鳴りまくりました。
バックアップスイッチONにしたままLISTしたら。


832:779
11/01/15 03:26:06
V2.1のバックアップのやり方分かりました。使い方の問題だったようです。
バックアップスイッチの操作は、BASICモード画面(SYSTEM命令で出る画面)で行う
必要があるようです。Tキー起動の時も、この画面でスイッチを入れないとダメでした。
BASICに入ってから切り替えるとNG。

BASICモード画面で電源を落としておけば、ワタシハ…から起動した場合も指示通りの
スイッチ操作でOKでした。もともとこういうシーケンスだったんですね。

BASICモード画面では特にスイッチ操作の指示が無いので自動化は難しそうですが…。
ちなみにバックアップスイッチon時は/CSがhi固定なので、いわゆるライトプロテクト
ではなくREADもできません。これは改造前からそうなっています。

833:783
11/01/15 07:06:57
上手くいってよかったです。
SRAMの/CS h固定の件、間違えてすみませんでした;;


834:779
11/01/15 19:02:21
V2.1,V3のバックアップ手順が確立しましたが、冷静に考えるとV2.1でもV3でも
BASICでPOKE命令を打つ隙がありませんね。

V2.1では、BASICモード画面でキー入力待ちになった時点でSRAM disable、
1キーが押下された時点でSRAM enableとすれば良さそうですが、プログラムを
割り込ませる隙があるかどうか…。

V3はバックアップスイッチ操作のメッセージを表示させるルーチンを置き換えれば
よいので隙はありそうですが。

如何でしょう?>>783

835:783
11/01/15 19:20:17
いよいよきましたね…
V3のほうを先に考えます。
V3でSRAMをenableにするのは電源投入時、
SRAMをdisableにするのはBACKUPコマンド実行時でよろしいですね?

気長に待ってください…


836:783
11/01/15 20:18:10
「V3.0」のSRAMのenableについて検討しました。
下記、試していただけますか?

ファミコンのアドレス空間でいう下記のデータを書き換えてください。
(ROM上での場所はよく分かりません。すみません!)

        ↓アドレス
書き換え前:823A 20 6C 61 96 20 20 8D
書き換え後:823A 00 8D YY XX 4C BA 80

書き換え前:FFFC BA 80 BA 80
書き換え後:FFFC 3B 82 3B 82

7 + 4 = 合計11バイトの書き換えです。

YY,XXにはSRAMをenableにするアドレスを「下位8bit、上位8bit」の順に
書きます(6502はリトルエンディアンです)。
たとえば、POKE&HA0B0, 0 でSRAMがenableになる、というような
設定の場合は、YYにはB0を、XXにはA0をそれぞれ書き込みます。

なにぶん実機で試せないのでドキドキですが、ちょっと確認してみてください。
また、失敗すると起動不能に陥る(はず)なので、
現状復帰できる体制を整えて臨んでください。よろしくお願いします。


837:779
11/01/15 22:38:02
書き換え前に教えていただきたいのですが、これはどこの処理に割り込ませたの
でしょうか。EPROMを半田吸い取って外して紫外線で消去して書き換えてまた半田
付けするのは結構手間がかかるもので…。わがままですみません。

実験中だけEPROMをソケットに載せようとは思いますが、紫外線消去はやっぱり面倒…。
電気的に消去できるEEPROMが手に入れば手軽に書き換えられるんですがね。

838:779
11/01/16 02:26:50
基板にICソケット装備してEPROM書き換え体制に入りました。
(紫外線照射用の乾電池式蛍光灯もACアダプタで使えるように改造)

して、仰るように書き換えてみました。
EPROMには前半32kBにV2.1A、後半にV3を書き込んでいますので、 V3の場合は
EPROMの物理アドレスとファミコン内部でのアドレスが一致しています。
SRAM enableはPOKE &H8000,0ですから、

書き換え後:823A 00 8D 00 80 4C BA 80
書き換え後:FFFC 3B 82 3B 82

しかし、残念ながら結果はenableになりませんでした。いつも通り、バックアップ
スイッチをオフにするように指示が出ます。

ちなみに「V2.1Aなら$8570を$77→$7F」こっちの方は、フリーエリアの表示が4kBに
増えたのを確認しました。中身まで書き込めるかは未確認ですが。


839:783
11/01/16 03:42:16
うむむ…残念です。書き換えた場所や内容は正しいですね…。

書き換えたのは電源投入時の一番最初のシーケンスです。
RESET割り込みベクタをフックしました。
URLリンク(hp.vector.co.jp)

FFFC~FFFFはRESETとIRQの割り込みベクタになっています。
つまり、RESETが検知されるとFFFC,FFFDに描かれたアドレスにジャンプするわけです。
IRQのほうはファミリーベーシックではリセットと同じにされているので、
ついでに一緒に書き換えました。どちらも823Bに飛ぶように書き換えています。

823Aは通常"バックアップ スイッチヲ(00)"という文字列が並んでいる部分の
「ス」に相当するアドレスで、文字列を短縮することでマシン語書き込み用に7バイト確保しています。
"バックアップ(00)"として823Aに00Hを書き込んで文字列を短縮し、823B以降に、

【ニーモニック】  【マシン語】   【意味】
STA &HXXYY   8D YY XX ⇒ POKE &HXXYY, ** (**は不定)
JMP &H80BA   4C BA 80 ⇒ &H80BAにジャンプ
を書き込みました。


840:783
11/01/16 03:42:56
ですので、これが上手く書き換えられていると、BACKUPコマンド実行時に
「バックアップ スイッチ ヲ ON ニ ~」というメッセージが
「バックアップ ON ニ~」に変わります。
↑ここ、確認してもらってもよろしいですか?

もしかしたら779さんの考えられている手順と異なる場所に埋め込んだかもしれませんが、
自力で分かる場所はここしかないし、ここで上手くいかなければ他の場所も上手くいかせられないと思います…。

これが上手く行ってるのに挙動が変わらないようなら、追加で以下のアドレスも書き換えていただけますか。
8000 4C BA 80

8000 4C 3B 82
ここにもジャンプ命令があるのですが、資料を読む限りは書き換える必要がないと
判断していた場所です。もし電源投入時のシーケンスが&H8000から始まっているとするなら
ここも書き換える必要があるかと思いました。


841:779
11/01/16 11:24:22
書き換えた場所は何度も確認しました。書き換え前のデータも仰るようになって
いたので間違いないと思います。

>「バックアップ ON ニ~」に変わります。
の部分は確かに「スイッチヲ」が消えてそうなっていました。

電源投入後のシーケンスって普通は&hC000からですよね。16kBのROMの場合はそこに
マッピングされるようですし。

スイッチの自動化がされるのであれば、SRAMに書き込めるかどうかを確認するルーチン
やバックアップスイッチをon/offの指示を出すルーチンは不要になるので、そこを
乗っ取れないでしょうか?SRAMがenableになっているかどうか確認するルーチンを
CALLしている部分をPOKE&h8000相当に置き換えてその後にあると推測される分岐
ルーチンをすっ飛ばしてSRAM enableとして処理すればよいと思います。

842:779
11/01/16 11:41:03
ちなみに、ハードウエア的には電源投入直後はロジック回路の電源電圧が
4.25Vに達してから34msはSRAM disable固定です。リセットICでそうしています。
この時間が短いとなぜか74HC74にうまくリセットがかからないもので。
その間に書き換えたルーチンでの処理がされている可能性もありますね。

843:783
11/01/16 13:46:47
結論から言うと、リセットIC分の時間をどこかで確保してやる必要があると思います。
779さんが用意されたリセットICは、CPUに対するリセットとは異なっていて、リセット時間も別々なんですよね?
ということは、CPUはそのシステムで一番後から起動すべきものが、その保証が取れていないということなので、
CPUがソフト的に、SRAMに対するアクセスを遅らせるのが良いかと思います。

ちなみに、当方ディスアセンブラを持っていませんので、SRAMのチェックがどこで走っているのか、
すぐに探し当てられません。頑張りますが…お待ちください。
(一般のディスアセンブラでは使い勝手が良くないので、自作しないと…)

余裕を持って36ms待たせる場合、ファミコンのクロックが1.7897725MHzですから、
0.036 / (1.7897725 * 10^6)^-1 ≒ 64432
つまり64432クロックウェイトをかける必要があります。

844:783
11/01/16 14:10:22
本当はCPUへのリセット時間を引き算できるし、このシーケンスを挿入するまでの命令で所用するクロックも
引き算できるはずですが、困難なので後に回します。
実装できてから、どこまでループを減らして大丈夫かチューニングすればよいと思います。
プログラムはこんな感じ。

LDX ???? ; 2(2)
START1:
LDA #$FF ; 2(2)
START2:
SBC #$01 ; 2(2)
BNE START2 ; 2(2)
DEX ; 1(2)
BNE START1 ; 2(2)

このプログラムで消費するクロックは、
2+(2+(2+2)*255+3)*??
です。
計算すると、??=63のときに64577クロック消費することが分かるので、
??=#$3F
となります。
レジスタの値、ステータスレジスタなども考慮して挿入場所を決める必要があります。
最悪、スタックに退避させるということで…。

845:783
11/01/16 14:18:48
さっきのプログラムで2(2)というのは、2が必要とされるメモリで、(2)が消費するクロックです。

A2 3F A9 FF E9 01 D0 FC CA D0 F7

これとSRAM enableのコードをどこかに埋め込むということです。

ちなみに、779さんの話をきいて、間違いなくFFFC、FFFDで示される場所にジャンプしている
確信が取れました。6502はベクタアドレスが最上位に配置されるため、
プログラムROMは必ず最上位からマッピングされますから、
ROMの容量によって開始場所が変わるんですね。
ファミリーベーシックは$80BAです。他のプログラムと違いますが、
ROMが32Kbit固定なのでこれでも問題は起きないのです。

さて、検討をはじめますか。時間が必要だと思うので、気長に待ってください。


846:779
11/01/16 14:27:12
リセットICで作ったリセット信号は本体のものとは別です。本体からのリセット
信号がカセット端子に出ていれば良いのですが、そうなっていないようなので。
3.4msではうまくいかなかったので34msにしたのですが、微調整の余地はあります。
リセット時間を短くして試行してみます。

847:783
11/01/16 14:46:01
なるほど。カセットに載ったチップは、自力でCPUよりも早く起動してるんでしょうね…。
KONAMIのVRCとか。

私のは本体起動直後にコードを埋めてしまってますので、
調整は苦しい可能性があります。
ご無理なさらない程度でお願いいたします。


848:779
11/01/16 15:34:10
起動時のSRAM有効化は、ソフトウエアで無理をしなくてもハードウエアで
解決も可能です。PICで適当にウェイトしてからenableにすれば済みます。
改造の敷居はますます高くなってしまいますが。


849:ナイコンさん
11/01/16 17:03:42
>>844
Bccは飛ぶ場合3で飛ばない場合2だよ。
ページ境界跨ぐと更に+1されます

850:783
11/01/16 17:26:18
>>849
ありがとうございます。↓こんな感じですかね。
URLリンク(crystal.freespace.jp)

クロック計算は面倒といえば面倒なのですが、
昔のゲームは全てこれで作られていたわけで、
先人の偉大さには敬服するばかりですね。

851:ナイコンさん
11/01/16 17:40:04
>>850
フレーム単位になりますが長いウェイトは$2002の
bit7を見ると楽ですよ。

ldx #4 ; 大体4フレーム待つ(16.66...ms x4)
.loop
lda $2002
bpl .loop
dex
bne .loop

こんな感じで。

852:ナイコンさん
11/01/17 00:47:14
久々にこのスレに来たら超ハイレベル化しててワロタw
昔、マシン語ゲームがベーマガに載った俺が完全ザコ化してるとかwww

853:ナイコンさん
11/01/17 13:26:25
よう、ザコ(´・3・`)

854:ナイコンさん
11/02/03 19:22:44
ファミコンの驚くべき発想力
URLリンク(www.amazon.co.jp)
ここにいるかたなら楽しめると思います

855:ナイコンさん
11/02/03 22:05:00
いたるところで宣伝してんじゃねーよカス

856:ナイコンさん
11/02/05 13:57:02
>>854
忘れてた。思い出させてくれてありがとう。

857:ナイコンさん
11/02/06 17:02:59
ここに居る人には楽しめない本ですわな
ゲ製板の連中の感想
スレリンク(gamedev板:502-512番)

858:ナイコンさん
11/02/06 17:03:22
そんなもん思い出して誰が得するんだよ

スレリンク(gamedev板:502-番)

> ファミコンの門外漢が調べて書いた感は否めないが
> ファミコンプログラムに興味がある人がギコファミに行く前に
> 読んでおくべき入門書だと思う

> いくら丁寧でもタイトル詐欺はアカンやろ

> 1ページ満たない程度の「0爆弾」概念の説明があるだけ

> あたかも4方向スクロールにネームテーブル4画面モードが必要かのような記載してるくらいなので
> マトモにFCでプログラミングしたことない人だよ

> 0爆弾の説明も透明なスプライトを配置するって書いてるけど、
> それだとスプライトヒット検出のビット立たないしなあ




859:ナイコンさん
11/02/07 00:17:22
使用キャラクタ数を増加させる限界テクニック
・反転すべし
・パレット変更すべし

バカにしてるだろこれw

860:ナイコンさん
11/02/08 01:36:34
>>858は俺のドッペルゲンガーなのか?引用してるレス番まで俺と同じでワロタ

861:ナイコンさん
11/02/13 20:50:11
>>859
今の時代でも当たり前に使われてるよな・・・

862:ナイコンさん
11/02/24 22:22:59.00
ニンテンドーDSi上でプログラム言語「BASIC(ベーシック)」が使える「プチコン」
URLリンク(gigazine.net)
2011年3月9日から 800DSiポイント

863:ナイコンさん
11/02/25 01:14:49.67
1048576 byte free

864:ナイコンさん
11/02/25 01:51:39.23
入力が大変そうだ
PV-7やカマボコキーボードよりも大変かな・・・

865:ナイコンさん
11/02/25 04:36:39.15
タッチペンでポチポチやってくのか
ファミベ時代に人差し指で入力した頃を思い出せてくれるなんて胸熱だな

866:ナイコンさん
11/02/25 12:22:08.99
そんなところまで再現して懐かしのBASIC環境を提供とは・・・できる!

867:sage
11/03/20 00:52:17.71
はじめまして。
懐かしくなって私もファミリーベーシックのカセットを買ってきて、
とりあえずEnri様の解析ページと回路をぽーっと眺めています。
sramを4キロバイト有効ににしたければもともとのsramを剥がして
27256か何かにのせかえてアドレスをもう一本ひっぱってくれば
4キロバイトにはなるような気がします。
プラスアルファとして、$8000以降のrom領域に裏ramを追加できれば
ものすごく便利な気がします。
以前ファミコンを無改造でカセットのみゲームカートリッジの改造を行い、
マイコン遊びができるようにするというようなお題のページで
$8000以降のrom領域に書き込むための考察があったような気がしますが
検索ワードが悪いのか見つかりません。
どなたか上記のようなウェブページに思い当たるところがありましたら
教えていただけないでしょうか。



868:ナイコンさん
11/03/20 01:32:08.37
後半何が言いたいのかわからない
検索の仕方というより日本語自体が使えてない

869:ナイコンさん
11/03/20 03:46:12.98
>>868
日本語が分からないならとっとと半島に帰れよ、チョンが

870:ナイコンさん
11/03/20 07:41:58.60
はい、本性出ました。

871:ナイコンさん
11/03/20 13:58:46.38
867です。
どうもすいません。読み返してみたらご指摘の通り後半意味が通らない文章になっていました。
後半で書きたかったことは以下の通りです。

昔、マイコン遊びという観点で市販ファミコンカセットのプログラムromをramに置き換えて、
ファミコンのcpuから書き込みできるようにできないかということを考えているサイトがあったように記憶しています。
最近ファミコンの内部構造に興味が出てきたので探しているのですが、検索ワードが適切でないのかみつかりません。
そのようなサイトに心当たりがありましたらおしえていただけないでしょうか?

上記のサイトをなぜ今頃探しているかというと、ファミコンカセットのrom領域をramに置き換えを行う場合、
通常の外部バス有りマイコンの基本と同様にcsやrw(rd/wr)の処理だけ考えていればよいかという点について参考にしたいからです。

前半のram増設についてですが、$6000~$7FFFの場合にCSが選択されるので、sramにA11とA12をひっぱってくれば普通に使えそうな
気がしてきました。管理しない領域をファミリーベーシックがクリアしないのであればマシン語モニタのようなものを入れておけば
便利に使えそう。



872:ナイコンさん
11/03/20 19:37:26.88
うーん、森の電脳総合病院かねぇ・・・今は無いみたいだけど。

873:ナイコンさん
11/03/20 22:17:06.77
今はなくともWebArchiveなら・・・!

874:sage
11/03/21 01:50:47.24

867です。

森の電脳総合病院様ですか。ありがとうございます。そういえばそんな感じの名前だったような。
internet archivewではみえなさそうですね。残念です。他に何か似たような情報が載っているサイトが
ありましたらおしえていただけるとありがたいです。

とりあえず、2.0Aカートリッジでsramの増量(2キロバイト->8キロバイト)をやってみました。
同じ幅の8キロバイトsramの手持ちがなかったので32キロバイトsram(TC55257)と交換しました。
A13とA14をGNDに固定しているので容量の3/4を棄ててます。
ファミリーベーシックが管理していない$6000~$6FFF、$7800~$7FFFはリセットしても
クリアされないようです。バックアップスイッチをonしてから電源を切れば、次回起動時も
内容が残ってることを確認したので、ここにマシン語のツールを入れておくというのはできそうです。
けど、8キロバイトあるとそれなりにプログラムが書けそうな感じがしてきますね!(感じだけ(わらい))

別件ですが、起動時のたるいコンピュータの画面を「T」を押しながら起動してスキップしているのですが、
ベーシックのプログラムをクリアされてしまいます。起動時のたるい画面をスキップしつつ、
ベーシックのプログラムを残す方法がありましたらおしえていただけないでしょうか。

次は何をしようかな。i/oポートの増設してパソコンと通信できるようにするか、
それともベーシックのrom領域に裏ramを増設できないか検討するか。
マイコン遊びの順序からすると、ポートの増設かなあ。



875:ナイコンさん
11/03/21 21:08:23.07
>「T」を押しながら起動
メニュー画面でオフにする。
説明書ないの?

876:ナイコンさん
11/03/21 22:04:48.60
ないアルヨ

877:ナイコンさん
11/03/21 22:12:17.63
>>876
どっちだよw

878:ナイコンさん
11/04/06 11:11:19.75
ニンテンドーDSiウェアでBASICプログラミングが楽しめる「プチコン」レビュー
URLリンク(pc.watch.impress.co.jp)

879:ナイコンさん
11/04/06 11:12:16.90
ここかw

880:ナイコンさん
11/04/06 11:16:42.41
            )
             (
         ,,        )      )
         ゙ミ;;;;;,_           (
          ミ;;;;;;;;、;:..,,.,,,,,
          i;i;i;i; '',',;^′..ヽ
          ゙ゞy、、;:..、)  }
           .¨.、,_,,、_,,r_,ノ′
         /;:;":;.:;";i; '',',;;;_~;;;′.ヽ
        ゙{y、、;:...:,:.:.、;:..:,:.:. ._  、} < ここかw
        ".¨ー=v ''‐ .:v、,,、_,r_,ノ′
       /;i;i; '',',;;;_~⌒¨;;;;;;;;ヾ.ミ゙´゙^′..ヽ 
       ゙{y、、;:...:,:.:.、;、;:.:,:.:. ._  .、)  、}
       ".¨ー=v ''‐ .:v、冫_._ .、,_,,、_,,r_,ノ′
      /i;i; '',',;;;_~υ⌒¨;;;;;;;;ヾ.ミ゙´゙^′.ソ.ヽ
      ゙{y、、;:..ゞ.:,:.:.、;:.ミ.:,:.:. ._υ゚o,,'.、)  、}
      ヾ,,..;::;;;::,;,::;):;:;:; .:v、冫_._ .、,_,,、_,,r_,ノ′


881:779
11/04/14 22:17:30.82
>>867
私と似たようなことに興味がおありのようですね。779からの流れを見ていただければ
判ると思いますが、V2.1AはROMの1バイト書き換えでフリーエリア4kBとなりました。
自分は32kBのSRAMに換装してV3と共用で4kBx8バンクをDIPスイッチで切り替えられる
ようにしました。ROM書き換えでバックアップスイッチを自動化するのが最終目標ですが、
ハードウエアの完成の時点で計画が止まってたり…。
そのうち改造記事でも作ってブログにアップするつもりでしたが、伸び伸びに
なってます…。

BASICプログラムを残す場合は、プログラム入力後一旦systemコマンドで
メニュー画面に移って、そこでバックアップスイッチをonにして電源断。
Tキー起動後にメニューが現れたらそこでバックアップスイッチをoffに
してBASICを選択すればOKです。マニュアルを読んでも判りにくいですね。

882:ナイコンさん
11/04/14 23:04:14.38
はい次

883:ナイコンさん
11/04/17 15:56:09.17
悔しいw

884:ナイコンさん
11/04/17 18:03:01.08
ほら、早くw

885:ナイコンさん
11/04/23 09:19:06.56
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

886:ナイコンさん
11/04/23 18:33:19.21
キー押したままやで

887:ナイコンさん
11/04/25 19:21:30.55
            )
             (
         ,,        )      )
         ゙ミ;;;;;,_           (
          ミ;;;;;;;;、;:..,,.,,,,,
          i;i;i;i; '',',;^′..ヽ
          ゙ゞy、、;:..、)  }
           .¨.、,_,,、_,,r_,ノ′
         /;:;":;.:;";i; '',',;;;_~;;;′.ヽ
        ゙{y、、;:...:,:.:.、;:..:,:.:. ._  、} < ここかw
        ".¨ー=v ''‐ .:v、,,、_,r_,ノ′
       /;i;i; '',',;;;_~⌒¨;;;;;;;;ヾ.ミ゙´゙^′..ヽ 
       ゙{y、、;:...:,:.:.、;、;:.:,:.:. ._  .、)  、}
       ".¨ー=v ''‐ .:v、冫_._ .、,_,,、_,,r_,ノ′
      /i;i; '',',;;;_~υ⌒¨;;;;;;;;ヾ.ミ゙´゙^′.ソ.ヽ
      ゙{y、、;:..ゞ.:,:.:.、;:.ミ.:,:.:. ._υ゚o,,'.、)  、}
      ヾ,,..;::;;;::,;,::;):;:;:; .:v、冫_._ .、,_,,、_,,r_,ノ′



888:プチコンまとめWiki ◆oMOeOYErjQ
11/04/28 23:03:58.61
やあ(笑)

889:ナイコンさん
11/04/29 06:11:59.14
私達はお互いに潰し合う仲間です。
同じ馬鹿として、宜しかったら泥仕合に参加して下さいまし。

890:ナイコンさん
11/04/29 07:16:12.30
ほら、早くw

891:ナイコンさん
11/04/29 10:04:51.14

      人
     (__)
    (__)  
    (`・ω・´)   ∬ うんこでござる
   .ノ^ y ´~ フ━● 
   ヽ,,ノ==l ̄     
    /  l |     
"""~""""""~"""~"""~"

892:ナイコンさん
11/05/06 00:25:28.78

867です。

>>881の779さん
プログラムを残す方法を教えていただいてありがとうございます。
今は電池つなげない状態なので、落ち着いたら確認します。

基板をつくりはじめましたが、ポカミスでCPLDに正しく
書き込みができず、足踏みしていましたが形ができてきたので
話のネタに報告します。(つづく)


893:ナイコンさん
11/05/06 00:27:47.63


カートリッジからA14~A0、D7~D0、/ROMSEL、O2、R//Wを
引き出してCPLD(XC9572XLを使用しました)につなぎました。
また、最低限の動作確認のため、LEDを1つ接続しました。
データの方向はD7~D0は入出力、LEDは出力、その他は入力です。

以下がCPLDに書き込んだソースの宣言部以外のすべてです。(つづく)



894:ナイコンさん
11/05/06 00:30:06.90

architecture Behavioral of top is
 signal wLED : std_logic;
begin
 LED <= wLED;
 wLED <= DATA(0) when (O2 = '1') and (nW = '0') and ((not nROMSEL)&ADRS = x"4040");
 DATA <= "ZZZZZZZZ" when (O2 = '1') and (nW = '1');
end Behavioral;(つづく)


895:ナイコンさん
11/05/06 00:32:28.71



BASICが起動してPOKE &H4040,0もしくは1でLEDのON/OFFが制御できました。

今後はデータ入力を実験、メモリマッパの実装、romの切り離し制御、
キャラクタromのram化とすすんでいけたらと考えています。(おしまい)




896:ナイコンさん
11/05/08 12:31:58.39
867です。
日記状態ですいません。

自作ファミリーベーシック改造基板に機能追加して、32キロバイトのsramを
$5000から4キロバイト*8バンクで認識されるようにしました。切り替え制御は
$4043にバンク用のi/oを置いてます。CPLDの空きピンが残り3ピンなので、
今回増設したsramを$8000からのbasic romと切り替えできるようになったら
本体側の改造はひとまずおしまいにしようかと考えています。


897:ナイコンさん
11/05/08 15:55:19.51
>>896
今でもファミベを弄っている数少ない同志と見込んで
是非ともそのカセットの作り方など詳しくブログなどで公開して欲しいです!

898:ナイコンさん
11/05/10 00:18:45.09
867です。
毎度日記状態ですいません。

>>897
ブログで写真とかは出してるんですが、回路図のようなものをあげたほうがよいのかなあ。
最小の配線しかないけど、電子工作やったことがない人は配線のデバッグが苦しいかも。

カートリッジのnROMSELからキャラクタrom 2個の22番ピンに行くパターンをカットし
CPLDで制御するようにして裏ramを実現できました。
basicでromを裏ramにコピーし、ついでに$8570を$7Fに変更してリセットしたところ、
2.0Aですが4030 BYTES FREEになりました。
メイン側の改造で最低やりたかったことはここまでです。CPLDはあと2ピン空きがあるけど、
何が実装できるか???


899:779
11/05/12 21:42:55.87
燃料になるか分かりませんが、バックアップスイッチをソフトウエア化
するために必要な回路図を公開しておきます。ROM書き換えが前提ですが…。

URLリンク(niga2.sytes.net)

マニュアル切り替えでもバックアップ切り替えをタクトスイッチで操作
しますので振動で暴走しにくくなってます。

900:ナイコンさん
11/05/13 01:21:42.38
すがすがしいくらい綺麗な回路図をありがとう

901:ナイコンさん
11/06/15 20:49:40.12
867です。
スタンドアロンだとしんどすぎるので、キーボードのカセット入力に
使われている4069から線を引き出してmax232経由でrs232cからインテルhex形式の
データを読み込めるローダを作りました。
タイミングをはかるのにメモリマッパのCPLDのあまりでカウンタを作って
楽をしているのですが、そこだけ作り直せばmax232をつないだだけの
ファミリーベーシックでも動きそうです。そのようなものに需要はありますか?
実機派の人には便利なような気がしますが。


902:ナイコンさん
11/06/16 02:32:47.62
オクたのむ

入札するから

903:ナイコンさん
11/06/18 03:12:10.32
回路図とローダー公開希望!
是非PLD使わないバージョンで

904:ナイコンさん
11/06/21 07:09:48.82
PLAY命令の詳細仕様って無いかな?M,Y,Vの意味がよくわからん

905:ナイコンさん
11/06/21 12:57:37.12
URLリンク(www.nicovideo.jp)
よくできてる。

906:ナイコンさん
11/06/21 21:40:45.11
>>905
ブワッ…

907:ナイコンさん
11/06/22 00:42:44.15
久しぶりにファミベ動画も見てきたよ

908:ナイコンさん
11/07/10 07:31:25.19
867です。
ファミリーベーシックにrs232c経由でインテルhexを流し込むためのローダ、
とりあえずソースとダンプリストをアップしました。
興味のある方どうぞ。


909:ナイコンさん
11/07/10 08:28:58.65
おつです
どこですか

910:ナイコンさん
11/07/10 14:39:48.14
867です。
ファミリーベーシックにrs232c経由でインテルhexを流し込むためのローダのアップ先ですが、
わたしが書いている電子工作のブログに置いてます。週末に置いたので、検索すればすぐみつかると思います。
自分のブログ置いたので、ストレートにアップ先を書くのはちょっと下品かと思って書いていませんでした。
わかりにくくてすいません。


911:ナイコンさん
11/07/13 07:02:38.63
URLリンク(www.google.co.jp)

912:ナイコンさん
11/07/25 21:44:28.52
V3
データレコーダに変わるファミリーベーシックの記憶装置です。

913:ワニチャン
11/07/26 17:53:49.57
はじめて書き込みします。

子供の頃にファミリーベーシックのメッセージボードで隠しメッセージが
出たことがあります。
何せ相当前のことなので記憶だけで書くのですが
通常のメッセージボードとは色違う画面になり
開発者からのメッセージらしきモノがでました。
「アリガトウ...」的なメッセージの後で、
「レンラククダサイ」というような内容だったのですが、
当時はどこに連絡すれば良いか分からず、
結局なにもしなかったのを覚えています。
このメッセージをもう一度見たいのですが、どう出すか分かりますでしょうか?


914:ワニチャン
11/07/26 17:56:44.62
あともうひとつ、当時近くジャスコの4階でファミリーベーシックの
金色のキーボードがあったのですが、あれは何だったか分かりますでしょうか?
うる覚えですが、なんか普通のベーシックとは少し違っていた覚えがあります。
開発機かなんかかな?と思っていましたが、何だったか分かれば知りたいです。


915:ナイコンさん
11/07/26 20:11:09.93
>>開発機かなんかかな?
「開発機」か「なんか」のどちらか2択です。
実は、「なんか」なのです。
ジャスコの4階のファミリーベーシックの金色のキーボードの正体は、
「なんか」なのです。

916:ナイコンさん
11/07/26 23:08:02.79
メーカーが限定で塗ったんなら超レアだけど
ジャスコが勝手に塗ったんなら只の客寄せ
もしオクに出たならそこんところよく確かめないとね

917:ワニチャン
11/07/27 13:20:06.45
色々調べたら、PlayboxBasicってヤツだったんじゃないかと思います。
でもキーボードの画像が見つけられず、真相は分かりませんが。

918:ナイコンさん
11/07/29 16:24:14.68
久々にファミリーベーシックを触ろうと中古屋を巡ったけど
どこにもなかったわ

919:ナイコンさん
11/07/29 16:29:56.29
ないアルヨ

920:ナイコンさん
11/07/29 21:34:17.96
あるナイヨ

921:ナイコンさん
11/07/29 23:27:46.74
ありますん

922:ナイコンさん
11/08/11 19:39:21.49
家族揃ってレーシック受けました
ファミリーレーs

923:ナイコンさん
11/08/12 12:32:20.17
大阪日本橋の状況をはなしのねたにおしらせします。
今は中古ゲーム屋数軒のうち、ある店に1個だけ箱入り中古が売ってる感じ。
入荷して一ヶ月くらいたつのかな。
私は二月ごろ欲しくなった時に在庫がなくて、入荷するまで一ヶ月以上
入荷している店はないか探して買いましが、ほぼ同時期のある日、2軒に
1個ずつ入荷したので両方買ったけど、その後は1ヶ月かそこら見かけなかったので、
これも売れてしまったらまた一ヶ月やそこらは見なくなるんじゃないかと思います。
まあ、待てば店頭にでてくるだけましか。



924:ナイコンさん
11/08/12 16:12:57.78
ファミベのキーボードって押し具合が超イイ感じなんだよな

925:ナイコンさん
11/08/12 17:54:47.02
ヤフオクにあるジャン

926:ナイコンさん
11/08/13 02:44:31.54
あのファミベキーボードのパチパチカタカタ鳴るのとタッチ感イイヨね!

927:ナイコンさん
11/08/17 11:28:53.50
キーが小さいのと、STOPキーの位置に不満はあるけどね

928:ナイコンさん
11/08/26 13:09:04.14
最近実機をみてないからキーのサイズが思い出せない

929:ナイコンさん
11/08/26 14:04:50.44
お子様サイズではあるね
いっちょ押し入れから引きずり出して計ってみるかな

930:ナイコンさん
11/08/27 12:47:38.90
コードが短いね。

931:ナイコンさん
11/08/27 14:09:39.12
厚みがあるよね


932:ナイコンさん
11/10/20 04:18:36.65
厚みの割には軽いよね
初代無印PC-9801のキーボードの重い事重い事…

933:ナイコンさん
11/11/25 16:16:54.66
やすぶしーん

934:ナイコンさん
11/11/27 02:55:12.77
中身は随分スッカラカンで基盤なんてほとんど無いから
もっと薄くコンパクトに出来るだろうな

935:ナイコンさん
11/11/27 05:25:13.69
魑魅魍魎を組み込んでスタンドアローン…
そんなふうに考えていた時期が俺にもありました

936:ナイコンさん
11/11/27 11:35:25.97
俺にはありませんでした。

937:ナイコンさん
11/11/28 02:17:19.09
魑魅魍魎じゃ15pのキーボード刺さんないだろ

938:ナイコンさん
11/11/28 12:33:19.19
ファミコン互換機をみかけるたびに15ピン拡張ポートがないかと
確認するのですが、昔はあったらしいけど、今の日本橋ではみつからないですね。
romにパッチあてて、コントローラ2あたりにキーボードをつなげるようにすれば
いいんだろうけど、なかなかむつかしそうですね。






939:ナイコンさん
11/11/28 12:37:43.80
ファミリーベーシックを逆アセンブルした方、いらっしゃいませんか?

逆アセンブル時に使用するcode/dataを区別するヒントファイルを
いただけないでしょうか。

また、実行結果からcodeとdataの範囲情報を出力できるエミュレータとか
ありましたらおしえていただけないでしょうか。

よろしくおねがいします。



940:ナイコンさん
11/11/28 17:18:24.23
>>939
昔、一応VBAマクロでV3.0を逆アセンブルしたことはある。
面倒だったので全然解析してないけど。

この辺のページとか参考にしてたかな。
URLリンク(hp.vector.co.jp)

でも今は、なんか便利そうなのが…
URLリンク(mrchecker.web.fc2.com)

codeとdata云々はちょっと意味がわからんかったけど、
上のツール使ったら分かったりしない?


941:ナイコンさん
11/11/28 18:15:12.24
コードとデータなんて機械的に分けられるもんじゃねえだろ
ジャンプテーブルなんか使ってたらひとたまりもない

942:ナイコンさん
11/11/28 20:53:44.11
そういう時はIDAの出番だよ
ほぼ間違いなくコードとデータに分けてくれる
プラグインを使えばコメントさえ付けてくれる

オレはファミコンの解析はこれ一つでやっている

943:ナイコンさん
11/11/29 10:54:03.08
終了時にプログラムカウンタの通過したバンク・アドレスを出力すりゃいいんだから
改造としては簡単な部類だと思うが
ビルド環境の導入から始めても2時間も掛からんだろ

俺はやらんがね

944:ナイコンさん
11/11/29 20:50:07.15
みなさん、レスありがとうございます。

>>940
codeとdataの分離なしに逆アセンブルすると、
dataの部分もcodeとして逆アセンブルしたり、
opコード(1バイト目)でなく、オペランド(2バイト目以降)を
逆アセンブルしてしまって、わけがわからなくなるのです
地道に読んでいけばよいのですが、一万行くらいになりそうなので
先人の知恵にすがりたかったのです。

>>942
IDAのフリー版をインストールしてみましたが、86系しかモジュールが入って
いませんでした。これは非常に強力そうだけど、けっこうお高いのですね。
ちょっと買えそうにないです(泣)
コード解析機能のある逆アセンブラとして、td6502というのを見つけたので、
これでとりあえでためしてみます。

>>943
たしかにエミュの改造は小改造ですみそうなのですが、私のちからでは
ビルド環境をそろえるのと、エミュの動作を調べるのでけっこうな
時間を食いそうに思い躊躇しています。
コード解析つきの逆アセンブラで地道にすすめて、きりがなさそうだと
感じたらエミュにも挑戦するかもしれません。
ファミリーベーシックが動いて、ビルドが簡単で、ソースが読みやすい
そんな都合の良さそうなものがなにかありますでしょうか?
(Cぐらいしか読めません。ビルドはlinuxだと比較的簡単なんでしょうか?)

後だしになってもうしわけありません。
やりたいことはメッセージボードやミュージックボードの、自作プログラムを
書き込んで問題なさそうな領域の調査やBASICのパッチあてです。
何か追加情報ありましたらレスいただけるとありがたいです。


945:940
11/11/29 22:28:15.09
>>944
ツール系は他の詳しそうな人に任せる。
944の望むモノは理解できたので、以下、経験談。

ファミリーベーシックは、V2もV3も、プログラムROMは32Kバイトで
&H8000~&HFFFFにプログラムROMがマップされる、というところはおk?

その最終部分、&HFFFA~&HFFFFまでの6バイトに、
NMIとリセットとIRQの割り込みベクタがリトルエンディアンで書き込まれている。
よって、ここに記載されているアドレスを起点にして順にたどれば、
データを間違ってディスアセンブルする、という現象はひとまず回避できる。

次に、他の人も描いている通り、6502は非常にややこしい間接アドレッシングがあって、
ジャンプ先アドレスがリトルエンディアンで2バイトずつ、ずらずら並んでいるところがある。
ここも、それらを検知したうえで、それぞれ基点として逆アセンブルしなければならない。
(V3.0の場合は5箇所ぐらいみつかった)

あと、非常にトリッキーなアセンブルをしている箇所が、少なくともV3.0には数箇所あった。
それは、オペコードではなく「オペランドのアドレスに向かってジャンプ(またはブランチ)する」というもの。
これによって、通常の逆アセンブルをやっていては絶対に通らない部分がある。
(つづく)

946:940
11/11/29 22:29:02.02
(つづき)
たとえば、

AE A5 33

という並びの3バイトのマシン語を解釈すると「LDX $33A5」となる。
だが、&H33A5はファミコンでは未使用のアドレスなので、
結果的に「LDX #$00」と同じ動きになる。

一方、この3バイトのマシン語の2バイト目「A5」に向かってジャンプする命令が別の箇所に存在する。
この場合、CPUは「A5 33」の2バイトを解釈して「LDA $33」となり、
&H0033の値をAレジスタにロードするという、
6502独自のゼロページ命令として解釈される。

これによって、「LDX #$00」と「LDA $33」が3バイトで表現され、都合1バイトメモリが節約できるわけ。

この辺に注意して逆アセンブラを自作し、何度も何度ももジャンプベクタを
見つけてはそれを起点に加えて逆アセンブルを繰り返していけば、
逆アセンブルは出来ると思うよ。8ビットでオペコードも少ないし、情熱があれば何とかなる。

ただ、V2.0の場合、メッセージボードやミュージックボードもマシン語で書かれているから、
「使っても良さそうな領域」と「使えなさそうな領域」の区別は結構難しい気がする。

むしろ、V3.0を使い、GAME1~GAME4の、
ベーシックの中間コードを丸つぶししてパッチを当てるほうが楽だと思うんですがね。

947:ナイコンさん
11/12/01 23:38:27.46
普通にNES用の逆アセンブラツールじゃいかんの?

948:ナイコンさん
11/12/02 17:24:34.76
944です。
レスありがとうございます。

>>945
なるほどー。V3の内蔵プログラム領域というのは見つけるのが簡単そうですね。
V3が安く店頭に出てきたらぜひやってみようと思います。(今は2.0をさわってます)
ジャンプテーブルの件、逆アセンブラによってはcode/dataの他にジャンプテーブルも
記述できるようですので、特定でき次第逆アセンブラのヒントファイルに書いていく予定です。
オペランドにジャンプするというのはいやらしいですね。8ビットパソコンのプロテクトなんかでは
そんなのもあったような気がするけど、rom化するプログラムでそんなことをすることがあったのですね!

>>947
へたれなのでできるかぎり自動化したいのです。

現状、G-NESにトレースログを出力(他のエミュにもあるとは思うけど)する機能があることが
わかったので、トレースログからcode部を抽出していっているところです。
あれこれトレースして6キロバイト分くらいコード部がでてきました。まだまだ先が長いです。




949:ナイコンさん
12/02/07 02:59:56.77
ZACNER IIとかって内蔵ゲームの領域潰してプログラムされてたの?
そうすると4KB超って事になるんだろうか?

950:ナイコンさん
12/03/11 11:12:53.09
今ファミコン互換機が新聞広告に載ってるぞ

951:ナイコンさん
12/03/13 20:51:46.03
あんまりファミベに関係ないな

952:ナイコンさん
12/03/14 12:28:02.44
スレ違いではありますが、どんな機種が広告ででてたのですか?
15ピンポートとかありました?



最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch