- ChipWits, salah satu game awal Macintosh tahun 1984, merayakan ulang tahun ke-40 dengan merilis kode sumber FORTH asli untuk Mac dan Commodore 64 sebagai open source
- Tujuan rilis ini adalah melestarikan warisan game tersebut dan membagikan bagaimana pengembangan lintas platform dilakukan pada mikrokomputer 8-bit tahun 1984
- Data dipulihkan dari disk berusia 40 tahun yang disimpan Doug Sharp; meski ada beberapa sektor rusak, sebagian besar disk berhasil dibaca dengan normal
- Seluruh source versi Mac berjumlah sekitar 3.000 baris FORTH, sementara port modernnya mencapai 35.000 baris C#, menunjukkan kepadatan kode dan keterbatasan pada masa itu
- Proyek ini merilis image disk asli dan kode yang diekstrak di GitHub, serta ingin bekerja bersama komunitas untuk mengidentifikasi source terbaru, menulis cara build, dan mengekstrak sprite
Kode asli ChipWits dirilis
- Untuk memperingati ulang tahun ke-40 ChipWits, kode sumber FORTH asli untuk Mac dan Commodore 64 dirilis sebagai open source
- Kode asli yang dipulihkan dan image disk disusun di chipwits/chipwits-forth
- Tujuan rilis ini adalah melestarikan warisan ChipWits dan membagikan pengalaman pengembangan lintas platform untuk mikrokomputer 8-bit pada 1984
- Orang-orang yang akrab dengan sistem asli dapat ikut menelusuri dan merapikan source; proyek ini meminta kolaborasi melalui ChipWits Discord Server
Alasan memilih FORTH pada 1984
- ChipWits adalah salah satu game awal yang dirilis untuk Macintosh pada 1984
- Ko-kreator Doug Sharp dan Mike Johnston merancang game orisinal pertama mereka, ChipWits, sambil mem-porting game edukasi di antara mikrokomputer 8-bit
- Game ini adalah game pemrograman robot yang dipengaruhi game pemrograman pada masa itu seperti Rocky’s Boots dan Logo
- Lingkungan pengembangan Mac pada 1984 terbatas, dan cara utama untuk mengembangkan adalah membeli Apple Lisa
- Harga asli Apple Lisa adalah $9.995, setara $30.373 dalam nilai saat ini
- Karena biaya itu sulit ditanggung studio game indie, Doug dan Mike mengembangkan dengan MacForth Plus yang berjalan langsung di Mac
- Saat itu ada berbagai varian FORTH untuk beberapa mikrokomputer 8-bit, sehingga pilihan bahasa ini cocok dengan rencana porting berikutnya
- Pengembangan dimulai pada April 1984, dan dibutuhkan sekitar 7 bulan hingga versi pertama selesai dikembangkan dan diterbitkan, tepat untuk musim Natal
Porting ke Commodore 64 dan Apple II
- Epyx direncanakan menjadi penerbit ChipWits, dan Commodore 64 adalah pasar terbesar
- Epyx tidak memiliki game Mac, sementara Brainworks menargetkan pasar pendidikan yang saat itu kuat dikuasai Apple, sehingga Epyx hanya menerbitkan versi Commodore 64
- Port C64 selesai pada 1985 dan ditulis dengan Super Forth 64
- Porting ke Commodore 64 menantang karena harus mempertahankan desain UI keseluruhan yang sama seperti Mac
- Mereka harus mengembangkan sistem menu pull-down yang beroperasi dengan joystick, bukan mouse
- Menambahkan grafis berwarna dan suara chip SID
- Harus memasukkan semuanya ke disk 165KB, bukan disk Mac 400KB
- Harus menggunakan RAM 64KB dan prosesor yang lebih lambat, bukan RAM 128KB milik Mac
- Setelah versi Commodore 64 sukses, versi Apple II juga dibuat, dan juga ditulis dengan varian FORTH
Penilaian setelah rilis dan menjalankan versi asli
- Setelah dirilis, ChipWits menerima berbagai ulasan dan penghargaan
- MacUser Editor’s Choice 1986 Award menilai ChipWits sebagai “pengantar konsep pemrograman yang paling menyenangkan”, serta memuji bahasa berbasis ikon dan desain edukatifnya
- Macazine memperkirakan ChipWits akan menjadi karya cult favorite di kalangan pengguna Macintosh dan anak-anak
- MacWorld menilai bahwa jika Anda menyukai pemrograman, Anda akan menyukai ChipWits
- Creative Computing meninggalkan ulasan yang menggambarkan adegan memaki robot kartun pada pukul 4.30 pagi
- Pada 2008, Maclife.com memilih ChipWits sebagai salah satu Top 10 Apple II / Mac Games sepanjang masa
- Versi asli disiapkan agar dapat berjalan di emulator browser melalui proyek open source Emularity dan Apple2js
Memulihkan disk berusia 40 tahun
- Saat mengerjakan versi baru ChipWits, Doug Sharp menemukan disk asli yang ia simpan
- Disket 3,5 inci dan floppy disk 5,25 inci telah disimpan di rumah selama 40 tahun, tetapi sebagian besar disk dapat dibaca tanpa sektor rusak
- Untuk pemulihan disk Commodore 64 digunakan 1541 Commodore 64 Disk Drive yang dibeli di eBay
- Data dibaca di PC modern melalui adaptor USB XoomFloppy
- Disket Mac 3,5 inci tidak dapat dibaca dengan cara standar drive modern karena susunan sektor khas Mac
- Mac menggunakan layout sektor khusus untuk meningkatkan kapasitas disk hingga 800KB
- PowerMac G3 WallStreet memiliki drive 3,5 inci dan stack jaringan sehingga dipakai sebagai sistem jembatan, tetapi dukungan 400KB dinonaktifkan di MacOS yang lebih baru, sehingga hanya disk 800KB yang dapat dibaca
- Kemudian, atas saran seorang penggemar, mereka menggunakan GreaseWeazle, controller hardware kustom untuk mengendalikan USB disk drive, dan metode ini berjalan dengan baik
- Semua disk dibuat menjadi image per blok lalu disusun di repositori GitHub
- Nama file menggunakan label disk
- Jika terdeteksi sektor rusak, awalan
badditambahkan ke nama file - Agar mudah dibaca di komputer modern, blok diekstrak dengan skrip Python dan diformat ulang menjadi file ASCII UTF-8
- PETSCII, encoding karakter khas Commodore 64, dikonversi ke ASCII
Cara pengembangan yang terlihat dari source FORTH
- Seluruh image disk dan kode asli dapat dilihat di chipwits/chipwits-forth
- Seluruh source ChipWits untuk Mac berjumlah sekitar 3.000 baris FORTH
- Port modernnya sudah mencapai 35.000 baris C#, sehingga kepadatan kode FORTH asli terlihat menonjol
- Tulisan terpisah Forth Code for Electrocrabs in 1984 ChipWits Deciphered menganalisis satu “screen” kode FORTH yang mengendalikan electrocrabs
- FORTH adalah bahasa berbasis stack dan mirip dengan Reverse Polish Notation
- Alih-alih
1 + 1, bentuknya ditulis1 1 + - Alih-alih
if random(3) == 1, bentuk yang digunakan adalah3 irnd 1 = if
- Alih-alih
Implementasi game 1984 dilihat dari contoh kode
- Kode pergerakan robot pada versi Mac tidak memisahkan loop rendering per frame seperti pengembangan game modern
- Logika game dan rendering grafis tercampur di dalam kode imperatif
- Animasi diimplementasikan dengan merender piksel secara langsung di dalam loop
- Perpindahan ke tile lantai kosong, menabrak dinding, atau menyentuh bom ditangani dengan beberapa kata kode saja
- Definisi
?boombahkan menentukan apakah game berakhir saat menyentuh bom - Bergantung pada posisi robot, 0 ditambahkan ke skor untuk memaksa tampilan skor digambar ulang, karena mungkin terhapus saat robot lewat
- Definisi sprite pada versi Commodore 64 menunjukkan bagaimana kode dan data aset tercampur
- Source FORTH tidak disimpan sebagai file, melainkan dalam unit screen bernomor, lalu dimuat sesuai urutan yang diperlukan
- Sprite hitam-putih C64 berukuran 24×21 piksel, dan hanya 8 sprite yang dapat digunakan di satu layar
- Jika memilih sprite 4 warna, resolusinya turun menjadi 12×21 dan pikselnya menjadi dua kali lebih lebar
- Karakter ChipWit dirender dengan menumpuk beberapa sprite, mirip animasi sel dalam kartun vintage
- Pilihan ini menggunakan banyak sprite yang tersedia untuk ChipWit, tetapi memungkinkan gambar lebih tajam dan animasi per bagian
- Tabel skor item pada versi Mac dipadatkan agar muat dalam satu screen
- Notasi seperti
( 110584 dws)adalah stempel tanggal screen;110584berarti 5 November 1984, dandwsberarti Douglass Walter Sharp - Screen tersebut tampaknya merupakan salah satu screen terakhir yang diubah sebelum rilis final; screen terakhir yang berubah bertanggal 8 November
d,didefinisikan untuk menyimpan nilai setelah dikalikan 10, sehingga 150 poin dapat ditulis seperti15 d- Metode ini membantu menjaga perataan tabel sambil membuatnya muat dalam satu screen, dan kemungkinan memudahkan penyesuaian nilai skor keseluruhan saat balancing sebelum rilis
- Notasi seperti
Reboot dan kerja komunitas
- Selain merilis versi FORTH asli, tim juga sedang mengerjakan ChipWits yang dimodernisasi
- Versi reboot berupaya mempertahankan keseruan dan ketelitian ilmu komputer dari karya asli, sekaligus meningkatkan berbagai aspek dari kurva belajar hingga leaderboard global kompetitif
- Dengan menambahkan ChipWits ke wishlist di Steam, Anda dapat menerima notifikasi saat versi final dirilis
- Sasaran langsung dari issue GitHub saat ini terkait kode FORTH asli adalah sebagai berikut
- Memastikan semua source code terkait telah diekstrak dari raw disk image
- Memperbaiki masalah perataan di sebagian file source
- Sebagian lebarnya 40 karakter, sebagian 64 karakter
- Menentukan disk mana yang berisi source code paling baru
- Menulis cara build dari source di Mac dan C64
- Mengekstrak raw sprite dan gambar dari disk lalu mengonversinya menjadi file
.png
- Tujuan akhirnya adalah ChipWits versi FORTH yang dipelihara komunitas untuk PC modern
1 komentar
Komentar Hacker News
Ada tulisan yang menjelaskan alasan ChipWits dibuat dengan FORTH pada 1984
https://chipwits.com/2023/04/08/forth-programming-language-g...
Terima kasih sudah membuat game yang saya sukai, saya juga sudah mengunduh demo barunya dan menambahkannya ke wishlist Steam saya
Forth adalah bahasa yang sudah beberapa tahun ingin saya pelajari
Di komputer lama, pilihannya adalah memakai bahasa assembly jika ingin program cepat, atau BASIC jika tidak masalah lambat, dan menarik bahwa Forth terlihat cukup tingkat tinggi tetapi tetap seperti bahasa dengan “kecepatan menengah”
Ini adalah bahasa berbasis stack
https://www.forth.com/starting-forth/
Cukup colokkan kabel USB ke komputer dan buka program terminal, lalu Anda bisa langsung mulai, jadi sangat cocok untuk benar-benar tenggelam dalam bahasanya
Namun, produk yang dikirim dari Australia bisa memerlukan waktu beberapa bulan untuk tiba, jadi sebaiknya cari pemasok yang lebih dekat terlebih dahulu
Cara bagus lainnya adalah belajar seperti pada 1984. Jalankan emulator seperti Commodore 64 atau Apple ][ di komputer modern, lalu pasang lingkungan pengembangan Forth di dalamnya
Dokumentasi pada masa itu ditulis untuk pemula total, jadi sangat mudah diikuti, dan ada banyak PDF hasil pemindaian gratis di internet
Ini mudah dan menyenangkan, tetapi sampai titik tertentu terlalu tidak masuk akal mudahnya, sehingga bagi sebagian orang bisa terasa terlalu dasar, atau godaan untuk melampaui implementasi mainan menjadi sangat besar
Anda harus mengelola stack secara langsung, jadi cukup merepotkan, dan membuat FORTH sendiri itu menyenangkan. Tidak harus dibuat dengan bahasa assembly; saya juga pernah membuat bahasa skrip mirip Forth dengan C++
BASIC cocok untuk itu karena berarti “Beginner's All-purpose Symbolic Instruction Code”
Amstrad CPC 6128 juga menyediakan implementasi Logo, dialek Lisp untuk pendidikan, dalam disk terpisah, dan linked list di dalamnya benar-benar mengejutkan saya saat kecil
Pada masa itu, “open source” belum menjadi konsep umum, dan compiler serta interpreter untuk berbagai bahasa adalah alat komersial yang bersifat profesional
[1] https://en.wikipedia.org/wiki/Amstrad_CPC#Other_languages
[2] https://en.wikipedia.org/wiki/An_Open_Letter_to_Hobbyists
Kelihatan sangat keren
Terkait itu, ada juga http://tumbleforth.hardcoded.net/, dan menurut saya tampilannya cukup bagus. Kalau ada yang pernah menamatkannya, saya penasaran seperti apa pengalamannya
Itu membuat saya memikirkan komputasi dengan cara yang berbeda
Saya masih muda dan masih kurang pengalaman, tetapi kalau melihat ke belakang, dulu abstraksi tertentu dipilih karena keterbatasan perangkat keras, dan pada “cabang evolusi” bahasa pemrograman saat ini tampaknya menumpuk banyak abstraksi yang tidak menua dengan baik, sehingga ada banyak lapisan barang campuran yang menopang bebannya. Mirip dengan proyek rekayasa lainnya
Collapse OS mungkin tidak praktis untuk masa kini, tetapi ada rasa kebebasan saat melepaskan diri dari berbagai lapisan abstraksi. Rasanya seperti cara menikmati komputasi ala 1960-an tanpa pengalaman pengembang yang mengerikan
Proyek muluk saya saat ini adalah mengikuti hal-hal seperti ini, membangun Dusk OS di mesin virtual, lalu memindahkannya ke mesin fisik, kemudian menulis interpreter Scheme untuk Dusk OS dalam C dan setelah itu mengembangkannya sebebas mungkin
Masih ada beberapa rintangan besar yang harus dilewati sebelum sampai ke sana. Saya membuat interpreter Scheme dalam Python hanya dalam beberapa jam, lalu menghabiskan beberapa jam lagi untuk memperbaiki scanner/tokenizer. Sekarang saya sedang membaca Crafting Interpreters untuk melihat bagaimana seharusnya mengimplementasikan interpreter Scheme dalam C. Setelah interpreter C itu jadi, saya berencana melihat lagi panduan ini dan terjun langsung ke DuskOS
Saya sudah suka dengan gaya bahasa penulisnya
Contohnya:
Konsistensi dan hasil kerjanya yang luar biasa sangat mengesankan. Saya tidak sepenuhnya setuju dengan filosofi Collapse, tetapi mailing list DuskOS punya tingkat lalu lintas yang pas untuk sekadar diikuti diam-diam
Setelah melihat karya Virgil, saya sempat mencoba Forth sedikit, dan tahun lalu saya menghabiskan waktu untuk melakukan dekompilasi balik SmithForth[1] secara manual
Mengejutkan betapa sedikit assembly yang dibutuhkan untuk melakukan bootstrap sebuah bahasa. Jadi sangat masuk akal bahwa Forth bisa menyediakan REPL di lingkungan embedded, dan itu tampak jauh lebih menyenangkan daripada siklus pengembangan umum yang sering kita dengar
[0]:https://duskos.org/
[1]:https://dacvs.neocities.org/SF/
Setelah itu saya membaca halaman Wikipedia dan tulisan blog tentang ChipWits, dan game aslinya terlihat sangat keren. Logo di manual Wikipedia-nya juga sangat bagus
Belakangan saya sedang membuat daftar game lama/baru yang punya elemen puzzle dan pemrograman, dan saya akan memasukkan ini ke sana. Bahkan mungkin saya akan langsung mencobanya setelah menamatkan “game” assembly ketman. Sebenarnya itu agak sulit disebut game
Semoga ChipWits yang baru sukses besar
ValForth buatan Valpar adalah salah satu implementasi FORTH lintas platform awal di ekosistem Atari ST, dan juga memiliki ekstensi cerdas untuk game
https://www.atarimagazines.com/rom/issue1/jumping_forth.php
Seperti disebut dalam artikelnya, di 8-bit juga ada FORTH dari Elcomp, dan ada juga buku seperti https://www.atarimania.com/documents/FORTH-on-the-Atari-Lear.... “Starting FORTH” karya Leo Brodie masih merupakan buku pengantar yang sangat baik hingga sekarang
Semua orang memang belajar BASIC, tetapi bahasa-bahasa alternatif seperti ini menunjukkan bahwa benar-benar ada metafora yang sepenuhnya berbeda untuk memprogram perangkat
Bagi anak-anak era 80-an, itu benar-benar membuka wawasan
Forth tampak seperti salah satu bahasa yang sulit dibaca setelah sekali ditulis, mirip Perl
Menulis dan membuatnya mudah, tetapi kalau kembali ke kodenya sekitar setahun kemudian rasanya tidak akan tahu itu melakukan apa
Meski begitu, bahasa ini benar-benar cepat dan efisien
Saya baru saja membuka secara acak sebuah program Perl yang cukup besar dan tidak saya sentuh selama lebih dari 3 tahun, lalu menelusuri source-nya, dan sama sekali tidak kesulitan memahami apa yang dilakukannya
Saya tidak merasa kode Perl lebih sulit dibaca ulang dibanding kebanyakan bahasa pemrograman lain. Kesulitannya terutama bergantung pada seberapa mahir pengembang terhadap bahasa tersebut, dan sudah berapa lama sejak terakhir kali menulis kode dengan bahasa itu
Kalau kemampuan bahasanya sudah banyak berkarat, atau dari awal memang belum terlalu mahir, maka dalam bahasa apa pun akan sulit melihat kembali kode lama
Tentu akan lebih sulit kalau itu bukan kode sendiri, dan seberapa baik kodenya ditulis juga sangat berpengaruh. Di bahasa apa pun ada banyak kode sampah, dan kalau dari awal memang sampah, seiring waktu juga tidak akan menjadi lebih baik
Forth sulit ditulis, tetapi mudah dibaca
Dulu waktu kecil saya sering memainkannya di Commodore 64
Itu game yang unik, menarik, dan menyenangkan
Saya tidak ingin spam di Hacker News, tetapi kalau Anda pernah memainkan versi aslinya, saya benar-benar ingin mendengar tanggapan Anda tentang reboot ini: https://chipwits.com
Waktu kecil saya benar-benar sangat ingin memiliki game ini
Rasanya saya memang sudah tua sekali
Saya penasaran modern ChipWits ditulis dengan apa
Saya sangat menyukai game ini. Saya juga punya paket Forth untuk C64, tetapi tidak pernah terpikir untuk menghubungkan bahwa game ini dibuat dengannya
Saya membeli Human Resource Machine dan sebagian besar menikmatinya. Sampai sebelum menjadi terlalu sulit
Ini tampak seperti konsep yang sama dengan ChipWits, yaitu membuat pemrograman berbasis stack menjadi sebuah game
Kalau ada yang pernah memainkan keduanya, saya penasaran bagaimana perbandingannya