從來沒想過在 pc9801 上寫程式, 不過有了 dosbox-x 模擬器之後, 可以測試看看。
toolchain 用的一樣是 gcc, AI 建議使用 TASM + Turbo C 或是 DJGPP, 這些我不熟, 要打造環境也要另外花時間, 之前有使用 gcc 寫 dos 程式的經驗, 就拿來硬上, 需要注意大概是 bios call 要轉成 dos int call, 因為 pc9801 用的 bios 和 IBM/PC 不同。
這表示也可以用 c++, 以下範例以 c++ 和組合語言完成。
本來打算用 inline assembly 完成 dos int call, 透過 ai 很容易問到語法 (gcc inline assmelby 實在太可怕, 老是記不住), 不過 edx 這邊一直編譯不過, 只好改用組合語言完成。
本來想用 inline assembly 建立 c function, 但是一直有問題, 只好出動組合語言, 有了 AI 的幫助, 很容易就搞定組合語言版本。
source code:
https://github.com/descent/simple_os
branch cpp_runtime
simple_os/cpp_runtime/global_object/dos_cpp
 |
fig 1. hello pc9801 |
這個程式很大可能無法在真實 pc9801 機器執行, 因為 pc9801 使用 8086 相容 cpu, 無法執行 eax 這種暫存器, 只能用 ax 才是。
沒有留言:
張貼留言
使用 google 的 reCAPTCHA 驗證碼, 總算可以輕鬆留言了。
我實在受不了 spam 了, 又不想讓大家的眼睛花掉, 只好放棄匿名留言。這是沒辦法中的辦法了。留言的朋友需要有 google 帳號。