• ベストアンサー

basic言語でハードディスクを読むプログラム

BASIC言語で以下の条件を満たすプログラムを組みたいと思っています。よろしくお願いします。 (1) ハードデスクでファイル等を管理している(FAT等)のは、トラック、セクタでどこになるのか。(フロッピーとは違うかもしれない。) (2) BASICでは、トラック等のハードにアクセスすることができないと思うので、機械語をBASIC上で、CALLしたいと考えています。   ア、機械語をつくる手順をおしえてください。     上級言語で作ってから、機械語におとせば、簡単なようにおも    うが、それでよいか。   イ、メモリー上に、CALLするプログラムをアップしようと考え   るが、メモリーのどこにアップして実行させるとよいか。   ウ、CALLさせる前に、なにかプログラムで準備する大事なこと   があるか。

質問者が選んだベストアンサー

  • ベストアンサー
  • zwi
  • ベストアンサー率56% (730/1282)
回答No.7

>1 まだ、決めていません。 >2 PC98時代のBASICです。 >3 30年ぐらい前です。 >4 全く聞いたことがありません。 状況は分かりました。 DOS時代の知識でWindows上でプログラミングする事はできません。あの時代のディスクフォーマットよりも現在のHDDのNTFSフォーマットは複雑怪奇です。 日本語の資料は無いので、次のような技術資料を理解出来る知識が必要です。 http://sourceforge.net/projects/linux-ntfs/files/NTFS%20Documentation/ WindowsOSの機能を理解すれば、セクタリードをする事も可能ですが初心者には難しすぎる技術ですので最初にチャレンジする課題に相応しいとは思えませんが、それでもチャレンジしたいでしょうか? とりあえず、質問者さんが取れる方法は2つ。 1.現在のWindows環境下のプログラミングにふさわしい環境を利用する。機械語は不要です。 (a)ActiveBasicを覚えて、WindowsAPI(Win32API)を利用する。 http://www.activebasic.com/ http://orios.s151.xrea.com/activebasic/ http://www.geocities.jp/debu0510/basic.html ※ActiveBasicならセクタリードもActiveBasicとWindowsAPIだけで機械語は不要です(それ相応の知識を必要としますし、ActiveBasic用の参考になるサンプルは無い可能性が高いので自力で解決出来るだけの実力を身につけてください)。 (b)VisualBasic.NETを覚えて、WindowsAPI(Win32API)を利用する。 http://homepage1.nifty.com/rucio/main/main.htm http://www5b.biglobe.ne.jp/~suugaku/mahouhinn/visualbasickougi/index.htm 2.Windowsを捨てDOS時代の環境を使う。 FreeDOS http://ja.wikipedia.org/wiki/FreeDOS UBASIC http://www.rkmath.rikkyo.ac.jp/~kida/ubasic.htm FreeDOS+UBASICの質問に答えられる人は、この掲示板にもたぶんいませんので、すべて自力でやる必要があります。

112233445
質問者

お礼

何ができて、何ができないのか、また、自分のやろうとすることが、全体のどの位置にあるのかが分からなかったのが、おかげさまで方向性が見えてきたと思います。道はまだ遠いですが。 参考になる回答をいただきありがとうございました。

その他の回答 (6)

  • tetsumyi
  • ベストアンサー率26% (1858/7094)
回答No.6

Windowsでのディスク制御に必要な情報です。 http://www7a.biglobe.ne.jp/~tsuneoka/win32tech/5.html これでわかるように直接トラック等のハードにアクセスすることは危険ですからできないようになっています。 そこで直接アクセスする方法としては仮想FDを導入してこの領域でトラック、セクタを指定して操作は可能かもしれません。 どうしてもBasicでCALLしたいのであれば99Basicでマシン語が動きます。 99BasicはWindos7で動作したと言う報告はあるようです。

  • yama1718
  • ベストアンサー率41% (670/1618)
回答No.5

私のNo.1の回答ではWindows95や98、それより昔のMS-DOSのPC-9801などを想定していたのですが、 >NECのノートパソコンでWINDOWS7です。 この時点で無理ですね、他の方の回答の通りです。 今のWindowsシステムはブラックボックスだらけでハードウェアの直接操作はできませんから。 その代わりソフトが暴走しても、そのソフトだけ強制終了してシステムに与える被害を最小限にしてくれるのです。 そもそも貴方が思っている様なWindowsで動作し機械語を実行できるBASICは聞いた事がありません、 Visual BASIC や Active BASIC は Windows用に設計された似て非なる物ですし、 BASIC/98と言うWindows用のN88-BASIC互換のBASIC言語もありますが、 これには機械語を実行する機能はありません、せいぜい昔のBASICプログラムを少ない手間で動かす程度で、 本格的なソフト開発をする物ではないですね。

112233445
質問者

補足

勉強のためにどうなるのか、興味があって考えました。 学習の教材のひとつとして、今考えていることを題材にしてみました。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.4

いくつかの質問にお答えください。 1.利用しているBASICを明確にしてください(利用していないなら未定と書いてください)。 2.どのようなBASICを想像していますか?(PC-98時代BASICやMSX-BASIC、それとも最新のVB.NETでしょうか?。機械語をCALLとか機械語をメモリにアップロードと言っている時点で古典的BASICの香りがします) 3.このBASICの話は、どのような所で何時知識を得ましたか?(どの時点で知識が止まっているか明確にしたいのでお聞きします) 4.機械語でハードのインターフェイスを操作するような野蛮な事は、現代のOSの配下で動く限りできません。何かするためには全てOSのAPIに頼る必要があります。そのWindowsAPIに関してどこまでご存知でしょうか((A)聞いた事も無い、(B)名前だけは知っている、(C)少しなら使った事がある)?

112233445
質問者

補足

ありがとうございます。 1 まだ、決めていません。 2 PC98時代のBASICです。 3 30年ぐらい前です。 4 全く聞いたことがありません。 以上です。30年ぐらい前は、98のDOSBASICで、トラックに直接読みにいけたような気がするのですが。BASICのプログラムから機械語をCALLしてのプログラムで。 よろしく、お願いします。

  • Lchan0211
  • ベストアンサー率64% (239/371)
回答No.3

何か古い本を使って勉強しようとしているのですか? 質問内容が、20年以上前の8ビットパソコンや16ビットパソコンで、 パソコンに内蔵されているBASICを使っていた頃の発想です。 Windows7上で、Basic+機械語を使って、ハードウェアに アクセスするプログラムを作るなんて、通常の発想では ありえません。 Windowsは、全てのハードウェアをOSが管理するので、 ドライバでもない限り、OSのAPI経由せずに勝手にハードウェアに アクセスできませんし、HDDのファイルシステムにしても、 最近はFATでなくNTFSが使われています。 Windowsを使って何かコンピュータの勉強をしようとしているなら、 その本は使い物になりません。Windows7の環境とは違いすぎます。 お使いの環境に合った別の本を買って、 違うアプローチで勉強を進めることを お勧めします。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.2

1.BASICからFATにアクセスする方法はありません。 2.BASICの仕様によるので、その言語におけるマシン語の扱いを調べてプログラムを組むことになります。 マシン語のロードやコールに付いてもBASICに一任されるので、ロード位置を指定する事はできません。 マシン語の実行結果は任意の位置に格納する事は可能かと思いますが、利用可能なメモリ範囲を事前に確認して利用可能範囲をオーバーする事が無いようにしないといけません。 従って、言語やハードウェアに対しての十分な知識を要求されるプログラムが書けないと無理でしょう。

  • yama1718
  • ベストアンサー率41% (670/1618)
回答No.1

どんな機種で動かすのか?OSは何?何のBASIC言語か? 不明点が多すぎますので、具体的な回答は不可能です。 ハードディスクなどのファイルシステムはMS-DOSで管理されています。 Windowsでもコマンドプロンプト内ではDOSの動作をエミュレートしています。 DOSではint21hのファンクションなどから色々な操作をします。 まず、MS-DOSのリファレンスマニュアルをマスターしてBASICとやり取りするプログラムを作成します。 MS-DOSやWindowsで使用する前提のBASIC言語なら専用の命令が用意されていると思います。 メモリやファイルの管理などの仕様もリファレンスマニュアルで解説されています。 今時、MS-DOSや機械語、BASICでプログラムする人など皆無でしょうから 参考文献を探すだけでも大変でしょうね。

112233445
質問者

補足

NECのノートパソコンでWINDOWS7です。 >ハードディスクなどのファイルシステムはMS-DOSで管理されています。について、ファイルの情報がハードディスクのどの部分にあるのか。教えてもらえないでしょうか。 >今時、MS-DOSや機械語、BASICでプログラムする人など皆無でしょうから。について、FATの位置等の情報から、直接ハードディスクにファイルの内容を読みにいって、みようかと考えています。(勉強のため)どんなプログラムだとよいでしょうか。 BASICから、他の言語で書いたプログラムを呼び出し、実行させることはできるでしょうか。そのときのプログラムはどうなるでしょうか。 また、逆に、他のプログラムからBASICのプログラムを呼び出すことはできるでしょうか。 そのとき、BASICのプログラムはコンパイルされていないといけないとおもうのですが。今、コンパイラーはあるのか。コンパイラーについてもよく分からないのですが、BASIC言語ごとに、コンパイラーはちがってくるとおもうのですが、今ででいるようなBASIC言語にコンパイラーは付属でついているものなのでしょうか。 いろいろまとまらない質問をしましたが、よろしくお願いします。

関連するQ&A

  • プログラム言語って何があるの?

    私、プログラム言語について調べています。 ウィキペディアをみてもたくさんあって、そこからまたリンクがたくさんあってどこでどのように区切っていいのか分かりません。そこで皆さんに質問したいのですが、プログラム言語はどのようなものがありますか? 大まかにプログラム言語の総称があってその次に (1)機械語(マシン語) (2)アセンブラ言語 高水準言語これの中に (3)インタプリタ言語 (4)コンパイラ言語がありますが、 (1)~(4)のそれぞれの詳細を教えてください。例:BASIC、C等 またこの枠に入らないプログラム言語がありましたら教えてください。 とってもマイナーなものでも構いません。出来ればURL欲しいです。 お願いします。m(_ _)m

  • 条件 の確認

    日本語を勉強しています。 していた宿題を確認したいんですが、教えてくださいませんか。 (答えは1つとはかぎりません)。 1)Aさんは部屋に{ア)入ると イ)入ったら ウ)いれば エ)入るなら}、電気をつけた。 私の答えは ア)とイ)です。 2)来年、東京に{ア)来ると イ)来たら ウ)来るなら}、ぜひ連絡してくれ。 私の答えは イ)とウ)です。 3)途中で本屋に{ア)寄ると イ)寄ったら ウ)寄れば }、遅れてしまった。 私の答えは イ)です。 4)蓋を{ア)開けると イ)開けたら ウ)開ければ エ)開けるなら}、蛇が出てきたんです。びっくりしました。 私の答えは ア)とイ)です。 5)本を見せてください。・・・・・・この本{ア)なら イ)なんだったら ウ)だったら}できると思う。 私の答えは ア)とウ)です。 6)もっと時間があれば、いろいろな所へ{ア)行く イ)いける}のに。 私の答えは ア)とイ)です。 質問がいっぱいですみません。教えてくれれば、幸いです。

  • アセンブリ言語は原始プログラムですか?

    質問(1) アセンブリ言語というのは、 add $S1, $S2 みたいなやつですよね? wikipediaで「ソースコード(ソースプログラム、原始プログラム)」の注釈1,2を読むと、 注1:【機械語の命令に記述するアセンブリ言語(アセンブラ)が存在するが、このアセンブラ用の文字列で記述されたプログラムはソースコードとは呼ばれないのが普通である。】 注2:【アセンブリ言語で書かれたプログラムはソースコードと呼ばれない】 と書かれてあります。 でも、 他の教材では アセンブリ言語で書かれたプログラム(原始プログラム) と書かれています。 どっちが正しいのでしょうか? 質問(2) 目的プログラム(オブジェクトプログラム)とは、 IT用語辞典によると 【オブジェクトプログラムとは、ソースプログラム(人間が認識できるプログラム言語で高水準言語など?)をコンパイラで機械語に翻訳したプログラムのことである】 とありますが、 ソースプログラムをコンパイラで翻訳するとアセンブリ言語になるんではないのですか? そのアセンブリ言語をアセンブラで翻訳して機械語になるのではないのでしょうか? どなたかご教授ください。 お願いします。

  • 国語の文法の問題についておしえてください。

    国語の文法の問題についておしえてください。 わからないので教えてください、解説があるととてもありがたいです。 次のア、イ、(ウ)、の動詞について、活用の種類と文中で用いられている活用形をそれぞれ答えよ 息を アきら せて山の中腹まで イ来る と、一枚の葉を口に ウくわえ た。 友達は僕と ア別れ てから、草村へと イ飛び降り たらしい。 すっかり ア晴れ上がっ たので、とても元気に イなり ました。 次のア、イ、(ウ)、の語について、品詞名と文中で用いられている活用形をそれぞれ答えよ 地上はもう ア明るい 昼間で、山の向こうには イきれいな 雲が見えた。 アおもしろかっ たのは、ジュースを飲んだ時それが苺のように イみごとに 丸まって鼻先に ウ付い たことだ。 多いですがよろしくお願いします。

  • Ruby言語にて、全角カナ⇔半角カナ変換がうまくいかずで困っております

    Ruby言語にて、全角カナ⇔半角カナ変換がうまくいかずで困っております。 以下のようにプログラミングをしてます。 結果が、思った通りではないのですが、何が原因でしょうか。 ※★→←★部分で囲んだ部分は半角文字です(ブラウザ上、半角文字が全角に変換されているようなので、  適宜そのような表記を入れました。 ●半角→全角変換 sss = "★→アイウエオ←★".tr('★→ア-ン←★', 'ア-ン') p sss ⇒★→アウオキケ←★ ●全角→半角 sss = "アイウエオ".tr('ア-ン', '★→ア-ン←★') p sss ⇒ア★→イ←★イ★→ウ←★ウ どうか原因を教えてください。

    • ベストアンサー
    • Ruby
  • BASICなど、数値計算用プログラミング言語の入手について

    10年あまり前、BASIC というプログラミング言語がプリインストールされているパソコンがあって、数値計算に利用して重宝していました。 現在、Visual BASIC という言語があって解説書も多く出ているようですが、どうも、用途が数値計算とは違うようで、言語仕様も昔のBASIC とは似て非なるもののように見受けます。そこで次のことがわかったら、教えていただきたいと思います。 (1)むかしのBASIC(例えば、N88BASICとか、F-BASICというのがあったと思います)と同じような言語で、Windows98上で実行できるソフトウェアがあれば教えてほしい。入手方法も知りたいと思います。 (2)それがなければ、数値計算に利用しやすい言語があれば、教えてほしい。私は、BASICのほかに、FORTRAN、アセンブラ言語(これは機械語に近いもので、ハードに依存するので類似品を求めることは難しいと思いますが)などによる経験があり、できればそれらに似ている方がよいですが、似ていることは、必要条件ではありません。Windows98上で走ることは、必要です。 数値計算は、EXCELなどでもある程度できますが、反復計算や、サブプログラムを自在に使うには、どうしても言語である必要があります。あまり高級でない、あまり高価でないものが望ましいです。

  • VBAを使ったセルの結合

    パソコンとVBA使用初心者です。 今仕事でVBAを使ってプログラムを作成しようとしています。 皆様にご教授していただきたいことが在ります。 ・ABCDEFGH…… 1あ ア 2 イ 3 ウ 4 エ 5 オ 6い ア 7 イ 8 ウ 9う ア 10え ア 11 イ 12 ウ 13お ア 14 イ 15 わかりにくいかもですが上のようなエクセルがあり A1から次の文字手前のセルまでを結合したいのですが、どのように書いたら出来ますか? それと最後の方のA13とA14だけの結合でその下は処理しない方法ありますか? 必ずC列には文字が入っています。 すいません…カタカナはC列です。 ひらがなはA列に飛び飛びで記入してあります

  • 公務員試験について

    なぜ 回答が 3になるのか分かりません。教えてください。また解き方も教えて下さい。 問題 a~d の4人は それぞれ2つの言語しか話せず、 その二つの言語は 英語ドイツ語 フランス語 または イタリア語のいずれかである。 今 ア~オの事柄が 分かっている時 確実に 言えるのは どれか。 ア a・b・d は 共通の言語で話せるが もう一方の話せる言語は 3人とも異なっている。 イ c と d は共通な言語で話せるが c が話せるドイツ語ではない ウ aは bとc の 間の通訳ができるが、 フランス語が話せない エ 4人が共通に話せる言語はなく3人が共通に話せる言語は一つだけある オ 英語とドイツ語両方話せる人はいない 1 a と c は英語 b とdはドイツ語を話せる 2 a と d は英語 b と c はドイツ語を話せる 3 aはイタリア語、 b は 英語、 c はフランス語を話せる 4 b は 英語 、c はイタリア語、dはフランス語を話せる 5 b はイタリア語、cは英語 、d はドイツ語を話せる 解説 まずイより c はドイツ語を話せて d はドイツ語を話せない。 ウよりaはフランス語を話せない 。オよりcは英語を話せない。 この時点で表1の様になる。 ここでアとエ より abdの三人が 話せる言語は 英語 イタリア語 のいずれかである。 英語だとするとオ より 英語とドイツ語の両方を話せる人はいないのだから 、a も b も ドイツ語が話せず ウよりaと c が 共通に話せる言語はイタリア語となる。 しかしエより4人が共通に話せる言語はなく、 3人が共通に話せる言語は英語だけとなるため 、bとdもイタリア語話せず b と d が話せる言語が英語とフランス語で 一致してしまいアに 反する。 よって abdの三人が話せる言語はイタリア語となり、イ より c も d もフランス語を話せて、 ウよりaはドイツ語を話せて、 エ より b は英語を話せる。 よって確実に言えるのは 3、 a はイタリア語 、b は 英語、 c はフランス語を話せるである

  • 英語の選択問題、10問あります。

    名詞の問題が多いです。どのような文に正しい名詞が入るのか分かりませんでした。 日本語訳があると助かります。スペルミス等あったらすみません。 1 He gave me()on what I should do in case of emergency.   アan advice イa few advice ウfew advice エsome advice 2 The approrching typhoon has all the()of being a big one.   アsignals イsignatures ウsigns エsymbols 3 Most department stores are crowded with()on Sundays.   アguests イclients ウcustomers エpassengers 4 I have to make()with my dentist.I have a bad toothache.   アan appointment イan application ウa reservation エa promise 5 The word“()”means a person who receives medical treatment from a doctor.   アphysician イpatient ウnurse エparamedic 6 The party was().   アsuccess イa success ウthe success エsucceeded 7 You must pay an extra()to sendthis parcel by registered mail.   アcharge イprice ウcost エbill 8 The word“()”means money to be paid by people or businesses to a government for public purposes.   アincome イsalary ウtax エwage 9 The()for personal computers has dramatically increased recently.   アimportance イsupply ウdependance エdemand 10 The Japanese are().   アhard-working peoples イa hard-working peoples ウhard-working country エa hard-working country 以上です。

  • 英語の問題の回答を教えてください!

    (1)空所に入る適切な接続詞を記しなさい。ただし与えられた文字で書き始めること。 (1)I will wait (t ) you are ready.(用意ができるまで待とう。) (2)(A ) you know, he is a hard worker.(ご存知の通り、彼は勤勉家です。)   (2)空所に入る適切な語をア~エから一つ選びなさい。 (1)What do you want (  )lunch? ア)for  イ)to  ウ)of  エ)from  (2)He works(  )night.  ア)in  イ)at  ウ)during  エ)for (3)She was (  )Paris last month.  ア)to  イ)in  ウ)at  エ)from   (4)Shall we go (  )your car or mine?  ア)by  イ)in  ウ)on  エ)with   (5)There is something I want to watch (  )television.  ア)by  イ)from  ウ)in  エ)on (6)My parents (  )in New York at that time.  ア)are  イ)was  ウ)were  エ)been     (3)次の文字を算用数字で表しなさい。   (1)five hundred sixty thousand two hundred and forty-three (2)three and two fifths (4)次の英文が説明している語をア~エから一つ選びなさい。 to go back to the place which you came from. ア)take  イ)visit  ウ)start  エ)return (5)( )内から適切な語句を一つずつ選び、記号で答えなさい。 (1)Let's( ア/be start イ/don't start ウ/start )with Lesson1. (2)( ア/Shall I  イ/Would you  ウ/Can I )like to go with us? ________ Yes,of course.   一つでも良いので分かったという方、いらっしゃいましたらどうかご回答お願いします!!! 

専門家に質問してみよう