# Sestavení SAP-1 v Turing Complete: podrobný návod pro vývojáře
V hře Turing Complete se realizuje sestavení počítače SAP-1 (Simple As Possible) — klasické 8bitové architektury s 4bitovým adresním prostorem (16 bajtů paměti). Jedná se o akumulační model, kde všechny operace používají akumulátor jako hlavní registr. Hra umožňuje projít etapy od základních logických prvků po úplnou architekturu a assembler programů.
SAP-1 kopíruje konstrukci Bena Eatera: dva registry (akumulátor a pomocný), paměť 16 bajtů. Omezení hry — absence ukládání dat do bloků programu.
Hlavní komponenty SAP-1
Architektura zahrnuje:
- Dekodér instrukcí na bázi ROM čipu pro zjednodušení mikrokódu.
- Registrů: akumulátor (A), instrukční (IR), paměť (RAM).
- ALU: sčítací/odečítací jednotka s vlajkami Z (zero) a C (carry).
- Kontroler: mikrokód se signály MI, RO, II, AI, AO aj.
Uspořádání schématu následuje originál Bena Eatera: paměť vlevo, ALU uprostřed, výstup vpravo.
Implementace mikrokódu
Dekodér instrukcí používá ROM s mikropogramem. Pro načtení do hry se generuje ROM soubor. Zde je kód v C++ pro vytvoření mikrokódu (zohledňuje vlajky ZF/CF):
#include <windows.h>
#include <iostream>
#include <fstream>
#include <vector>
#include <format>
#include <filesystem>
#define HLT 0b1000000000000000
// ... (ostalnye #define how in originale)
uint16_t ucode_TEMP[16][8] = {
{MI|CO, RO|II|CE, 0, 0, 0, 0, 0, 0}, // NOP
// ... (full array)
};
uint16_t ucode[4][16][8];
void initUCode() {
memcpy(ucode[FLAGGS_Z0C0], ucode_TEMP, sizeof(ucode_TEMP));
// Adaptatsiya for flagov JC/JZ
}
int main() {
initUCode();
std::ofstream fout("2929467240861350664.rom", std::ios::binary);
fout.write((char*)&ucode, sizeof(ucode));
fout.close();
return 0;
}
Kompilovat s C++20 (gnu++20 v VS Code). Soubor .rom se zkopíruje do uživatelské složky hry.
Příkazy procesoru
| Kod | Mnemotechnika | Popis |
|-----|-----------|----------|
| 0000 | NOP | Žádná operace |
| 0001 | LDA | Načtení do A |
| 0010 | ADD | Sčítání s B |
| 0011 | SUB | Odečítání |
| 0100 | STA | Uložení A |
| 0101 | LDI | Načtení okamžité hodnoty |
| 0110 | JMP | Nepodmíněný skok |
| 0111 | JC | Skok podle Carry |
| 1000 | JZ | Skok podle Zero |
| 1110 | OUT | Výstup |
| 1111 | HLT | Halt |
Mikrokód generuje sekvence signálů pro každý takt.
Instalace SAP-1 v Sandbox
- Stáhněte soubory projektu.
- Najděte cestu v nastavení:
C:\Users\[User]\AppData\Roaming\Godot\app_userdata\Turing Complete. - Zkopírujte
.roma schémata do uživatelské složky. - Spusťte Sandbox, načtěte
sap-1.
Ověřte: spusťte testovací program (hra v paličky z Fort Boyard).
Problémy a nuance sestavování
- Otáčení prvků: mezerník.
- Výběr: Shift.
- Vstup do architektury: dvojitý klik.
- Vlastní prvky: jeden vstup/výstup na tile, minimálně jeden vnitřní komponent.
Hra je v early access: kampaň končí náhle, ale Sandbox je plný možností.
Co je důležité
- SAP-1 — akumulační architektura 80. let pro úsporu paměti.
- Mikrokód v ROM zjednodušuje dekódování (alternativa — čistá logika).
- Omezení: 16 bajtů RAM bez dat v programu.
- Hra učí od NAND po assembler.
- Generování ROM přes C++ pro vlastní čipy.
— Editorial Team
Zatím žádné komentáře.