----------------------------------------------------------------------- VOGUE−− on ZauSHell 構造化言語コンパイラ (ZauSHell用バージョン) Version 0.16s for PI-5000〜PI7000 PI-6000以降でのテストはしていません。 (c)1991,92,93 by N.Kon (c)1993,94 by M.Sato 1996 by T.Kawakubo ----------------------------------------------------------------------- ■まえがき  「VOGUE-- on ZauSHell」は、近 成人氏によって発表された PC-E500シ リーズ用の並列処理機構内蔵型構造化言語コンパイラ「VOGUE」を ZauSHell(小笠原博之氏が開発されたZAURUS ADDIN用のコマンドシェル)に移植した ものです。 DB-Z,PV-F1,ZAURUS には佐藤 正浩氏が移植されました。今回のZauSHellへの移植は 私が、PI-5000用のBASIC EDITOR用に移植したVOGUE-- on ADDIN (ver.0.16)のバー ジョンより行いました。 今回のバージョンは小笠原博之氏が開発されたZauSHell上でエディタ(ED)を持ち いて開発でき、プログラムのロード、コンパイル時間も短く非常に快適な環境で開 発が行えます。また生成されたオブジェクトは、そのままZauSHell上で動作し、そ のファイルサイズも極めて小さく、実行速度も早いので、ZauSHell上でのアプリケ ーション開発には極めて便利でしょう。 以下に佐藤氏のまえがきを転載します。(本文は、佐藤氏のドキュメントをベース にさせていただいております。)  「VOGUE-- for ZAURUS」は、近 成人氏によって発表された PC-E500シ リーズ用の並列処理機構内蔵型構造化言語コンパイラ「VOGUE」を DB-Z,PV-F1,ZAURUS に並列処理機構を外して移植したものです。  残念ながら並列処理関係の機能とスクリーン構造体を使用する描画処理 関数、一部の雑関数がハードウェアの資料不足や多機種対応、メモリの制 限等の理由によりサポート出来ませんでしたが、その他の大半の組み込み 関数と各種機能はそのまま使用できます。 ■原作まえがき  VOGUEは、プロセスの並列動作機構を内蔵した構造化言語コンパイ ラです。C言語に似た感じはしますが、C言語ではありません。組み込み 関数が豊富なので、ライブラリの管理に煩わされることなく、お手軽なプ ログラミングを楽しむことができると思います。 ■注意 !!!必ず読むこと!!!   Vogueはコンパクトで優秀なコンパイラですが、使い方を誤るとZaurusの貴   重なデータを簡単につぶしてしまいます。これはどんなに注意してプログラムを作成   しても、不注意で壊す事がありますので、必ずバックアップを取ってから実行して下さ   い。   このコンパイラは、シャープのADDINソフト開発規則に根本的に違反しています。(機   械語を使用しています、機械語を生成します。)よって、いかなる事故が発生する   か分かりません。このことを良く認識した上で、各自の責任の範囲で使用して下さい。   Zaurusは、スケジュールその他のデータが、BASIC(又はVogue)から見えるメモリー空間   に存在し、何の保護もなされていません。自由に読み書きできますが、1バイトで   も誤ったデータを書き込むと、完全に全てのPIM機能が使えなくなることがあります   C言語等を熟知している方であれば、このあたりの事が分かると思いますが、ポインタ   の操作を少し間違っただけで、メモリーに誤ったデータを書くことは頻繁にありま   す。よってVogueを動作させる前には、必ずバックアップをとりましょう。       PIM機能を壊す例       ad = 0x40000; *ad = 0;   これだけで完全にPIM機能は使えなくなるでしょう。   またVogue使用後は、バグがあれば、どこかのメモリーが破壊されているかもしれ   ません。特に暴走した場合等はどこかのデータが破壊されているかもしれません。   特に、Zaurusのバックアップは、バックアップを取るときには、データが破壊されているかど   うかを全てチェックしていないようで、一度、バックアップを取ったデータが戻せなくなる   トラブルがありました。恐らく、バックアップを取る前にデータが破壊されていたのだと   思いますが、全くバックアップデータが読めないということになりましたので、   バックアップをとるときにも十分注意して下さい。   私は、フラッシュROMカードに2つのバックアップファイルを作り、PIM用とVOGUE   用に分けて使用しています。   また暴走時にフラッシュROMカードの内容をつぶす可能性を恐れ、Vogue実行   時には、フラッシュROMカードを抜いています。   ここまで、注意しないと恐らく大事なデータをつぶすことになります。よって次の方   以外は、Vogueを使用しないで下さい。   1.毎回バックアップをとって、実行する方   2.本体に重要なデータが入っておらず、壊れても惜しくない方   3.完全無欠で、バグ(ミスタイプも含め)を一度も作ったことの無い方。       (そんな人はいないと思いますが!) ■パッケージの内容 VOGUE-- on Zaushell Ver. 0.16s に含まれているものは次の通りです。 -------------------------------------------------------------------- BIN/ ZVMM.ZRS ... VOGUE-- on ZauSHellのファイル構成記述ファイル ZVMM.DOC ... VOGUE-- on ZauSHellのADDIN用説明ファイル ZVMM.BAX ... VOGUE-- on ZauSHellの実行形式 ZVMM.BAL ... VOGUE-- on ZauSHellのランタイムライブラリ DOC/ VMMZ.DOC … いまご覧になっているもの GRAMMER.DOC … 文法説明書 STDFUNC.DOC … 標準関数説明書 FLOAT.DOC … 浮動小数点型数値処理関数説明書 LIB.DOC … ライブラリ関数説明書 KNJLIB.DOC … 漢字文字列処理ライブラリ関数説明書 INTRO1.DOC … 入門書(基本) INTRO2.DOC … 入門書(応用) Q_A.DOC … Q&A TECH.DOC … テクニカルマニュアル KEYCODE.DOC … キーコード表 MISC/ ARGCHK.BAV … ライブラリ関数 CALCMODE.BAV … ライブラリ関数 EVAL.BAV … ライブラリ関数 F_P.BAV … ライブラリ関数 SPLIT.BAV … ライブラリ関数 STRINGS.BAV … ライブラリ関数 KNJLIB.BAV … 漢字文字列処理ライブラリ関数 ;VOGUE-- on ZauSHell では未確認です使用しないで下さい。 SRC/ VMMZ.S … VOGUE-- on ZauSHell のソースプログラム DEF.S … VOGUE-- on ZauSHell のソースプログラム RUNTIME.S … VOGUE-- on ZauSHell のソースプログラム COMPILE.S … VOGUE-- on ZauSHell のソースプログラム MAIN.S … VOGUE-- on ZauSHell のソースプログラム DATABASE.S … VOGUE-- on ZauSHell のソースプログラム GRAPHICS.S … VOGUE-- on ZauSHell の拡張関数のソース VMMZL.S ・・・ VOGUE-- on ZauSHell のランタイムライブラリのソース ENTRY.S ... VOGUE-- on ZauSHell のランタイムライブラリ関数エントリ -------------------------------------------------------------------- ■動作環境 ●ZAURUS SHARP : PI-5000 ( , PI-6000 , PI-7000 ) PI-6000 , PI-7000 での動作確認はしていません。多分動くでしょう。 OS : ZauSHell (Ver.1.40にて動作確認を行っています。) ■VOGUE-- on ZauSHellの使用方法 本パッケージ(VOGUE_SH.LZH)をディレクトリ構造を保存したまま、解凍して下さい。 シャープ社のAddin Loader(JSFREE1等)あるいはフリーソフト等を用いて、 Zaurusに転送してください。 ZauSHellを予めインストールしておいてください。 "Vogue-- on ZauSHell(初期化)"を一度実行してください。(転送用ダミーです。 直接ZVMM.BAX,ZVMM.BALだけを転送してもらっても結構です。) 後はZauSHell上で動作します。 実行方法(ZauSHell上で) SX:>VMM ソースファイル名 [オブジェクトファイル名] [-f] ・ソースファイル名は次項の記述にしたがって記述されたVogue--のソース ファイルの名前です。拡張子を省略した場合には、".BAV"が付けられます。 ドライブ名を省略した場合には、"SX:"が採用されます。 ・オブジェクトファイル名はコンパイルされたオブジェクトのファイル名です。 省略すると、ソースファイル名の先頭に"Z"を付け、拡張子に".BAX"がつけら れます。( ソースファイル名 : TEST → オブジェクトファイル名 : SX:ZTEST.BAX ) この場合ZAURUSのファイル名が8文字ですので、ソースファイル名が8文字あると"Z"と合 わせ9文字となり、エラーになりますので、ソースファイル名は7文字以内(拡張子と 合わせて10文字以内)で指定してください。 拡張子を省略した場合には"BAX"が採用されます。 ドライブ名を省略した場合には、"SX:"が採用されます。 ・-f オプションは大きなファイルをコンパイルする場合に用います。 このオプションを指定すると、コンパイル中にオブジェクトを直接ファイ ルに出力します。 このオプションが無い場合には、一旦コンパイラ後方のメモリー上に展開 してから、これをファイルに出力します。 -f を指定すると、指定しない場合よりコンパイラのサイズ分だけ大きな オブジェクトをコンパイルすることができます。しかし逆にファイルのア クセスが増えるためコンパイル時間が増大します。 通常は -f 無しで良いですが、コンパイル可能な限界に近いサイズの大サ イズプログラムをコンパイルする場合はこのオプションを指定して下さい。 コンパイルされたファイルはZauSHell上で直接実行できます。ただし、コンパイル されたファイルを実行するためには、ZVMM.BALが存在することが必要です。 ■ソースファイルの記述について    ソースコードは行番号をつけずに記述します。(BASICやVOGUE-- on ADDINと異 なります.) エディタ ED 等を用いて記述します。 ソースコードの内容についてはGRAMMER.DOC等を参照して下さい。 ■本体の改造を試みられる方へ   VOGUE--本体を改造される方は、次の手順で行って下さい。  ・XASM(FENOTEのLIB2にある、近さん、加古さんによるアセンブラ)にてvmmz.sを   アセンブルし、オブジェクトのファイル名をZVMM.BAXとする。(コンパイラ本体) C:>XASM VMMZ.S -OZVMM.BAX ・XASMにてvmmzl.sをアセンブルし、オブジェクトのファイル名をZVMM.BALとする。 (RUNTIMEライブラリー) C:>XASM VMMZL.S -OZVMM.BAL ・これらのファイルをBINディレクトリに移し、ADDIN LOADERにてZAURUSに転送する。 注意:runtimeライブラリは独立させており、entry pointをdef.s内で equ で定義してい ます。 本体のentryは、一度entry.s内でジャンプテーブルを経由して呼ばれる様になってい ます。これらは将来runtimeライブラリをバージョンアップしても再コンパイルなしに 実行ファイルを動かせる様にとの配慮です。 改造する場合には、entry.sとdef.s内の定義の整合性に十分に注意して下さい。 また関数の追加はjumpテーブルの必ず最後尾に行って下さい。(中途に挿入すると 以前にコンパイルしたプログラムが動作しなくなります。) runtimeライブラリのエリアは7Kbyte , jumpテーブルは80個ほどあいていますので十分追加 可能です。 ■エラーメッセージについて  コンパイル中にソースプログラムの不備を発見するとコンパイラはその 旨をユーザーに報告し、コンパイル作業を中断します。その際、コンパイ ラはエラーの発生原因をエラーメッセージとして、エラーの発生した行番 号と発生原因として疑わしいシンボルを添えて報告します。なお、ソース プログラムの不備以外によって発生したエラーの場合は疑わしいシンボル として「(file?) 」が報告されます。エラーメッセージとその詳細は以下 の通りです。 Source not opened … ソースファイルを読み込むことが できない Object not opened … オブジェクトファイルを作成する ことができない Object write error … オブジェクトファイルの書き込み に失敗した Unexpected EOF … コンパイル途中でソースファイル の終わりまで来てしまった Too long identifier … 名前が長すぎる(最大7文字) Syntax error … 何らかの構文違反が存在する Undefined identifier … 未定義の名前を使用しようとした Duplicate identifier … 重複してはいけない名前を重複さ せようとした ';' expected … ';' が必要であると思われる Type specifier expected … "char","int","pnt" のうちのいず れかが必要であると思われる Constant number expected … 定数が必要であると思われる(配 列宣言など) Illegal type of identifier … 期待されているものとは異なるタ イプの識別子が使用されている( 左辺値であるべき所に左辺値が存 在しないなど) '(' expected … 左小カッコが必要であると思われ る ')' expected … 右小カッコが必要であると思われ る ':' expected … ':' が必要であると思われる Table overflow … ユーザー定義の名前が多すぎる Type conflict … プロトタイプ宣言で宣言された型 と、関数本体の型が一致しない Undefined function exist … プロトタイプ宣言をしておきなが ら、本体のない関数が依然として 存在する Memory exhausted … メモリが足りない Division by zero … ゼロで除算を行なおうとした User break … コンパイル中に [中断] キーの押下 が生じた  また、オブジェクト走行時にも致命的なエラーが発生するとエラーメッ セージを表示して実行が中止されます。エラーメッセージとその詳細は以 下の通りです。 Memory exhausted … メモリが足りない Division by zero … ゼロで除算を行なおうとした User break … [中断] キーの押下が生じた  コンパイルを一度も行なっていない場合やコンパイル中にエラーが発生 した場合には、強制的にメモリ上のオブジェクトを実行させようとしても "User break" を表示して、実行を拒否します。 ■注意 ●コンパイラは漢字のための対策を一切講じておりません。ソースプログ ラムで文字列内に漢字を書くときには、シフトJISコードの2バイト 目が $5E である文字の後ろには必ずダミーの ^ を入れる必要がありま す。 例: printf("運^勢:%s",s); ●ファイルの取り扱いには IOCS を用いていますが、3.5インチ フロ ッピー・ディスク・ドライブ CE-70F (X:) は IOCS のサポートの実態 がよくわからないので、取り扱いが出来るかどうかはわかりません。こ れはオブジェクト実行中のファイル処理についても同様です。 ●このコンパイラを使って作ったプログラムを公の場に発表しようとする 人がいないとも限りませんが、コンパイラの生成したオブジェクトプロ グラムのみを公開することはこれを厳しく禁止します。ソースプログラ ム単体もしくはソースプログラムを付加したオブジェクトプログラムの 形で公開することを条件とします。 ●このプログラムの実行、または実行に係る取扱中に発生したいかなる損 害についても、これを免責とさせていただきます。 ■履歴 ===== VOGUE DB-Z =============== VOGUE DB-Z Ver. 0.10 (93/10/29) ・VOGUE Ver.1.01を元にして制作 VOGUE DB-Z Ver. 0.10 追加 (93/11/18) ・転送用ファイル VOGUEDBZ.KT と、受信用のプログラム KTR for DB-Z Ver.1.00 (KTR.BAS) を追加 VOGUE DB-Z Ver. 0.11 (93/11/28) ・ドキュメントに加筆 ・漢字文字列処理関数をライブラリ関数に追加(KNJLIB.BAV)。 ・テスト版ではあるが、条件付きで転載可とした ・標準関数の getc のランタイムルーチンがドキュメントと異なる仕様に なっていたため、ドキュメントと同じ仕様に戻した。Ver. 0.10 の getc のランタイムルーチンは関数名を getch に変えて残した。 VOGUE DB-Z Ver. 0.12 (94/03/10) ・KNJLIB.VOG の致命的なバグを修正 ・widtha, widthk を修正 ・並列処理がうまくいっていなかったのを修正 ・コンパイラのコードサイズを減らすための変更を多数行った ・PC-E500版のバージョンアップ(Ver. 1.01 → Ver.1.02)に伴い、関数 パラメータを直接参照するための関数として argpf を追加 ・縮小版の添付 ・UNIX 上での扱い考慮して '&' をファイルに使わないようにした ・ドキュメントの細部の修正 VOGUE DB-Z Ver. 0.13 (94/05/23) ・gets に画面タッチ対策を追加 ・画面タッチの処理を行うための関数として tcchk, tcscan を追加した ・PA-9C95/96 専用のLarge版の添付 ・KTR を別ソフトとして配布し、パッケージには含めないようにした ・アーカイブにディレクトリ構造を持たせるようにした ・通常版,縮小版,Large版の3つで同一の compile.s を用いるようにす るためにソースにマクロを使うようにした。このため、アセンブルには XASM Ver.1.30( (c) N.Kon , E.Kako) 以降が必要となった。 ・ソースのシンボル定義部を別ファイル(def.s)にした ・縮小版で getch を削らないようにした ・縮小版のソースのうち、rtimem.s, dbasem.s をそれぞれ runtime.s, database.s から機械的に生成するようにした ・ライブラリ関数 a_mode のソースが欠落していたのを補った ・fcntl でファイルコントロールシステム呼び出し後の結果がメモリに格 納されないのを直した ・コンパイラのコードサイズを減らすための変更を多数行った (これに伴い新たなバグが発生しているかもしれません) ・全ての IOCS およびファイルコントロールシステムの呼び出し時にユー ザー・スタックを一時的に本体RAMに戻すようにした ・ザウルス(PI-3000)で動作しないことが判明した ・自分の名前の英語表記を変更した ===== VOGUE-- for ZAURUS ======= VOGUE-- for ZAURUS Ver. 0.14 (94/11/09) ・ザウルスで動くようにするためスタックの仕様を Ver. 0.11 当時の物に もどした。そのかわりに並列処理が使えなくなった。 ・本家の VOGUE の売りであった並列処理機構とスクリーン構造体が両方と も使用できないので名前を VOGUE-- for ZAURUS に変更 ・名前の変更に伴いアーカイブ名を従来の vgdbz*.lzh(VoGue DB-Z)から vmmz*.lzh(Vogue Minus Minus for Zaurus)に変更 ・sbrk で割り付けるメモリ領域を変更した ・グラフィックのサンプルとして graph.vog を添付した ・intro2.doc の最後に出てくるサンプルプログラムのバグ修正と改良 ・メモリ不足で 'Memory exhausted' を表示して終了する場合は、表示を 行う前にユーザースタックを起動時の状態に戻すようにした ・アーカイブのサイズを抑えるため Large版を添付しないようにした ・アーカイブに Makefile を添付した ・「テスト版」の表記を外して、転載時の制限事項を減らした ・PI-3C95 には対応しない ===== VOGUE-- on ADDIN ====== VOGUE-- on ADDIN Ver. 0.15 (95/4/18) ・ADDINで動くようにするためシステムスタックの仕様を変更した。 ・メモリー配置を変えた。   ・PI-5000用に各種のシステム領域を変更した。   (iocs,fcntl,scrn_widtha,scrn_widthk,default_drive,basic_work_top,     handle_table、scrn_cur_x,scrn_mode等のアドレスの変更。)   ・fscanfのバグを取り除いた。   ・width,line,box,point,pset,preset,bascmdの各関数を追加した    これに伴い,GRAPH.BAVを取り除き、ソースファイルにGRAPHICS.Sを追加した。   ・tcchk関数をZAURUSで動作する様に変更した。(加古氏にアドバイスいただいた。)   ・BASIC EDITORとの結合に関して、共通エリアを設けて、幾つかの変数をここで    やりとりするようにした。 ・intro2.doc の最後に出てくるサンプルプログラムのバグ修正と改良 ・calcmode.vogのa_mode関数をADDINでのアドレスに修正した。 ・getsにて、ADDINの入力ボードに対応するよう、修正した。 ・getsで改行キー以外に入力キーでも終了できるようにした。 ・cbreakを、中断キーで終了するようにした。 VOGUE-- on ADDIN Ver. 0.16 (95/5/7) ・bascmdコマンドのバグ修正(bascmd呼び出し時に内部RAMの退避及び、割禁処理  を行うようにした。) ・intro1.doc内ドキュメント修正(sbrkに関して) ・誤って圧縮していたファイルvmmzs.sを消去した。 VOGUE-- on ZauSHell Ver. 0.16s (96/4/14) ・ZauSHell上で動作する様に変更 プログラムロードアドレスを30000Hに移動 ZauSHellのコマンドラインからのファイル名取得形式に変更 ・runtimeライブラリを別ファイルにした。 ■参考にしたもの ・B.W.カーニハン/D.M.リッチー 著 石田晴久 訳:「プログ ラミング言語C 第2版」,共立出版株式会社 ・近藤嘉雪:「yacc によるCコンパイラプログラミング」,ソフトバンク ・Niklaus Wirth 著 片山卓也 訳:「アルゴリズム+データ構造=プロ グラム」,日本コンピュータ協会 ・御手洗 毅:「BDS Cプログラミング」,工学図書株式会社 ・河西朝雄:「TURBO Pascal ハンディマニュアル」,ナツメ社 ・「PC−E500*PC−1480U活用研究」,工学社 ・足立茂夫:「Tiny-C compiler Ver.1 」,ポケコン・ジャーナル '90 Number 8 ・SONY:NEWS−OS リリース4.1R オンライン・マニュア ル他 ・MIT(マサチューセツ工科大学):X−WINDOWシステム(X11R5) ・加古英児:「VWRITE/VREAD for ESPRIT 」,Pocket Mailing-List on JUNET ・山田勝巳:「ポケコン・テクニック・ルーム 〜DDAによる描線〜」, PJ[電子手帳とポケコン] '91 Number 11 ・「’86 C−MOS IC規格表」,CQ出版社 ・近 成人:「MIDI信号制御の実験」,ポケコン・ジャーナル '90 Number 3 ・近 成人:「ESPRIT」,ポケコン・ジャーナル '91 Number 6 〜8 ・近 成人:「VOGUE Ver.1.02」,フリーソフト ・SHARP:PA−9C3 取扱説明書 ・木下 凌一:「X−Window Ver.11 プログラミング」, 日刊工業新聞社 ■著作権について  本ソフトウェアの著作権は近 成人および佐藤 正浩が所有します。    追加改造部、及びBASIC EDITOR部に関しては川久保 隆が所有します。 ■再配布等について  アーカイブ内容を改変しない限りアーカイブの再配布は自由です。 譲渡もこれに準じます。  転載時には、事後で結構ですから、その旨を連絡してください。 ■おわりに  本ソフトの使用上の感想、その他、バグ報告等に関してご意見下さい。               NIFTY : GCA02221 川久保 隆 このようにすばらしいコンパイラを開発された近 成人氏、及び佐藤 正浩氏に敬意を示 します。  また、今回Addin機能としてuploadすることをお許しいただいたことを、ここに感謝  いたし、お礼申し上げます。  また、この移植及び、テストにおいて、多大なるご協力いただきました加古 英児氏に感 謝いたし、お礼申し上げます。   ■おわりに(以下佐藤 正浩氏のおわりのメッセージです。)  良い感想、悪い感想、改良点、バグ報告など、なんでも結構ですので、 ポケット通信の ;EOBBS ボード、もしくは電子メールにてご意見をお寄 せください(公式サポートはポケット通信上で行います)。電子メール は以下のものが利用可能です。 ・ポケット通信 :ID = 2932 TEL:03-3299-8661 ・サンデーネット:ID = sun4415 ・東京BBS :ID = エミュ (実際は半角カタカナです) ・中日ネット :ID = CNC09351 TEL:052-222-3222 ・NIT-BBS :ID = nit00020 TEL:052-741-8390 ・PASTEL :ID = MSATO ・Internet :satou@kintaro1.elcom.nitech.ac.jp (※1) CNC09351@chunichi-net.or.jp (※2) ※1 大学のアカウントのため、1996年3月末以後は無効になる可能 性があります。 ※2 現時点では未接続のため使用できません。大学のアカウントが 無効になるまでには使用可能になると思います。  移植版の公開にご同意を頂きました、原作者の近 成人氏、動作テスト にご協力して頂いた皆様にこの場を借りてお礼を申し上げます。 Nov. 9th, 1994 佐藤 正浩