Latihan - Memprogram Altair dengan menggunakan CP/M
Dalam latihan ini, Anda akan mempelajari cara memulai pemrograman emulator Altair.
Hubungkan ke terminal web
- Beralih kembali ke terminal web di browser web Anda.
- Jika diperlukan, autentikasi terminal web.
- Emulator Altair mungkin telah mulai berjalan sebelum Anda tersambung ke terminal web. Jika demikian, tekan tombol RESET di Azure Sphere untuk menghidupkan ulang emulator Altair. Saat Azure Sphere dimulai ulang, prompt CP/M
>
akan muncul di terminal web.
Mulai menggunakan CP/M
Untuk informasi selengkapnya tentang CP/M, lihat Panduan referensi CP/M.
Berikut adalah beberapa definisi untuk membantu Anda memulai:
Mendapatkan daftar direktori:
dir
Menghapus file:
era *.txt
Salin Microsoft BASIC
mbasic.com
dari drive A ke drive B:pip b:=a:mbasic.com
Daftar isi file:
type hw.c
Mengganti nama file:
ren hello.c=hw.c
Mulai menggunakan Microsoft BASIC-80
Untuk informasi selengkapnya tentang Microsoft BASIC, lihat Panduan referensi Microsoft BASIC-80.
Microsoft BASIC-80 disertakan pada drive A.
Untuk memulai Microsoft BASIC, dari prompt perintah CP/M, masukkan:
mbasic B:TEST.BAS
Setelah Microsoft BASIC dimulai, microsoft BASIC akan membuka atau membuat file yang disebut TEST. BAS pada drive B.
Masukkan program pertama Anda:
10 for i = 1 to 1000 20 print i 30 next i
Simpan program Anda ke disk:
save "B:TEST.BAS"
Muat program Anda dari disk:
load "B:TEST.BAS"
Hentikan program agar tidak berjalan dengan memilih Ctrl+C.
Keluar dari BASIC:
system
Anda dapat mempelajari lebih selengkapnya tentang BASIC dari aplikasi BASIC berikut yang disertakan dengan emulator Altair:
- DISKRW.BAS
- STARTREK.BAS
- TICTACTOE.BAS
- SIMPLE.BAS
- LOOPY.BAS
- WEATHER.BAS
- IOT.BAS
Gunakan port untuk membaca suhu dan tekanan udara
Bahasa BASIC memiliki mekanisme ekstensibilitas yang disebut port. Emulator Altair menyertakan dukungan untuk port yang digunakan aplikasi IOT.BAS. Aplikasi IOT.BAS memanggil di port 43 untuk membaca suhu dan port 44 untuk membaca tekanan udara. Panggilan ini dirutekan ke nilai C sphere_port_in
di main.c emulator Altair.
Jika Anda memiliki Avnet Azure Sphere Starter Kit, data suhu dan tekanan dibaca dari sensor onboard. Jika Anda memiliki perangkat Azure Sphere dari Seeed Studio, data suhu dan tekanan acak akan digunakan.
Program BASIC berikut adalah daftar 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
Ini adalah sphere_port_in
fungsi C yang ditemukan di main.c dari aplikasi emulator Altair:
/// <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;
}
Jalankan aplikasi IOT.BAS
Untuk memulai Microsoft BASIC, dari prompt perintah CP/M, masukkan:
mbasic A:IOT.BAS
Setelah Microsoft BASIC dimulai, akan terbuka aplikasi IOT.BAS.
Jalankan aplikasi:
run
Saat Anda menjalankan aplikasi ini, data suhu dan tekanan diterbitkan ke Azure IoT Central. Anda dapat melihat data di portal web Azure IoT Central, di bawah tab Lingkungan untuk perangkat Anda.
Perluas aplikasi IOT.BAS
Buat aplikasi IOT.BAS membaca suhu dan tekanan setiap lima detik. Saat suhu dan tekanan dibaca, data dikirim ke Azure IoT Central dan diplot pada bagan Lingkungan.
Untuk menjeda aplikasi selama kurang lebih 5 detik, tambahkan satu putaran:
250 FOR J = 0 TO 30000: NEXT J
Simpan perubahan Anda dengan menggunakan perintah BASIC
save
:save "B:IOT.BAS"
Mulailah dengan editor teks Word-Master
Gambar disk CP/M menyertakan editor teks Word-Master. Untuk menggunakan Word-Master, Anda harus mengalihkan terminal web ke mode input karakter. Dalam mode input karakter, terminal web mengirimkan setiap karakter yang Anda ketik sebagai pesan MQTT ke emulator Altair.
Untuk beralih antara mode input baris dan mode input karakter, pilih Ctrl+L. Setelah selesai dengan Word-Master, beralih kembali ke mode input baris. Komunikasi terminal web melalui MQTT dalam mode input baris lebih efisien.
Untuk informasi selengkapnya, lihat Panduan pengguna Word-Master.
Tabel berikut mencantumkan karakter Ctrl yang Word-Master gunakan. Daftar ini bersumber dari blog Mengalami 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
Dalam mode input karakter, pemetaan keyboard berikut akan meningkatkan pengalaman pengeditan Anda:
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
Mengkompilasi aplikasi perakitan
Gambar disk CP/M mencakup aplikasi perakit demo. Ikuti langkah-langkah berikut untuk mengedit, merakit, dan memuat file demo:
Salin aplikasi demo (demo.asm) ke drive B dengan menggunakan perintah
pip
:pip b:=a:demo.asm
Edit file demo.asm dengan Word-Master. Dari prompt perintah CP/M, masukkan:
a:wm b:demo.asm
Alihkan terminal web ke mode input karakter dengan memilih Ctrl+L.
Buat perubahan Anda pada file demo.asm.
Simpan pembaruan Anda pada file demo.asm:
- Pilih kunci Esc.
- Pilih E untuk keluar. Perubahan file Anda disimpan ke disk.
Alihkan terminal web ke mode input karakter dengan memilih Ctrl+L.
Merakit file demo.asm:
a:asm b:demo
Muat dan tautkan kode rakitan:
a:load b:demo
Jalankan aplikasi demo:
b:demo
Mengkompilasi aplikasi C
Gambar disk CP/M mencakup aplikasi C sederhana. Ikuti langkah-langkah ini untuk mengedit, mengkompilasi, dan menautkan file hw.c (helloworld):
Salin kode sumber hw.c untuk membaca/menulis drive B dengan menggunakan perintah
pip
:pip b:=a:hw.c
Edit file hw.c dengan Word-Master:
a:wm b:hw.c
Alihkan terminal web ke mode input karakter dengan memilih Ctrl+L.
Buat perubahan Anda pada file hw.c.
Simpan pembaruan Anda pada file hw.c:
- Pilih kunci Esc.
- Pilih E untuk keluar. Perubahan file Anda disimpan ke disk.
Alihkan terminal web ke mode input karakter dengan memilih Ctrl+L.
Kompilasi file hw.c:
a:cc hw
Tautkan aplikasi hw:
a:clink hw
Jalankan aplikasi hw:
b:hw
Hentikan aplikasi hw agar tidak berjalan dengan memilih Ctrl+C.