Spectrum-48 terhadap sebungkus rokok, bubur dari kapak atau apa yang dapat dilakukan video STM32F103C8T6 + (perbarui)

Semuanya dimulai dengan upaya lain untuk berhenti merokok. Setelah membangunkan "kodok" internal saya untuk mencari dukungan, saya katakan kepadanya: "Lihat, sebungkus rokok saya harganya hari ini seperti komputer retro saku dengan layar, yaitu sekitar $ 10, dan sekali waktu, untuk klon Sinclair-48K, kami menghabiskan seluruh gaji bulanan dan menghabiskan lebih dari sebulan untuk perakitan dan debugging. " Dia: "Kalian adalah kambing dan pembohong, buktikan!" Saya harus bekerja.

Jadi, bahan sumbernya:

  1. Pil biru: STM32F103C8T6 - 20K ram 64K flash $ 2,06
  2. Layar Arduino: ILI9341 2.8 "320x240 dengan layar sentuh dan slot kartu $ 7,72
  3. Tweeter $ 0,18
  4. Beberapa tombol (7 buah) $ 0,2
  5. Beberapa kabel $ 0,1
  6. Kartu flash untuk 64 mega (dari kamera kuno), tidak termasuk dalam perhitungan
  7. Programmer ST-LINK tidak dikonsumsi dan tidak termasuk dalam perhitungan, namun, itu juga menelan biaya beberapa dolar
  8. Satu bungkus rokok - dikonsumsi terlalu cepat dan setiap hari - $ 8,37



"Pil biru" yang luar biasa yang dibuat di China baik untuk semua orang, kecuali untuk jumlah RAM, hanya 20K (walaupun ada juga konstanta yang kecil, hanya 64K). Spectrum-48K membutuhkan 48K (kebetulan? Saya tidak berpikir) tentang RAM dan 16K yang konstan. Kami akan mengambil RAM dari layar, karena resolusi spessi adalah 256x192 + perbatasan, sementara ILI9341 memiliki 320x240 dengan 18 bit per titik. Artinya, Anda dapat menggunakan bagian tengah layar untuk rendering, dan yang lainnya untuk "area swap" yang sebenarnya (area swap?). Selain itu, paling sering (algoritma LRU) yang digunakan oleh prosesor emulator memori Z80 di-cache dalam RAM STM32, sisanya disimpan dalam memori layar ILI9341, dengan akses lambat (SPI).

Sekitar 25 tahun yang lalu, saya menulis emulator Z80 pada platform 80286, mereka bukan kerabat yang sangat jauh dengan Z80, keduanya berasal dari 8080, yang memungkinkan saya untuk mendapatkan kode yang sangat cepat menggunakan Borland TACM dan C ++ yang indah, tetapi kemudian tidak perlu lagi untuk emulasi terperinci seperti itu ( kode ini ditulis untuk kedua sisi: notebook dengan kamus dan emulatornya di bawah windows 3.1 untuk debugging).

Itu terlalu malas untuk menulis dari awal untuk lengan, jadi saya bertanya kepada Google: "Katakan padaku Google, bagaimana dengan emulasi Z80 yang rapi hari ini?" Google memberi saya beberapa ribu dua proyek yang sesuai: Berdasarkan STM32F4, penulis Gorien dan Fuse-emulator yang paling canggih dan didebug . Pada pertemuan pertama kode dari Gorien, ternyata sekitar 100K kode yang dapat dieksekusi, yang jelas lebih tersedia pada subjek. Saya harus mengotak-atik sedikit dengan mendorong gajah ke kulkas . Misalnya, panggilan ke variabel lokal dikompilasi menjadi kode yang lebih kompak daripada yang global, semua perintah diperpanjang dari register IX dan IY adalah sama, akurat untuk penggantian variabel, tabel generator karakter dapat diganti dengan tautan ke generator karakter Spectrum, dll. Itu juga diperlukan overclocking prosesor ke 112 MHz ( terima kasih kepada xedas untuk idenya ).

Hasil: sebuah pengerjaan (saya mencoba sekitar selusin game saat semua orang sedang bekerja) ZX spectrum-48 emulator dengan layar seukuran sebungkus rokok (sudah masuk ke saku Anda, tetapi kabelnya mencuat), membaca dump (ikon + memori gambar + register ~ 50K) game dengan format kartu flash FAT32 (beberapa kilobyte kode) dan dengan konsumsi total ~ 50mA (yaitu, sekitar 50 jam dari baterai 18650 khas 2500 mAh!), waktu pengaktifan kurang dari satu detik dan total biaya sekitar kurang dari $ 10.

Kekurangan:

  1. Masih sedikit lebih lambat dari aslinya.
  2. Layar memperlihatkan kode program yang diunduh, berwarna.
  3. Anda membutuhkan joystick, atau tombol yang lebih lembut. Dan biayanya. Dan sebuah kotak. Dan lengan lurus. Dan ...


Dalam perkiraan rencana: mengurangi konsumsi (cabut LED dari papan), tambahkan modulasi kecerahan layar, mode jam dengan layar mati, solder keyboard normal dengan joystick, sesuaikan penundaan untuk suara yang benar dan membaca dari tape recorder (dan apa?), Format file PC converter kesedihan, peras beberapa kode lagi untuk meng-host antarmuka pengguna. Cobalah untuk mengurangi biaya platform menggunakan layar 2,4 inci. Memang benar, yah, sangat kecil, tapi untuk 5 ... Jelas bahwa di sini bunga murni olahraga, meskipun jika Anda memperhitungkan kecepatan membongkar elektronik apa pun menjadi bagian yang tidak dapat digunakan oleh cucu, harganya tetap penting.

Sebenarnya kode kerja saat ini di Github

Dan lebih banyak gambar untuk penggemar, game tipe R, area swap di sekitar tepi layar utama:



Sisi lain:



Game Atic-Atac:



PS: Saya tidak memenuhi harga sebungkus rokok, jadi "kodok" saya harus menanggung kebiasaan buruk saya, tetapi saya sudah berusia 55 tahun, jadi saya sudah menghabiskan sebagian besar dari itu ... Untuk dilanjutkan.
Video, tidak ada suara, maaf:

Source: https://habr.com/ru/post/id412325/


All Articles