12 poin oleh xguru 2022-05-25 | 4 komentar | Bagikan ke WhatsApp
  • 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

 
nuthatch 2022-05-25

Ya ampun... ini apaan.. ngeri banget

 
jjpark78 2022-05-25

Katanya, penggemar paling sejati itu justru para penggemar dari Barat... ternyata memang benar ya...

 
xguru 2022-05-25

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

 
xguru 2022-05-25

https://www.hellomarket.com/item/162929337

Saya menemukan postingan yang menjual paket Multiplan bahasa Korea yang masih tersegel.. Wah..