練習 - 使用 CP/M 來設計 Altair
在此練習中,您將瞭解如何開始設計 Altair 模擬器。
連線至 Web 終端機
- 在網頁瀏覽器中切換回 Web 終端機。
- 如有需要,請驗證網路終端機。
- 在連線到網路終端機之前,Altair 模擬器可能已開始執行。 如果是這樣,請按 Azure Sphere 上的 RESET 按鈕來重新啟動 Altair 模擬器。 當 Azure Sphere 重新啟動時,CP/M
>
提示會出現在網路終端機中。
開始使用 CP/M
如需 CP/M 的詳細資訊,請參閱 CP/M 參考手冊。
以下是一些您開始使用時所需的 CP/M 命令:
取得目錄清單:
dir
清除檔案:
era *.txt
將 Microsoft BASIC
mbasic.com
從磁碟機 A 複製到磁碟機 B:pip b:=a:mbasic.com
列出檔案的內容:
type hw.c
重新命名檔案:
ren hello.c=hw.c
開始使用 Microsoft BASIC-80
如需 Microsoft BASIC 的詳細資訊,請參閱 Microsoft BASIC-80 參考手冊。
磁碟機 A 包含 Microsoft BASIC-80。
若要啟動 Microsoft BASIC,請從 CP/M 命令提示字元輸入:
mbasic B:TEST.BAS
在 Microsoft BASIC 啟動之後,其會在磁碟機 B 上開啟或建立名為 TEST.BAS 的檔案。
輸入第一個程式:
10 for i = 1 to 1000 20 print i 30 next i
將程式儲存到磁碟:
save "B:TEST.BAS"
從磁碟載入程式:
load "B:TEST.BAS"
選取 Ctrl+C 使程式停止執行。
結束 BASIC:
system
您可以從 Altair 模擬器隨附的下列 BASIC 應用程式深入瞭解 BASIC:
- DISKRW.BAS
- STARTREK.BAS
- TICTACTOE.BAS
- SIMPLE.BAS
- LOOPY.BAS
- WEATHER.BAS
- IOT.BAS
使用連接埠讀取溫度和空氣壓力
BASIC 語言具有稱為連接埠的擴充性機制。 Altair 模擬器包含對 IOT.BAS 應用程式使用的連接埠的支援。 IOT.BAS 應用程式會在連接埠 43 中呼叫,以讀取溫度和連接埠 44 以讀取空氣壓力。 這些呼叫會路由傳送至 Altair 模擬器 main.c 中的 C sphere_port_in
值。
如果您有 Avnet Azure Sphere 入門套件,則會從上線感應器讀取溫度和壓力資料。 如果您有來自 Seeed Studio 的 Azure Sphere 裝置,則會使用隨機溫度和壓力資料。
下列 BASIC 程式是 IOT.BAS 的清單:
10 PRINT
20 PRINT "Avnet onboard temperature and pressure sensor App"
30 PRINT
70 A$=""
80 C=INP(43)
90 IF C = 0 THEN GOTO 120
100 A$=A$+CHR$(C)
110 GOTO 80
120 PRINT "Temperature is ";A$;" degrees Celsius."
130 A$=""
140 C=INP(44)
150 IF C = 0 THEN GOTO 180
160 A$=A$+CHR$(C)
170 GOTO 140
180 PRINT "Air pressure is ";A$;" hPa."
210 PRINT
這是在 Altair 模擬器應用程式的 main.c 中找到的 C sphere_port_in
函數:
/// <summary>
/// Support for BASIC Port In for IOT.BAS temperature and pressure example
/// Example shows environment temperature and pressure example
/// </summary>
/// <param name="port"></param>
/// <returns></returns>
static uint8_t sphere_port_in(uint8_t port) {
static bool reading_data = false;
static char data[10];
static int readPtr = 0;
uint8_t retVal = 0;
if (port == 43) {
if (!reading_data) {
readPtr = 0;
snprintf(data, 10, "%d", onboard_telemetry.latest.temperature);
publish_telemetry(onboard_telemetry.latest.temperature, onboard_telemetry.latest.pressure);
reading_data = true;
}
retVal = data[readPtr++];
if (retVal == 0x00) {
reading_data = false;
}
}
if (port == 44) {
if (!reading_data) {
readPtr = 0;
snprintf(data, 10, "%d", onboard_telemetry.latest.pressure);
reading_data = true;
}
retVal = data[readPtr++];
if (retVal == 0x00) {
reading_data = false;
}
}
return retVal;
}
執行 IOT.BAS 應用程式
若要啟動 Microsoft BASIC,請從 CP/M 命令提示字元輸入:
mbasic A:IOT.BAS
在 Microsoft BASIC 啟動之後,其會開啟 IOT.BAS 應用程式。
執行應用程式:
run
當您執行此應用程式時,溫度和壓力資料會發佈至 Azure IoT Central。 您可以在 Azure IoT Central 入口網站中裝置的 [環境] 索引標籤底下檢視資料。
擴充 IOT.BAS 應用程式
將 IOT.BAS 應用程式設為每隔五秒讀取溫度和壓力。 讀取溫度和壓力時,資料會傳送至 Azure IoT Central,並繪製在環境圖表上。
若要將應用程式暫停大約 5 秒,請新增迴圈:
250 FOR J = 0 TO 30000: NEXT J
使用 BASIC
save
命令儲存變更:save "B:IOT.BAS"
開始使用 Word-Master 文字編輯器
CP/M 磁碟映像包含 Word-Master 文字編輯器。 若要使用 Word-Master,您必須將網路終端機切換為字元輸入模式。 在字元輸入模式中,網路終端機會將您輸入的每個字元當做 MQTT 訊息傳送至 Altair 模擬器。
若要在行輸入模式和字元輸入模式之間切換,請選取 Ctrl+L。 當您完成 Word-Master 的使用時,請切換回行輸入模式。 在行輸入模式中透過 MQTT 進行網路終端機通訊的效率更高。
如需詳細資訊,請檢視 Word-Master 使用者指南。
下表列出 Word-Master 使用的 Ctrl 字元。 此清單來自 Altair 8800 部落格的體驗。
VIDEO MODE SUMMARY
^O INSERTION ON/OFF RUB DELETE CHR LEFT
^S CURSOR LEFT CHAR ^G DELETE CHR RIGHT
^D CURSOR RIGHT CHAR ^\ DELETE WORD LEFT
^A CURSOR LEFT WORD ^T DELETE WORD RIGHT
^F CURSOR RIGHT WORD ^U DELETE LINE LEFT
^Q CURSOR RIGHT TAB ^K DELETE LINE RIGHT
^E CURSOR UP LINE ^Y DELETE WHOLE LINE
^X CURSOR DOWN LINE ^I PUT TAB IN FILE
^^ CURSOR TOP/BOT SCREEN ^N PUT CRLF IN FILE
^B CURSOR RIGHT/LEFT LINE ^@ DO NEXT CHR 4X
^W FILE DOWN 1 LINE ^P NEXT CHR IN FILE
^Z FILE UP 1 LINE ^V NEXT CHR(S) TO VIDEO
^R FILE DOWN SCREEN ESC EXIT VIDEO MODE
^C FILE UP SCREEN ^J DISPLAY THIS
在字元輸入模式中,下列鍵盤對應將改善您的編輯體驗:
Keyboard key Word-Master Ctrl Sequence
----------------------------------------------
Insert ^O INSERTION ON/OFF
Delete ^G DELETE CHR RIGHT
Cursor Left ^S CURSOR LEFT CHAR
Cursor Right ^D CURSOR RIGHT CHAR
Cursor Up ^E CURSOR UP LINE
Cursor Down ^X CURSOR DOWN LINE
編譯組譯工具應用程式
CP/M 磁碟映像包含示範組譯工具應用程式。 請遵循下列步驟來編輯、組合及載入示範檔案:
使用
pip
命令,將示範應用程式 (demo.asm) 複製到磁碟機 B:pip b:=a:demo.asm
使用 Word-Master 編輯 demo.asm 檔案。 從 CP/M 命令提示字元,輸入:
a:wm b:demo.asm
選取 Ctrl+L,將網路終端機切換為字元輸入模式。
對 demo.asm 檔案進行變更。
將更新儲存至 demo.asm 檔案:
- 選取 Esc 鍵。
- 選取 E 以結束。 您的檔案變更會儲存至磁碟。
選取 Ctrl+L,將網路終端機切換為行輸入模式。
組合 demo.asm 檔案:
a:asm b:demo
載入並連結已組合的程式碼:
a:load b:demo
執行示範應用程式:
b:demo
編譯 C 應用程式
CP/M 磁碟映像包含簡單 C 應用程式。 請遵循下列步驟來編輯、編譯及連結 hw.c (helloworld) 檔案:
使用
pip
命令,將 hw.c 原始程式碼複製到讀取/寫入磁碟機 B:pip b:=a:hw.c
使用 Word-Master 編輯 hw.c 檔案:
a:wm b:hw.c
選取 Ctrl+L,將網路終端機切換為字元輸入模式。
對 hw.c 檔案進行變更。
將更新儲存至 hw.c 檔案:
- 選取 Esc 鍵。
- 選取 E 以結束。 您的檔案變更會儲存至磁碟。
選取 Ctrl+L,將網路終端機切換為行輸入模式。
編譯 hw.c 檔案:
a:cc hw
連結 hw 應用程式:
a:clink hw
執行 hw 應用程式:
b:hw
選取 Ctrl+C,使 hw 應用程式停止執行。