=======================================   READER'S QUESTION & STAFF'S ANSWER ======================================= ◎次元の低い質問ですが、ご指導の程宜しくお願いします。 各機種用のS−OS”SWORD”システムが必要とありますが、購入方法をマシンか ソフトか価格等、もし貴クラブにおいて都合手配できるものなら幸いですが。 甚だ勝手な相談ですがお指導ください。                         #222 瀬戸 正造 北九州市 ◎これはお願いなのですが、S−OSの入力の仕方がわかりません。 よろしければお教えいただけますでしょうか。 先日の便箋、水晶の中心にハートマーク、そのハートのまわりには星座のマークが見え ます。                          #220 鶴身 哲郎 大阪市         各機種別のS−OS"SWORD"は、お手元の「S−         OS通信」にインプリメントされています。したがっ         て、システムディスクは「通信」の中のFORMAT         コマンド(88はFORMAT&SYSGEN)で作         成します。MZ/X1の場合          # FORMAT:B:/S         をキーインすることにより、Bドライブのディスクを         フォーマットし、システムディスクを作成することが         できます。turboで2HDを使用されている人は         BASICのユーティリティでフォーマットしたディ         スクをBドライブにセットし、          # FORMAT:B:/S/C         を実行してください(FORMATコマンドの詳細は         「通信」1号を参照のこと)。         それから、鶴身さんのご質問も漠然として要領を得ま         せんが「S−OS上でのプログラム/データの入力」         として説明いたします。         Oh!X(MZ)等に掲載される16進数(AF 41 C3         ... というアレですね)は、MACIONTO−C等         のダンプ入力ツールを用いて入力します。「通信」で         は、2号で"MIKO"というツールを掲載しています         ので、これを利用するのも良いでしょう。         それ以外の普通のプログラム(ソースリスト)の入力         は、E−MATEやWINER等のテキストエディタ         を使用します。今回、「Z80講座」で使用している         エディタアセンブラのコマンドとキーアサインを載せ         ていますので、参考にしてください。        (非常にファンタジックな便箋ありがとうございました。) ◎バンクメモリの使い方が全くわかりません。 LD BC,0B00H NOP OUT (C),A RET で切り替わるのは分かったのですが、プログラムのロードするやり方が良くわかりませ ん。  多分、バンクを切り替えてもサブルーチン又はプログラムがないため暴走するのは分 かっているのですが、ロードのやり方が良く分かりません。                        #87 田中 純一 群馬県新田郡         X1turboのバンクメモリは32Kバイトのバン         クが16バンクあり(フル実装した場合)、メインメ         モリの下半分0000H〜7FFFHと切り替えて使         うことは前号のこのコーナーで説明したとおりです。         前回は「バンクRAMに置かれているプログラムを呼         び出す」方法について解説しましたが、それ以前に         「バンクRAMにどうやってプログラム(データ)を         読み書きするのか」が理解されていなかったようです。         まず第一に重要なのは、バンクRAMにメインRAM         の内容を転送するには、転送作業を行うプログラムは         必ず8000H以降に用意しなければならない事です。         次に転送元(メインRAM)のアドレスが7FFFH         までか、あるいは8000H以降かで転送プログラム         が異なったものになります。         例えば、メインRAMの3000H〜3FFFHをバ         ンクRAM#2の0000H〜に転送したいとき、プ         ログラムは次の通りです(当然これらのプログラムは         8000H〜に置くこと)。 LD BC,0B00H EXX LD BC,0100H LD DE,0 LD HL,3000H L1: EXX LD A,16 ; メインRAMセレクト OUT (C),A EXX LD A,(HL) INC HL EX AF,AF' EXX LD A,2 ; バンクRAM#2セレクト OUT (C),A EX AF,AF' EXX LD (DE),A INC DE DEC BC LD A,B OR C JR NZ,L1 EXX LD A,16 ; メインRAMセレクト OUT (C),A RET         続いて、メインRAMのB000H〜BFFFHをバ         ンクRAM#2の0000H〜に転送するプログラム         を示します。 LD BC,0B00H LD A,2 ; バンクRAM#2セレクト OUT (C),A LD BC,0100H LD DE,0 LD HL,0B000H LDIR LD BC,0B00H LD A,16 ; メインRAMセレクト OUT (C),A RET         はっきり言って、前者のプログラムは非常にややこし         いです。ですから、基本的にバンクRAMに転送する         データも、メモリの後半(8000H〜)に置くよう         にしましょう。 ◎turboのBIOSをいじるRST 18Hが意味不明です。BIOSをいじりたくとも何が書 き込まれるかも不明です。教えてください。                        #49 佐藤 久彰 茨城県勝田市         turboBASICおよびturbo"SWORD"         では、BIOSROM内のサブルーチンを呼び出すの         に、RST 18H命令を使用しています。これはサ         ブルーチンの先頭アドレスをBCレジスタに、その他         必要なデータをレジスタやワークエリアにセットして         RST18Hを実行すればよく、バンク切り替えを意         識しないでBIOSを呼び出すことができて便利です。         この場でBIOSのサブルーチンすべてを解説するこ         とはできません(1冊の本になってしまいます)から、         その中から、画面左上に黄色で「?」1文字を出すプ         ログラムを紹介します。 ACCPRT EQU 1791H ; 1文字出力のエントリ CURX EQU 0FADFH ; カーソルX座標ワーク CURY EQU 0FAE0H ; 〃 Y 〃 COLORF EQU 0F8D0H ; 文字のアトリビュート XOR A ; Aを0にする LD (CURX),A ; カーソルを左上に LD (CURY),A LD A,6 LD (COLORF),A ; 色を黄色に LD BC,ACCPRT LD A,'?' RST 18H         BIOSROMは画面制御以外にも、サウンド制御、         グラフィックス、浮動小数点演算などのサブルーチン         が詰まっています。BIOSROMのエントリについ         は、以下の参考書にくわしく書かれていますが、今で         は入手困難ですので、地元の図書館を利用してみると、         (ひょっとしたら)あるかも知れませんね。         《X1turbo解析マニュアル;秀和システムトレーディング》         《プロスペクト BIOSROMの完全解説書;Hudson soft》 ◎(S−OSの)ファイルの管理方法が違うようですが、どういう方法なのですか?                          #218 濱口 和彦 福岡市         濱口さんは88,68ユーザということなので、S−         OS標準のHuBASICフォーマットについてご存         じ無いことと思います。         S−OSのディスクフォーマットは、256バイトセ         クタを前提としており、シリンダ0、サーフェス0の         第1セクタをレコード0として連続したレコード番号         が付けられています。そして各レコードは先頭から、         16レコードごとのクラスタという単位(4KBytes)         で管理されています。         また、ファイル名等の情報(ディレクトリ)は第16         レコード〜31レコードに記録されており、1ファイ         ルにつき32バイトが使われています。この先頭から         31バイト目が、そのファイルの先頭クラスタを表し         ています。         あるファイルがどのクラスタを使用しているかの状況         (チェイン)は、第14レコードの前半128バイト         にあります。これをFAT;ファイルアロケーション         テーブルと言います。例えば、あるファイルの先頭ク         ラスタが08Hとすると、その続きのクラスタはFA         Tの(先頭を0として)08Hバイト目をみればわか         ります。なお、FATで00Hはそのクラスタが未使         用であることを示し、8xH(xは0〜F)はそのク         ラスタが終端クラスタで、なおかつその中でxレコー         ド分だけ使用していることを示します。 <ディレクトリ>         アトリビュート(01はBinを表す)         |ファイル名(13バイト)    拡張子3バイト         ↓ ↓                   ↓         01 41 42 43 20 20 20 20 20 20 20 20 20 20 4F 62         6A 20 00 44 00 30 00 30 00 00 00 00 00 00 08 00           ↑ ↑  ↑  ↑           |           | |  |実行アドレス(下位,上位)  |先           | |先頭アドレス(下位,上位)     |頭           |データ長(下位,上位)        |ク         パスワードのパック(通常20H)       |ラ                              |ス         <FAT>       +――――――――+タ                     ↓         01 8F 03 04 8F 06 07 8B 09 0A 0B 0C 84 00 00 00                     ↑     ↑ ↑                  次のクラスタは09H |未使用                           |                   最終クラスタは4レコード使用         こういった構造のため、現在S−OSでは128クラ         スタ=512Kバイトを超えるデバイスは扱うことが         できません(分割して使うという手はあるが)。この         辺は何とかしたいところです。 ◎I−DOS,C−DOSってなんですか。S−OS通信の中でも少し触れられていま したが、それが何なのかがわかりません。                      #215 木下 達也 愛媛県南宇和郡         I−DOSというのは、Oh!PCの方でやっていた         PC−8801用のMS−DOSファイル互換OSの         ことです(それ以上のことは私も知らない)。         C−DOSは、今は亡き(株)キャリーラボが開発した         DOSで、現在では、SPSが販売していた通信ソフ         ト「JETターボターミナル」に付属のOS(C−D         OS2といわれる)を指すようです。         こちらもMS−DOSファイル互換で、某×/O誌に         システムコールが公開されたり、Niftyで2HD         化がなされたりと、愛好者は結構いるようです。 ◎S−OSUCでもシャープ製品が人気あるみたいですけど、88やMSXのボード なんかは予定ないんでしょうか。 こういうサークルは初めてなんでどうしていいか分からないんですけど、いままで ずっと受け手だったんで少しでも役にたてたらと思っています。それで仕事があるので (といってもローソンだが・・・)昼は無理ですけど夜でしたらできるだけ時間を 取れますのでスタッフとして協力したいんですけど・・・(協力ったって今までゲーム しかしてなかったんで、キーボードもろくに打てへんわプログラムわからへんわですけ ど・・・ラベルなら貼れると思ったんで)。 ところでこのS−OS通信はどれぐらいのペースで発行してるんですか?もしかして 年1回とか・・・。 ・今、会員はどれぐらいいるんですか? ・連絡、S−OS Vol.6号待ってます。                          #224 山下 佳寿 大阪市         ボードってのはコーナーのことでしょうか?S−OS         は最初MZとX1でスタートしたのでどうしてもその         ユーザーが多いですね。あと、他機種のスタッフが少         ないのでサポートもままなりません。スタッフへの協         力の申し出は非常にありがたいですが、事務局と言っ         ても森さんの家なので夜の仕事というのはちょっとな         いですね・・・。         S−OS通信はスタッフの枯渇もあって年1回ペース         になっています。年4回くらい出したいんですけどねぇ。         会員は240名弱です。幽霊もけっこういるかもしれ         ませんけど。 ◎ディスク版の対応機種についてですが、X1用、X1turbo用、PC−8801用、 X68000用では内容がどれくらい異なるのですか?X68000用は2HDのディ スクなので他の機種の2枚組以上の容量があるのでソフトが多く入っているとか。 X1用は漢字が使えないからカタカナで入っているのですか?カタカナの場合 「.DOC」を書き直しているのですか?  話は変わりますが、1985年頃テクノポリスでGRACEというCGの「共通CG データ」システムが連載されたのを知ってますか?共通化機種はPC−8801, FM−7,X1,MZ−2000/2200です。このシステムのCGdataを 持っておられたら分けていただけませんか?                       #217 井上 昇蔵 兵庫県佐用郡         基本的に変わりません。         X1用でも漢字の出力システムが開発済みなので、         turbo同様の環境でS−OS通信を読むことができま         す。強いて言えば、X68k用のSWORDのエミュ         レーションレベルが低くてシェルシステムが動いてい         ないというぐらいでしょうか。         私はGRACEのことは知らないのですけど、連載時         期がS−OS初期と重なるのが興味深いですね。         MAGICに付加するようなGRACEシステムなん         かも作ってくださいよ。 ◎今年はミーティングの予定とかはないのでしょうか?                         #74 真水 徹 千葉県印旛郡         関東方面のミーティングは、今年は2/11に横浜         で実施しました(案内のはがきが届きませんでした         か?)さて今後はどうしましょ。やはりゲリラ的に         開催していくものと思われます(まるで他人事)。 ◎質問。 ・Aレジスタに0〜127、Bレジスタに−128〜127(2の補数表現)の数値を セットしAレジスタに0〜127に収まるように加算する最短と思われるルーチンを教 えてください。ちなみにA=0でBがー128〜0のときはA=0となり、A=127 でBがー128〜0の時はA=127となるようになります。レジスタはすべて破壊可 能です。 ・X1−SWORD&turboSWORDのシステムコールを変えずにDMA対応の ディスクルーチンに変える方法を教えてください。 ・何も壊さずZ&Cフラグを変化させる最短の命令を教えてください。 #98 松下 篤根 浜松市         まず1つ目の解答から。極めてオ−ソドックスで         すから失望しないように。          ADD A,B          JP PO,S0          LD A,7FH          RET          S0: RET P          XOR A          RET 2つ目ですが、X1"SWORD"ではディスクア         クセスルーチンを自分で持っているので、これを 書き換えない限りDMA対応になりません(「シ ステムコールを変えずに」の意味が今一つ判然と しませんが)。turbo"SWORD"の場合は いたって簡単で、2BB0H〜 から始まっているデバ         イステーブルの、ディスクタイプ指定(n+2バ イト目)を1(2DD)にすればよろしい。 3つ目の質問も具体性に欠けますが、私なりに考         えてみました。            PUSH AF            DEC SP            POP AF            XOR 41H ←各ビットに対する演算命令            PUSH AF (C,Z共に反転させる場合)            INC SP            POP AF         C,Zフラグ以外のレジスタは全て保存されます。         (スタックを3バイト消費しているので、メモリ         を破壊していると言われればそれまでだが)。         もっと短いコードが書ける人は、私まで教えてく ださい。 (EOF)