- 30 yıllık Lotus’un Unix sürümünü Linux’a taşıma sürecinin özeti
Arka plan
- Lotus hayranı olduğu için mevcut DOS sürümünü tersine mühendislikle inceleyip DosEmu için bir ekran sürücüsü yaparak çalıştırmış
- Ancak eski Lotus Add-in’leri mümkün değildi
Özel bir dil olan LPL ile geliştirilmişlerdi ve derleyici/SDK yoktu
→ O dönemde 395 dolar gibi yüksek fiyatlı ücretli bir üründü ve buna sahip birini bulamamış
- Sonra 90’larda BBS işleten bir SYSOP aracılığıyla, teyp yedeğinden SDK’nin warez kopyasını elde etmiş
→ Lotus 1-2-3 için ADK (Add-in Development Kit)
- O BBS’de Lotus 1-2-3 for Unix’in de warez sürümü varmış
→ SCO Professional gibi ünlü Unix ofis rakibi nedeniyle pek satmayan ve unutulan bir ürün
Unix için Lotus 1-2-3
- 80’lerde kullanılan TD0 adlı sıkıştırılmış disk imajı formatından oluşuyormuş
samdisk ile raw disk imajına dönüştürmüş
- Disk içeriğinde 1-2-3’ün sembollerini içeren object dosyaları bulunduğunu fark etmiş
→ 90’ların başında dlopen() yaygın kullanılmadığı için buna ihtiyaç duyulduğu belirtiliyor
Hackleme
- Bu object dosyaları sayesinde Lotus 1-2-3’ün iç yapısı hakkında sahip olduğu birçok soru yanıt bulmuş
- Geliştirdiği sürücü daha fazla iş yapabilir hale gelmiş
GNU objcopy
- Bu object dosyaları derlendiğinde Linux’un ilk sürümü henüz yayımlanmamıştı
- Buna rağmen
objcopy ile COFF object dosyaları ELF’e dönüştürülebiliyor
Taşıma sorunları
Sistem çağrıları
- İlk sorun, Linux ile UNIX’in aynı sistem çağrısı arayüzüne sahip olmamasıydı
- UNIX
lcall7 arayüzünü kullandığı için open() çağrısını bulup bunu glibc üzerinden çağırmaya karar vermiş
→ Bu sembolü undefined yaparsak bağlayıcı bunu kendisi çözmez mi?
→ Ama objcopy böyle çalışmadığından, sonunda bunu zorla silen coffsyrup adlı bir araç yazmış
- Uyumsuz bazı işlevleri
objcopy + coffsyrup ile tamamen değiştirmiş
→ stat(), times(), uname(), fcntl(), ioctl()
Lisanslama
- Elbette bu yazılım lisans olmadan çalışmıyor
- Kendisi Lotus 1-2-3 kutusunun yasal sahibi ve bu yazılım da 32 yıllık abandonware olduğundan,
muhtemelen geliştirici Mitch Kapor’un bu lisans kontrolünün atlatılmasına itiraz etmeyeceğini düşünüyor
→ (Mitch Kapor, Lotus’u geliştirmesiyle tanınır ve EFF’in de kurucu ortaklarındandır.)
lic_init() işlevinde LICENSE.000 dosyasında tarih ile kullanıcı/sistem adı varsa çalıştığı için bunu uygun şekilde ayarlayıp geçmiş
Sonuç
- Sonuç olarak Lotus 1-2-3 yeni bir işletim sistemi olan Linux’a taşınmış oldu
- Hâlâ bazı pürüzler var ama %100 kullanılabilir
4 yorum
Aman Tanrım... bu da ne böyle.. vay canına
Meraklısının iyisi yabancı meraklı olur derler ya... gerçekten de öyleymiş..
Vay be... gerçekten müthiş bir tutku. Ben Lotus'u o kadar çok kullanmadım, daha çok Multiplan kullandım.
https://en.wikipedia.org/wiki/Multiplan
Multiplan'ın Korece sürümü de çıkmıştı; o dönemde Koreceyi düzgün destekleyen tek ürün buydu.
1994'te üretimi durdurulmuş olsa da, Kore'de hâlâ şirketlerde kullanan çok yer vardı; sanırım 1997 civarına kadar kullanıldı.
Multiplan'ın sonu - DOS döneminin sonu
https://www.hellomarket.com/item/162929337
Açılmamış Korece Multiplan paketini satan bir ilan buldum.. Vay be..