Tautan ke Bagian 1Pada bagian ini, kita akan melihat bagaimana AGC diatur dari perspektif seorang programmer. Daftar referensi dan sumber diberikan di akhir bagian pertama artikel. Bahan bagian ini didasarkan pada bahan buku [1].

Representasi angka dalam memori AGC
AGC menggunakan kata-kata 15-bit, dengan tanda di tempat ke-15. Ada juga parity discharge, yang direkam dan dikendalikan oleh perangkat keras dan sepenuhnya transparan untuk perangkat lunak, dengan masing-masing operasi baca dan tulis ke memori.

Integer disajikan dalam format "tambahan 1". Itu adalah sebagai berikut:
Angka non-negatif dari 0 hingga 16383 disajikan dalam bentuk kode dari 000 000 000 000 000 menjadi 011 111 111 111 111, masing-masing.
Angka negatif dibentuk dengan membalikkan angka positif, mis. -1 diwakili sebagai 111 111 111 111 111, dan hingga -16383, diwakili oleh kode biner 100.000.000.000.000.
Operasi aritmatika dilakukan sebagai berikut:
2: 000 000 000 000 010 -5: 111 111 111 111 010 111 111 111 111 100 (= -3)
Menambahkan dua angka negatif agak lebih rumit.
Jika kami menambahkan sesuai dengan aturan yang biasa, maka tidak ada yang berhasil:
-2: 111 111 111 111 101 -5: 111 111 111 111 010 111 111 111 110 111 (= -8)
Namun, Anda mungkin memperhatikan bahwa penambahan bit yang paling signifikan menghasilkan bit carry. Kami hanya perlu menambahkan carry bit untuk mendapatkan hasil yang benar:
-2: 111 111 111 111 101 -5: 111 111 111 111 010 111 111 111 110 111 (= -8) Carry 1 111 111 111 111 000 (= -7)
Anda juga dapat memperhatikan bahwa nol positif dan negatif dimungkinkan dalam sistem ini, yang menciptakan kesulitan tambahan untuk programmer, misalnya, ketika membandingkan hasil operasi dengan nol.
Overflow baterai selama operasi aritmatika juga dapat dipantau, yang akan dibahas di bawah ini.
ACG hanya mendukung bilangan bulat aritmatika dan tidak dapat melakukan operasi dengan angka nyata dalam perangkat keras, tetapi dapat melakukannya dalam perangkat lunak. AGC menggunakan representasi biner-desimal dari angka 28-bit (9 tempat desimal), yang menempati dua sel memori, masing-masing 14 bit. Digit tanda juga digunakan, dan kata rendah dan kata tinggi dapat memiliki tanda berbeda! Artinya, mungkin ada angka yang direpresentasikan sebagai, misalnya, +5 * 10000 + -5 * 100 = 49500. Aneh, tetapi mungkin.
Jarak dan kecepatan untuk perhitungan disajikan dalam sistem metrik, tetapi data untuk kru ditampilkan dalam sistem ukuran Inggris (kaki, dll.).
Format instruksiModel memori
Pada bagian sebelumnya, telah disebutkan bahwa memori komputer dibagi menjadi 2 Kslov RAM dan 36 K kata ROM. Karena instruksi hanya membutuhkan 12 bit untuk nilai alamat, prinsip pembagian memori menjadi bank digunakan. Daftar khusus digunakan untuk menunjukkan bank saat ini.
Untuk beralih ke bank memori baru, perintah "Transfer ke Bank Baru" (TNB) digunakan, yang melakukan hal berikut:
- Salin register bank saat ini ("Bank") ke register "Bank Yang Disimpan"
- Menyalin alamat 12-bit dari lokasi memori mengikuti perintah TNB ke register "Alamat Pengembalian"
- Kami memuat alamat bank baru ke dalam register Bank, dan memuat offset yang ditunjukkan oleh instruksi TNB ke konter instruksi.
Daftar
AGC telah mendaftarkan peta ke ruang alamat. Mereka menempati 48 kata pertama dari memori fisik.
Baterai menempati alamat 0
8 .
Baterai digunakan di sebagian besar operasi aritmatika dan logis (OR, AND, dll.). Meskipun AGC beroperasi dengan kata-kata 15-bit, baterai memiliki kapasitas 16 bit, karena menyimpan debit yang melimpah. Ketika data dimasukkan ke dalam baterai, itu jatuh ke bit yang lebih rendah, dengan bit 14 yang mengandung tanda nomor. Setelah melakukan operasi aritmatika, jika overflow belum terjadi, maka bit 15 hanya akan berisi salinan tanda, dan bit ini tidak terlihat oleh programmer. Kami menyebut digit tanda ini masing-masing sebagai S1 dan S2. Jika terjadi overflow, maka S1 dan S2 tidak akan sama. Meskipun bit S2 tetap tidak terlihat oleh programmer, di AGC ada sebanyak dua cara untuk mengatur status overflow.
Pertama, ketika terjadi overflow, interupsi dinonaktifkan secara otomatis. Penangan interupsi, jika itu terjadi pada saat ini, dapat mengatur ulang bit ini, yang akan sangat tidak diinginkan. Interupsi hanya diperbolehkan ketika bendera meluap dihapus. Bendera direset hanya ketika baterai dibersihkan atau ketika nilai baru dimuat. Untuk memeriksa flag overflow, perintah Transfer ke Penyimpanan (TS) dapat digunakan, yang menyimpan nilai baterai ke memori hanya jika tidak ada overflow, dan jika ada overflow ke atas atau ke bawah, nilai dalam baterai diganti dengan +1 atau -1 sesuai. Perintah TS juga melewatkan instruksi program selanjutnya jika terjadi overflow. Diasumsikan bahwa programmer akan menulis kode yang memproses overflow dan menempatkannya melalui satu perintah dari TS, dan segera setelah TS akan memasukkan lompatan ke instruksi setelah handler overflow.
Daftar L - Alamat 00001
8Register L juga disebut "akumulator pesanan rendah" dan dimaksudkan untuk memperluas kisaran angka yang dengannya operasi dilakukan. Ini juga dapat digunakan untuk penyimpanan variabel sementara.
Daftar Q - Alamat 00002
8Daftar Q dimaksudkan untuk menyimpan alamat pengirim. Daftar Q berisi alamat 12-bit, yang, bersama-sama dengan bank memori saat ini, memberikan alamat pengembalian penuh dari subrutin.
Daftar EBANK (Bank Penyimpanan Dapat
Dihapus ) - Alamat 00003
8RAM (juga disebut "memori yang dapat dihapus" di AGC) berisi 2048 kata, dibagi menjadi 8 bank masing-masing 256 kata. Alamat bank RAM adalah 3 bit dan terkandung dalam register EBANK.
Daftarkan FBAN K (Fixed Storage Bank) - Alamat 00004
8ROM memiliki bank 1024 kata dan berisi 36 bank. Daftar FBANK memiliki 5 bit dan memungkinkan Anda untuk mengatasi 32 bank.
Fixed Extension Bit (Superbank Bit)
Digunakan untuk mengatasi ROM 4Kslov terakhir.
Daftar BBANK (
Daftar Kedua Bank) - Alamat 00006
8Saat mentransfer kontrol ke program lain, register FBANK dan EBANK harus diubah pada waktu yang bersamaan. Register BBANK berisi kedua alamat - nomor bank RAM dan ROM. Menulis kepadanya secara otomatis memperbarui register FBANK dan EBANK.
Daftar Z (Penghitung program) - 00005
8Register Z adalah penghitung program, yang menentukan alamat dari perintah yang sedang dijalankan. Ini memiliki kapasitas 12 bit.
Zero Register (Sumber nol) - Alamat 00007
8Berisi konstanta 0.
Register Interrupt Handler - Alamat 00008
8 - 00012
8Register ZRUPT, BRUPT, ARUPT, LRUPT, QRUPT dan BANKRUPT masing-masing terletak di alamat-alamat ini.
Register ZRUPT dan BRUPT - secara otomatis menyimpan isi register Z (instruksi counter), dan register B (register internal, yang berisi alamat perintah yang akan dieksekusi selanjutnya).
Register ARUPT, LRUPT, QRUPT dan BANKRUPT digunakan untuk menghemat baterai dan register L, Q dan BB. Register ini harus disimpan secara manual dan dipulihkan secara manual hingga pernyataan RESUME dijalankan, yang berfungsi untuk mengembalikan dari interupsi.
Selama pemrosesan interupsi, AGC menonaktifkan interupsi sampai pernyataan RESUME dijalankan. Dengan demikian, pengendali interupsi saja tidak dapat diganggu.
Sebelumnya disebutkan bahwa baterai memiliki kapasitas 16 bit, dan bit yang paling signifikan digunakan untuk mendeteksi kelebihan dan tidak tersedia secara terprogram. Namun, register ARUPT, yang menyimpan baterai selama interupsi, memiliki 15 bit. Setiap kali kondisi overflow terjadi, interupsi dinonaktifkan sampai bendera overflow dihapus.
Register ARUPT, LRUPT, QRUPT, dan BANKRUPT tidak dapat digunakan di luar interrupt handler. Secara fisik, mereka tetap dapat diakses, tetapi dari sudut pandang program utama, keadaan mereka berubah pada titik waktu yang sewenang-wenang.
Mengedit register - alamat 00020
8 - 00023
8Tiga register pertama adalah register geser: Siklus Kanan, Shift Kanan, Siklus Kiri, yaitu, pergeseran siklik ke kanan, pergeseran ke kanan, dan pergeseran siklik ke kiri. Sistem instruksi AGC tidak memiliki operasi shift, dan untuk menggeser nomor dengan satu bit, itu harus ditulis ke salah satu register ini dan kemudian dihitung. Setiap rekaman digeser satu bit.
Register EDOP (EDit Interpretive OPcode) adalah yang keempat dari register edit.
Perintah juru bahasa, yang akan dibahas di bawah ini, disimpan dalam dua kata dalam satu kata dan masing-masing menempati 7 bit. Operasi AND dengan mask sudah cukup untuk membaca perintah orde rendah, tetapi orde tinggi akan membutuhkan perubahan 7 bit. Register EDOP melakukan perubahan ini dalam satu operasi.
Mengedit register tidak dapat digunakan dalam interrupt handler, dan inilah alasannya. Register reguler harus disimpan pada awal pawang, dan dikembalikan saat keluar. Tetapi register edit melakukan operasi pada data saat menulis kepada mereka, dan ini akan menyebabkan salah fungsi dari program yang terputus.
Pengatur waktu dan jam
Jam waktu nyata
AGC tidak menggunakan waktu, hari, bulan, dan tahun kalender. Sebagai gantinya, hitungan mundur adalah dari titik "nol", yang dimulai beberapa jam sebelum memulai. Jam ditampilkan dalam dua kata di memori, di alamat 00024
8 (T2), 00025
8 (T1). Kata T1 bertambah setiap 10 ms, kata T2 kira-kira setiap 164 detik, ketika kata T1 penuh.
Pengatur waktu
00026
8 (T3) Daftar tunggu - bertambah setiap 10 ms., Bergeser relatif ke T4RUPT sebesar 5 ms
00027
8 (T4) T4RUPT - bertambah setiap 10 ms.
00030
8 (T5) Autopilot - bertambah setiap 100 ms.
00031
8 (T6) jam resolusi tinggi - bertambah setiap 1/1600 s = 0,625 ms.
Pengatur waktu pertama, T3, diperlukan agar daftar tugas berfungsi (Daftar tunggu). Daftar tunggu adalah daftar tugas yang sangat singkat, yang masing-masing membutuhkan waktu singkat, dan dapat dieksekusi langsung di interrupt handler. Daftar ini berisi hingga tujuh tugas, yang masing-masing dimulai pada interval tertentu. Waktu pelaksanaan tugas sangat terbatas hingga 4 ms. Selama waktu ini, komputer berhasil menyelesaikan sekitar 160 instruksi.
Pengatur waktu T4 menjalankan tugas periodik kritis mulai dari 20 hingga 120 ms, termasuk pertukaran data dengan DSKY, polling switch pada panel kontrol kapal dan tugas-tugas lainnya.
Unit Pengukuran Inersia IMU (Unit Pengukuran Inersia)
IMU adalah platform yang distabilkan secara giroskop dengan akselerometer, yang berfungsi untuk menentukan posisi dan akselerasi kapal di ruang angkasa.

Di sini kami tidak akan menjelaskan prinsip giroskop, kami hanya mencatat bahwa posisi sumbu giroskop diukur oleh CDU (Coupling Data Unit). Perangkat ini menghasilkan pulsa ketika giroskop berputar, menghasilkan 32768 pulsa per revolusi, yang sesuai dengan resolusi 39,55 detik busur per pulsa.
CDU juga mentransmisikan ke AGC posisi sumbu dari sextant dan radar pendekatan. Karena sextant hanya ada di modul perintah, dan radar hanya ada di modul bulan, mereka menggunakan port AGC yang sama.
IMU juga memiliki tiga akselerometer pendulum (Pulsed Integrating Pendulous Accelerometers, PIPA). Tapi ada sedikit kehalusan. Terlepas dari kenyataan bahwa modul bulan dan modul perintah memiliki IMU yang sama, rentang pengukuran kecepatan mereka berbeda. Rentang kecepatan IMU dari modul perintah adalah dari 0 hingga 11000 m / s, dan untuk modul bulan - hingga 1700 m / s. Resolusi IMU dari modul perintah adalah 5,85 cm / s, untuk modul bulan - 1 cm / s.
Penghitung CDUS (X, Y, Z, OPTIS, OPTT) dan PIPAS (X, Y, Z)
Transfer data dari CDU ke AGC adalah sebagai berikut: pulsa dari sensor dapat menambah dan mengurangi counter. Angka di konter memiliki tanda yang menunjukkan arah gerakan. Penghitung berada di alamat tertentu dalam memori, dan dapat dibaca secara terprogram. Sebanyak 8 counter digunakan, enam di antaranya menampilkan kecepatan dan sudut, dan dua digunakan untuk menampilkan posisi sudut sextant dalam modul perintah atau radar pendekatan dalam modul bulan.
Manajemen perangkat melalui penghitung
CDU bekerja di kedua arah, misalnya, tidak hanya dapat menentukan posisi radar kedekatan, tetapi juga dapat membaca isi register dari memori komputer dan memberikan tegangan ke motor penggerak radar sampai radar dipasang pada sudut yang diperlukan.
Antarmuka komputer lainnya
Modul bulan memiliki pegangan (Attitude Controller Assembly, ACA) yang posisinya dapat dibaca secara terprogram. Setiap sumbu dari pengontrol ini mengirim nilai ke variabel P_RHCCTR, Q_RHCCTR dan R_RHCCTR.
Pengontrol ACA
Penampilan Pengendali ACAKontroler ACA hanya dipasang di modul bulan
INLINK (Saluran Transmisi Telemetri)
Perangkat INLINK menyediakan komunikasi dua arah dengan Bumi, dan berfungsi untuk mengirimkan informasi telemetri dan menerima data dari pusat kontrol penerbangan. Astronot dapat memasukkan data yang diperlukan untuk penerbangan melalui DSKY, tetapi proses ini lambat dan penuh dengan kesalahan. Melalui register INLINK, data dapat dimasukkan langsung dari Bumi ke komputer.
Manajemen mesin
Selama proses pendaratan modul bulan, AGC terus menerus menghitung nilai yang diperlukan dari gaya traksi dan mengirimkan sinyal kontrol ke engine. Selama 12 menit pendaratan berlangsung, mesin membakar sekitar setengah bahan bakar, dan program harus memperhitungkan pengurangan massa. Dorongan mesin bervariasi dari 92,5%, yang berjumlah 46.700 N, hingga 10% dari dorongan penuh. Tetapi dorongan di atas 65% menyebabkan keausan yang parah pada ruang bakar dan nozzle, sehingga program AGC harus meminimalkan waktu saat mesin berada dalam mode ini.
Komputer terhubung ke engine platform pendaratan melalui Descent Engine Control Assembly (DECA). Manajemen dilakukan melalui register THRUST. Awak dapat secara manual menyesuaikan nilai dorong melalui Pengendali Tangan Thrust / Translational (TTHC).
Pengendali Tangan Thrust / Translational (TTHC).
Pengendali Tangan Thrust / Translational (TTHC). PenampilanPegangan pengontrol terhubung langsung ke DECA, komputer tidak melihat nilai yang dimasukkan secara manual.
Perangkat analog
Indikator analog, ALTM (tampilan analog: altimeter dan laju meter), juga digunakan untuk menunjukkan ketinggian dan laju perubahan ketinggian yang AGC kontrol melalui register ALTM. Indikator analog dibuat dalam bentuk skala vertikal (tapemeter).
Indikator Tinggi dan Kecepatan VertikalMengatasi dan bank memori
Seperti yang telah disebutkan, AGC memiliki dua jenis memori, RAM, juga disebut "memori yang dapat dihapus", dan ROM (memori tetap). Kapasitas memori adalah 38 Kslov, yang tidak memungkinkan pengalamatan seluruh memori secara langsung, karena panjang alamat dalam kata perintah adalah 12 bit.
Untuk memisahkan memori menjadi bank, bank mendaftarkan EBANK dan FBANK digunakan, yang menentukan masing-masing bank RAM dan ROM. Ini memperluas ruang alamat 32Kwords, dan untuk lebih memperluas ruang alamat ROM, Fixed Extension Bit digunakan, yang memungkinkan akses ke 36Kwords.
Bank RAM
RAM memiliki volume 2K kata, dan dibagi menjadi 8 bank dengan 256 kata.
Dekripsi alamat RAMUntuk mengalamatkan kata di bank RAM, diperlukan 8 bit. Diperlukan dua bit lagi untuk menentukan tipe bank: non-switchable (unswithed) atau switchable (swithed). Bit 9 dan 10 pada gambar di atas bertanggung jawab untuk ini (perhatikan bahwa bit diberi nomor dari 1). Jika bit-bit ini mengandung 00, 01 dan 10, maka register EBANK tidak digunakan, jika 11 digunakan, maka konten EBANK digabungkan dengan alamat 8-bit yang direkam dalam kata perintah, seperti yang ditunjukkan pada gambar di bawah ini. Jika register EBANK tidak digunakan, maka tiga bank memori pertama dipanggil, yang disebut istilah agak menyesatkan "Tetap Dihapus". Untuk mengakses RAM, bit 11 dan 12 harus diatur ke 0.
Dekripsi alamat RAM menggunakan register EBANKROM
Untuk mengakses ROM, pendekatan yang sama digunakan. Bit 11 dan 12 dari kata kontrol menentukan bank mana yang digunakan, jika bit-bit ini mengandung 00, maka RAM digunakan, seperti yang ditunjukkan pada bagian sebelumnya, jika 10 atau 11, maka semua 12 bit digunakan sebagai alamat dalam ROM, register FBANK tidak digunakan, jika 01, maka alamat yang terdiri dari 10 bit yang lebih rendah dari kata kontrol dan isi register FBANK digunakan.
Dekripsi alamat ROM
Dekripsi alamat ROM menggunakan register FBANKBank umum
Produk sampingan penting dari skema pemisahan memori untuk bank adalah kemampuan untuk menghubungkan bank ROM dan RAM ke ruang alamat yang sama, dan menggunakan RAM tanpa harus beralih register bank. Gambar tersebut menjelaskan cara kerja skema semacam itu.
Skema menggunakan RAM dan ROM di ruang alamat yang samaMemori melebihi 32 kata
Untuk mengakses memori di atas 32 kata, bit ekstensi ROM, Fixed Extension Bit, digunakan sebagai Bit Superbank. Bit superbank terletak di bit 7 dari saluran input / output 7. Channel 7 berbeda dari saluran lain karena mendukung baik membaca dan menulis. Tentu saja, bit ekspansi ROM harus disimpan selama penanganan interupsi dan saat berpindah tugas.
Transfer kendali antar bank
Perhatikan urutan register FBANK, Z, dan BB berada di memori yang lebih rendah. Tampaknya, mengapa tidak menggabungkannya dalam satu kata? Tetapi ini dilakukan dengan sengaja untuk menciptakan mekanisme transfer kontrol. Saat beralih ke bank lain, nilai-nilai baru harus ditetapkan ke FBANK dan EBANK, atau BBANK. Namun, ini menimbulkan masalah. Misalkan, misalnya, bahwa program berjalan di alamat 01033
8 di bank ROM 07, dan Anda harus pergi ke alamat 02371
8 di bank ROM 13. Jika Anda mengubah register Z, ia mentransfer kontrol ke alamat 02371
8 di bank saat ini, yang tidak kita perlukan. Jika kita beralih bank saat ini terlebih dahulu, situasi yang sama akan muncul. Diperlukan penggantian simultan Z register dan bank memori. Untuk melakukan ini, gunakan instruksi DXCH, yang membaca baterai dan register L, dan bertukar isinya dengan dua lokasi berturut-turut dalam memori. Dengan demikian, dimungkinkan untuk menukar baterai dan mendaftarkan L baik dengan sepasang FBANK, Z, atau dengan sepasang Z, BB. Opsi-opsi ini dikodekan oleh dua mnemonik: Kontrol Transfer Transfer Ganda Bank-Bank (DTCB) dan Transfer Bank Tetap Transfer-Bank Ganda (DTCF). Perintah DTCB tidak hanya memungkinkan Anda untuk pergi ke alamat lain, tetapi juga mengubah bank RAM, dan perintah DTCF mentransfer kontrol, meninggalkan bank RAM yang sama. Kembalinya dari fungsi adalah sebagai berikut. Nilai awal Z dan BBANK (atau FBANK) ditulis ke akumulator dan mendaftar L. Fungsi yang dipanggil harus menyimpan nilai-nilai ini dan kemudian melakukan operasi terbalik dengan menukar nilai dengan register bank dan Z.
Beberapa kelemahan arsitektur AGC
Sebagian besar arsitektur komputer memiliki penunjuk tumpukan dan / atau register indeks (setidaknya satu). Tapi tidak di AGC. Dukungan penunjuk tumpukan membutuhkan perangkat keras tambahan. Tidak ada register indeks yang akan memungkinkan pengorganisasian akses ke struktur data di alamat (pointer + offset), tetapi ada perintah INDEX yang menghilangkan kebutuhan untuk register semacam itu.
Juga, meskipun tidak ada register indeks perangkat keras, mereka ditiru oleh mesin virtual Interpreter, yang akan dibahas di bawah ini.Salah satu fitur AGC adalah penggunaan sistem operasi seketika multi-threaded. Agar sistem seperti itu berfungsi, sebagai suatu peraturan, diperlukan suatu mekanisme untuk mengunci data bersama (mutex). Tetapi di AGC tidak ada mekanisme seperti itu, sehingga pengembang perangkat lunak harus hati-hati memeriksa semua kasus akses bersama ke data dari berbagai proses untuk mengecualikan kemungkinan akses simultan ke data tersebut.Gangguan
4000 8 StartupMulai alamat setelah memberi energi pada AGC4004 8 T6RUPTTIME6 mencapai 0. Timer digunakan oleh autopilot.4010 8 T5RUPTTIME5 mencapai overflow. Timer digunakan oleh autopilot.4014 8 T3RUPTTIME3 mencapai overflow. Digunakan oleh penjadwal tugas WAITLIST.4020 8 T4RUPTTIME4 mencapai overflow. Scanning dan update dan tampilan DSKY4024 8 KEYRUPT1ditekan DSKY. Kode kunci dari DSKY utama tersedia di saluran 154030 8 KEYRUPT2Tekan tombol DSKY kedua. Tombol navigasi DSKY tersedia di saluran 16 (hanya modul perintah)4034 8Data UPRUPT dalam register INLINKDigunakan untuk DSKY4040 8 DOWNRUPTRegister Downlink berisi data. Digunakan untuk telemetri AGC4044 8 RADARUPTData dalam register RNRAD. Pendekatan Data Radar4050 8 RUPT10LM P64Sistem komando
Kode operasi, atau Kode Pesanan, dalam hal waktu itu, dikodekan dengan tiga bit, yaitu, hanya delapan opcodes yang mungkin, yang jelas tidak cukup untuk sistem perintah yang dikembangkan. Namun, para pengembang menemukan jalan keluar. Beberapa kode diperluas dengan bidang dua-bit tambahan, Q-Code.Opcode 000 sesuai dengan sejumlah besar operasi khusus, opcodes 011, 100 dan 111 masing-masing sesuai dengan satu operasi masing-masing.S opcodes yang tersisa 001, 010, 101 dan 110 menggunakan kode Q.
Format perintah QTrik lain juga digunakan untuk memperluas jumlah opcode yang mungkin. Beberapa instruksi tidak dapat bekerja dengan RAM, dan menetapkan RAM sebagai alamat dapat menyebabkan hasil yang tidak ditentukan, tetapi opcode tersebut dengan alamat operan di RAM digunakan untuk operasi yang sama sekali berbeda. Sebagai contoh, perintah kontrol transfer TC (transfer control) tidak dapat mentransfer kontrol ke RAM, tetapi jika alamat menunjuk ke RAM, maka opcode ini sesuai dengan perintah Enable Interrupts.Ketika opcode ini tidak cukup, pendekatan berikut digunakan. Jika kita melakukan transisi dengan perintah TC ke alamat 00006 8 , pada kenyataannya, tidak ada transisi yang terjadi, sebaliknya, yang mengikuti perintah TC 00006 8opcode ditafsirkan sebagai bagian dari serangkaian instruksi yang sama sekali berbeda. Tentu saja, instruksi semacam itu membutuhkan lebih banyak waktu untuk dieksekusi, karena prosesor harus membaca dan mendekodekan kedua opcode, tetapi masalah ini dikurangi dengan distribusi instruksi yang cermat antara dua set instruksi. Perintah yang sering digunakan termasuk dalam set instruksi utama, dan yang tersisa dalam yang diperluas.Instruksi Dasar
Secara total, AGC berisi 41 tim. Tim dibagi menjadi 6 kelompok:- Logika aritmatika
- Kontrol transfer
- Pergerakan data
- Modifikasi instruksi
- Instruksi I / O
- Lain-lain
Namun, kami tidak akan menjelaskan semua tim AGC di sini. Mereka yang tertarik bisa merujuk ke buku [1].Komunikasi dengan dunia luar: subsistem input-output
AGC tidak memiliki hard drive atau tape drive, dan semua komunikasi dengan dunia luar bermuara pada pengaturan dan pembacaan bit pada port input / output. Periferal AGC termasuk platform inersia, engine, radar, DSKY, dan sakelar panel kontrol. Pertukaran data berkecepatan tinggi tidak diperlukan, dan kecepatan pertukaran bukan merupakan faktor pembatas yang signifikan.Untuk input dan output adalah saluran yang disebut. Menulis dan membaca saluran mirip dengan menulis dan membaca sel RAM, tetapi tidak seperti RAM, sebagian besar saluran bersifat searah. Ada juga penghitungan port, yang digunakan untuk membaca posisi sumbu IMU, radar dan sextant. Pulsa dari counter sensor kenaikan dan penurunan, yang kemudian dapat dibaca oleh AGC.
Perangkat AGCInstruksi I / O merujuk pada set instruksi yang diperluas dan memerlukan perintah EXTEND sebelum opcode. Perintah I / O memiliki opcode 000, diikuti oleh PCode tiga-bit. Nilai PCode yang berbeda hanya digunakan untuk tes tanah, secara default, PCode adalah nol. Sisa 9 bit kata kontrol adalah nomor saluran. Dengan demikian, AGC dapat menangani hingga 512 saluran, tetapi hanya 16 yang digunakan dalam praktiknya. Sebagian besar perangkat periferal terhubung tidak dengan kata penuh 15-bit, tetapi dengan bit terpisah dalam sebuah kata, yaitu, operasi I / O logis DAN, ATAU diperlukan dan Eksklusif ATAU. Operasi semacam itu dapat digabungkan menjadi satu operasi tunggal dengan operasi I / O. Instruksi WOR (Write with OR), WAND (Write with AND), ROR (Read and OR) dan RXOR (Read and XOR) adalah untuk tujuan ini.Instruksi I / O menggunakan baterai untuk membaca dan menyimpan data. Tetapi ada juga register L (akumulator tingkat rendah), yang dapat dipetakan ke port, maka semua yang dibaca dan dituliskan akan secara otomatis masuk ke port. Ini memungkinkan Anda untuk menggunakan operasi logis seperti AND, OR dan XOR untuk bekerja dengan port.Tetapi tidak semua operasi I / O memerlukan membaca atau menulis hanya sedikit. Misalnya, DSKY mengirim kode kunci 5-bit. Menekan tombol pada DSKY menghasilkan interupsi KEYRUPT, kode ditempatkan di saluran input.Contoh lain ketika diperlukan untuk mentransfer sejumlah besar data melalui port adalah antarmuka uplink dan downlink, yang menyediakan komunikasi dengan Bumi pada kecepatan 51 kbit / s atau 1900 bit / s (dipilih secara manual oleh kru).Perangkat lunak
Perangkat lunak AGC didasarkan pada sistem operasi Eksekutif Real-time dan mesin virtual Interpreter. Kami akan mempertimbangkannya secara rinci di bagian selanjutnya.