- Merangkum proses mem-port versi Unix dari Lotus yang berusia 30 tahun ke Linux
Latar belakang
- Sebagai penggemar Lotus, penulis melakukan reverse engineering pada versi DOS yang sudah ada, lalu membuat display driver untuk DosEmu agar bisa dijalankan
- Namun add-in Lotus lama tidak bisa digunakan
- Add-in tersebut dikembangkan dengan bahasa khusus bernama LPL, dan compiler/SDK-nya tidak tersedia
→ Pada masa itu ini adalah produk berbayar seharga $395, dan tidak ada orang yang berhasil ditemukan memilikinya
- Lalu, melalui seorang SYSOP yang dulu menjalankan BBS pada era 90-an, penulis memperoleh salinan warez SDK dari tape backup
→ ADK(Add-in Development Kit) for Lotus 1-2-3
- Di BBS itu juga ada versi warez dari Lotus 1-2-3 for Unix
→ Produk yang terlupakan karena tidak banyak terjual akibat adanya pesaing office Unix terkenal, SCO Professional
Lotus 1-2-3 for Unix
- Terdiri dari format image disk terkompresi bernama TD0 yang digunakan pada era 80-an
- Dikonversi menjadi raw disk image dengan
samdisk
- Dari isi disk ditemukan object file yang menyertakan simbol milik 1-2-3
→ Pada awal 90-an dlopen() belum banyak digunakan, jadi hal semacam ini diperlukan
Hacking
- Berkat object file ini, banyak pertanyaan yang selama ini dimiliki tentang struktur internal Lotus 1-2-3 akhirnya terjawab
- Driver yang sedang dibuat pun jadi bisa melakukan lebih banyak hal
GNU objcopy
- Saat object file ini dikompilasi, versi pertama Linux bahkan belum dirilis
- Namun dengan
objcopy, object file COFF bisa dikonversi menjadi ELF
Masalah porting
System Calls
- Masalah pertama adalah Linux dan UNIX tidak memiliki antarmuka system call yang sama
- UNIX menggunakan antarmuka
lcall7, sehingga diputuskan untuk mencari open() lalu memanggilnya melalui glibc
→ Kalau simbol ini diubah menjadi undefined, apakah linker akan menanganinya sendiri?
→ Namun objcopy tidak bekerja seperti itu, jadi pada akhirnya dibuat alat bernama coffsyrup untuk menghapusnya secara paksa
- Beberapa fungsi yang tidak kompatibel juga semuanya diubah dengan
objcopy + coffsyrup
→ stat(), times(), uname(), fcntl(), ioctl()
Lisensi
- Tentu saja software ini tidak akan berjalan tanpa lisensi
- Karena penulis adalah pemilik resmi yang juga memiliki boks Lotus 1-2-3, dan ini juga merupakan abandonware berusia 32 tahun,
ia merasa mungkin pengembangnya, Mitch Kapor, juga tidak akan mempermasalahkan jika pemeriksaan lisensi ini dilewati
→ (Mitch Kapor terkenal sebagai pengembang Lotus dan juga salah satu pendiri EFF.)
- Di fungsi
lic_init(), program akan berjalan jika file LICENSE.000 berisi tanggal serta nama pengguna/sistem, jadi hal itu disesuaikan untuk melewatinya!
Hasil
- Hasilnya, Lotus 1-2-3 berhasil di-port ke OS baru, yaitu Linux
- Masih ada bagian yang kusut, tetapi sudah 100% bisa digunakan
4 komentar
Ya ampun... ini apaan.. ngeri banget
Katanya, penggemar paling sejati itu justru para penggemar dari Barat... ternyata memang benar ya...
Wah.. semangat yang benar-benar luar biasa. Saya memang tidak terlalu banyak memakai Lotus, dan lebih sering menggunakan Multiplan
https://en.wikipedia.org/wiki/Multiplan
Multiplan juga sempat merilis versi berbahasa Korea, jadi pada masa itu produk ini adalah satu-satunya yang mendukung bahasa Korea dengan baik.
Meski dihentikan pada tahun 1994, di Korea masih banyak perusahaan yang memakainya, jadi sepertinya masih digunakan sampai sekitar tahun 1997.
Penghentian Multiplan - akhir era DOS
https://www.hellomarket.com/item/162929337
Saya menemukan postingan yang menjual paket Multiplan bahasa Korea yang masih tersegel.. Wah..