Latihan - Memprogram Altair dengan menggunakan CP/M

Selesai

Dalam latihan ini, Anda akan mempelajari cara memulai pemrograman emulator Altair.

Hubungkan ke terminal web

  1. Beralih kembali ke terminal web di browser web Anda.
  2. Jika diperlukan, autentikasi terminal web.
  3. 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.

  1. 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.

  2. Masukkan program pertama Anda:

    10 for i = 1 to 1000
    20 print i
    30 next i
    
  3. Simpan program Anda ke disk:

    save "B:TEST.BAS"
    
  4. Muat program Anda dari disk:

    load "B:TEST.BAS"
    
  5. Hentikan program agar tidak berjalan dengan memilih Ctrl+C.

  6. 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

  1. Untuk memulai Microsoft BASIC, dari prompt perintah CP/M, masukkan:

    mbasic A:IOT.BAS
    

    Setelah Microsoft BASIC dimulai, akan terbuka aplikasi IOT.BAS.

  2. 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.

Screenshot that shows an I o T Central chart.

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.

  1. Untuk menjeda aplikasi selama kurang lebih 5 detik, tambahkan satu putaran:

    250 FOR J = 0 TO 30000: NEXT J
    
  2. 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.

Screenshot of Altair running the Word-Master text editor.

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:

  1. Salin aplikasi demo (demo.asm) ke drive B dengan menggunakan perintah pip:

    pip b:=a:demo.asm
    
  2. Edit file demo.asm dengan Word-Master. Dari prompt perintah CP/M, masukkan:

    a:wm b:demo.asm
    
  3. Alihkan terminal web ke mode input karakter dengan memilih Ctrl+L.

  4. Buat perubahan Anda pada file demo.asm.

  5. Simpan pembaruan Anda pada file demo.asm:

    1. Pilih kunci Esc.
    2. Pilih E untuk keluar. Perubahan file Anda disimpan ke disk.
  6. Alihkan terminal web ke mode input karakter dengan memilih Ctrl+L.

  7. Merakit file demo.asm:

    a:asm b:demo
    
  8. Muat dan tautkan kode rakitan:

    a:load b:demo
    
  9. 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):

  1. Salin kode sumber hw.c untuk membaca/menulis drive B dengan menggunakan perintah pip:

    pip b:=a:hw.c
    
  2. Edit file hw.c dengan Word-Master:

    a:wm b:hw.c
    
  3. Alihkan terminal web ke mode input karakter dengan memilih Ctrl+L.

  4. Buat perubahan Anda pada file hw.c.

  5. Simpan pembaruan Anda pada file hw.c:

    1. Pilih kunci Esc.
    2. Pilih E untuk keluar. Perubahan file Anda disimpan ke disk.
  6. Alihkan terminal web ke mode input karakter dengan memilih Ctrl+L.

  7. Kompilasi file hw.c:

    a:cc hw
    
  8. Tautkan aplikasi hw:

    a:clink hw
    
  9. Jalankan aplikasi hw:

    b:hw
    
  10. Hentikan aplikasi hw agar tidak berjalan dengan memilih Ctrl+C.