---
# System prepended metadata

title: Programming on MacOS 9

---

# Programming on MacOS 9

前幾天裝了SheepShaver模擬器把MacOS 9跑起來，不知為何就很愉悅。想說來試試看在老系統上寫點程式探險。

## CodeWarrior 10 Gold

以前最流行的開發環境，裝來玩玩看。當時也是萬把塊錢呢！

![CD Content](https://i.imgur.com/zZDnaBA.png)

嗯？當時很流行把一堆不相關的東西放在CD裡面充容量嗎？有一些遊戲的demo版、BBEdit、Nisus、DragThing……。

![Cool Demos, SDKs, & Tools](https://i.imgur.com/Xbd901G.png)

居然有中文化版本！不過在 `(Localized Files):Traditional Chinese.sit` ，要自己解壓縮以後放回 CodeWarrior 的目錄，真是陽春的安裝方式。中文化看看就好，而且為啥 `.c` 是非法檔案？裡面有藏毒品？

![Trad. Chinese](https://i.imgur.com/94AnVbU.png)

總之中文化使用起來有點怪怪的。乖乖用英文版打開最簡單的console C project來跑跑看吧。耶！成功了！不過注意當時MacOS可是沒有文字介面的，因此是使用了Metrowerks的SIOUX Lib (Simple Input/Output User eXchange, by Berardino E. Baratta)來在一個console視窗內輸出。

![SIOUX C](https://i.imgur.com/KFM3bKw.png)

好，接下來試試看建立GUI程式吧。還記得當時都是從Inside Macintosh的Mac Toolbox系統呼叫開始的。於是從project template中選擇 `Basic Toolbox PPC` 來看看。SillyBall! 好懷念啊！按下 Command-R 編譯執行，奇怪，怎麼有錯誤？

![Can't write](https://i.imgur.com/qQ6r1D8.png)

我檢查了半天，才發現他的project檔（相當於現在的`.xcodeproj`）和executable檔預設是同樣的名字！因此executable無法覆蓋掉正打開的project檔。這什麼鬼畜陷阱啊？難怪我看其他人都把project檔加上副檔名`.π`，你就不能預設嗎！

![Folder Structure](https://i.imgur.com/pR4KJ68.png)

好了，順利跑起來了，我 n 年前看過這個畫面！

![SillyBall](https://i.imgur.com/0cebSDE.jpg)

接下來就是重頭戲，看看Metreworks的Application Framework——PowerPlant能耐如何。用Toolbox寫程式已經是上古時代的事情了，和找COBOL programmer大概是同樣的難度吧。

預設的Doc PowerPlant Project，打開來……嗯，不支援中文，廢物！！！（用過當時系統的應該還記得「浞ntitled」、「Don掐 Save」這種亂碼吧？好像有個東西可以修理……但我已經忘記是什麼了）

![Doc PowerPlant App](https://i.imgur.com/fu4zmIG.png)

接下來試試預設的Network PowerPlant Project。為什麼會有compile error啊！p2cstr是`<TextUtils.h>`裡面的function，可是到底要怎麼設定啊……摸了半天沒摸出來。

![Compile Error](https://i.imgur.com/1Zr99Wd.png)

附帶一提，PowerPlant這套Application Framework是直接以source code的形式存在的，每次編譯都要等整個PowerPlant重編一次，實在有點累。

搞了半天，發現CodeWarrior 10竟然是很舊的版本啊！我連打個

```c++
using namespace std;
```

都會說語法錯誤不支援！最新能在Mac OS 9上跑的版本是Code Warrior **Pro** 8! 好，我們下次再來試試看嘍。
