0
Help us understand the problem. What are the problem?

posted at

updated at

Macintosh Programmer's Workshop (MPW) Object Pascal の簡単な使い方

はじめに

備忘録的に、軽く Macintosh Programmer's Workshop (MPW) の使い方を説明します。資料が少ないので "Hello World が書けるまで" くらいの説明しかできません。

See also:

動作環境

検証用として、次のエミュレータを使用しています。

使用する MacOS は 8.1J です。
image.png

MPW Pascal の使い方

  1. プロジェクト用のフォルダを作成します。ここではデスクトップに Projects/Hello フォルダを作成しています。
    image.png

  2. MPW Shell を起動します。
    image.png

  3. [Directory | Set Directory] で作業フォルダを設定します。
    image.png
    Projects/Hello フォルダを辿って開いて行き、最後に [Select Current Directory] ボタンを押します。一つ前のフォルダ (画像の状態) で [Directory] ボタンを押しても構いません。
    image.png

  4. [File | New] で新しいファイルを作成します。
    image.png
    Projects/Hello フォルダに Hello.p という名前のファイルを作ります。拡張子は *.p である必要があります。
    image.png
    新規エディタが開きます。分かりやすいように右上に Finder で Projects/Hello フォルダを開いておきました。
    image.png

  5. Hello World を記述します。書き終わったら [File | Save] で保存しておきます。
    image.png

  6. [Build | Create Build Commands] でビルドコマンド (.make ファイル) を作成します。
    image.png
    設定項目を埋めます。[Program type] を SIOW App 1、[Target] を 68K Only にすれば SIOW アプリケーション (コンソールアプリケーションのようなもの) が作れます。[68K Model] は Model NearModel Far のいずれかを選びます。
    image.png
    埋めたら [Source Files] ボタンを押し、ソースファイルを指定します。目的のファイルをダブルクリックするか、選択して [Add] ボタンを押し、下側のボックスに移動させます。移動が終わったら [Done] ボタンで確定させます。
    image.png
    [Command Line] が画像のようになっていれば OK です。このまま [CreateMake] ボタンを押します。
    image.png
    hello.make ファイルができました。
    image.png

  7. もし、コード中でオブジェクト型 (クラス) を使うのなら、リンカに ObjLib.o を渡さないとエラーになります。.make ファイルをダブルクリックするとコードエディタで開けますので、"{Libraries}"ObjLib.o" ∂ を追加して保存します。
    image.png

  8. [Build | Build] でプロジェクトをビルドします。
    image.png
    プログラム名を尋ねられますので Hello と入力します。
    image.png
    しばらくするとビルドが完了し、実行ファイルが生成されます。
    image.png

  9. プログラム Hello を実行します。Finder からダブルクリックします。
    image.png
    終了ボタンがなくて面食らうかもしれませんが、MacOS のメニューの [File | Quit] でアプリケーションを終了させる事ができます。

See Also:

MPW Pascal が必要とする標準ライブラリ

Pascal コンパイラが必要とする標準ライブラリは次の通りです 2。次に挙げる標準ライブラリは最初からビルドコマンドに含まれています。

機能 ライブラリ 場所
低レベル I/O IntEnv.o Libraries
ToolBox, OS Interface.o Libraries
ランタイムサポート MacRuntime.o Libraries
SANE 3 SANELib.o PLibraries
SANE 3 (Far & コプロセッサ 4 ) SANELib881.o PLibraries
Pascal PasLib.o PLibraries

次に挙げる標準ライブラリはビルドコマンドの Program Type によって自動的に追加されます。

機能 ライブラリ 場所
SIOW 1 SIOW.o Libraries
標準ライブラリ Stubs.o Libraries
MPW tools ToolLibs.o Libraries

次に挙げる標準ライブラリは追加で指定する必要があります。

機能 ライブラリ 場所
数値演算 MathLib.o Libraries
数値演算 (Far & コプロセッサ 4 ) MathLib881.o Libraries
Object Pascal 5 ObjLib.o Libraries
68K セグメント操作 (Far) RTLib.o Libraries

See also:

MPW Pascal と ANSI Pascal との違い

MPW Pascal は ANSI/IEEE 770X3.97-1983 (ANSI Pascal) (≒ 標準 Pascal Level 0) に準拠していますが、異なる点もあります。

■ ANSI Pascal に対する例外

ANSI Pascal 範囲内での差異についてです。以下、書籍『Macintosh Programmer’s Workshop Object Pascal 日本語版』からの引用です 6

  • 識別子は 63 文字に制限されています。
  • at 記号 (@) はキャレット (^) と等価ではありません。
  • ポインタに割り当てられる値を New 手続き以外の方法で知ることが可能です。
  • SET OF integer の範囲は 0..2039 に制限されています。
  • MPW Pascal の文字列型は、長さを示す 1 バイトのフィールドを先頭に付加した文字の並びとして表わされます。ANSI Pascal の文字列型は、PACKED ARRAY [1..n] OF char です。
  • MPW Pascal では、text 型は FILE OF char 型とは異なります。FILE OF char型は、レコードの型が char であるようなファイルであり、その char 型の値は入出力操作においていかなる形にも翻訳あるいは変換されることはありません。
  • Jensen と Wirth とにより記述された、Pack 手続きと Unpack 手続きはサポートされていません。
  • 標準の注釈区切り符号 { }(* *) はコメントの入れ子を許すために使用されます。 このため、注釈区切り記号 { *)(* } はサポートされていません。

■ ANSI Pascal に対する拡張

ANSI Pascal から拡張された機能についてです。以下、書籍『Macintosh Programmer’s Workshop Object Pascal 日本語版』からの引用です 7

  • 宣言およびインデックスにおいて、定数式が許されます。
  • 宣言はどのような順序に書いても構いません。
  • Cycle 文がサポートされています。
  • Leave 文がサポートされています。
  • CASE 文のタグに範囲を使用することができます。
  • Standard Apple Numeric Environment (SANE) がサポートされています。
  • Exit 手続きがサポートされています。
  • 垂直バー (|) 演算子とアンパサンド (&) 演算子がサポートされています。
  • 関数が構造型の値を返すことが可能です。
  • Univ 引数がサポートされています。
  • 型変換がサポートされています。
  • ビット操作ルーチンが組み込まれています。
  • 指数演算子 ** がサポートされています。
  • ユニットと USES 宣言がサポートされています。
  • オブジェクトパスカルがサポートされています。
  • 標準変数 maxlongint, pi, inf,maxcomp, minnormreal, minnormdou minnormextended, compsecs, compdate, comptime がサポートされています。
  • open, blockread, blockwrite, byteread, bytewrite の各ルーチンがサポートされています。
  • Arctanh, Cosh, Sinh. Tanh, Log10, Exp10, Arccos, Arcsin, Sincos の各ルーチンがサポートされています。

おわりに

Delphi 1 (や Turbo Pascal for Windows) にも SIOW アプリケーションみたいな WinCRT がありました。

Delphi 1 では MS-DOS アプリケーションを作れない代わりに疑似コンソールアプリケーションを作る事が可能でした。
image.png


  1. Simple Input/Output Window 

  2. 『Building and Managing Programs in MPW』の "Switching between MPW libraries (Table 9-2)" より。 

  3. Standard Apple Numerics Environment 

  4. コプロセッサ (68881 / 68882) の有無はビルドコマンドの [68K Options] で指定できます。 

  5. MacApp なしでオブジェクト指向プログラミングを行う場合には usesObjIntf を加えた上で、このライブラリをリンクする必要があります。 

  6. Apple Computer Inc. (1992). "Macintosh Programmer's Workshop Object Pascal 日本語版" アスキー出版局, p.251. 

  7. Apple Computer Inc. (1992). "Macintosh Programmer's Workshop Object Pascal 日本語版" アスキー出版局, p.252. 

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
0
Help us understand the problem. What are the problem?