[ Megoldva ] Látható fájl nem látható - strace alapok : Aircomp 16 emulátor

Fórumok

Szeretném debian alatt futtatni a HoLaLi 2.0 emulátort. (A link a http://gaia.atilia.eu/downloads/ oldalon található. )

SDL lib kell hozzá - legyen az bármi is - de nálam a libsdl2 csomag telepítve van.

A letöltött gz fájlt kicsomagolom, és futtatási jogot adok neki, majd elindítanám a ".holali" paranccsal, de azt mondja:

cannot execute: required file not found

Megpróbáltam a strace segítségével megtalálni, mit nem talál.

A "strace ./holali" és a "strace -e open ./holali" kimenete is a következő:

execve("./holali", ["./holali"], 0x7ffd0b85c9f0 /* 58 vars */) = -1 ENOENT (Nincs ilyen fájl vagy könyvtár)
strace: exec: Nincs ilyen fájl vagy könyvtár
+++ exited with 1 +++

Tudnátok segíteni abban, hogy mit nem talál? Hogyan indíthatnám el a fenti emulátort?

Feladtam.

De mivel a cél az Aircomp 16 emulátor futtatása volt linux alól, a MAME végül megoldotta a problémámat.

Megoldás:

Az "ldd holali" parancs megmutatja a hiányzó csomagokat, majd

dpkg --add-architecture i386
apt-get update
apt-get libsdl1.2debian:i386 libncurses5:i386 libaudio2:i386

Sajnos az emulátor ugyan már elindul, de "Invalid pointer" hibaüzenettel kiszáll.

Alternatíva:

A cél az Aircomp 16 emulátor futtatása lett volna linux alól, így egy alternatíva a MAME emulátor. Sajnos ez a grafikát nem emulálja.

A windows alapú emulátorok wine alól futtava összeomlanak az Aircomp 16 demo grafikus programjával.

Így egyelőre nem ismerek alternatívát. Jó lenne hozzáférni a holali forrásához, de valami miatt ez nem publikus ...

Hozzászólások

Szerkesztve: 2023. 08. 05., szo – 13:12

Nekem elindult Fedorán, de részben régi vackok kellenek hozzá:

sdl12-compat.i686
nas-libs.i686
ncurses-compat-libs.i686
slang.i686

Ezeket kellett feltennem, hogy elinduljon. Hibaüzenetből látszott, hogy mit hiányol.

Szerk.: ja, és nekem egy 32 bites nyomtatódriver miatt fenn van a 32 bites glibc is, és biztos, hogy 32 bitre van fordítva, mert a fenti csomagokból is mind a 32 biteset tette fel a Fedora hozzá.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Szerkesztve: 2023. 08. 05., szo – 13:26

Nezd meg ld-vel hogy milyen *.so-k kellenek neki: `ld ./holali`. Illetve ez egy nagyon 32 bites ELF, szoval az osszes fuggosege (*.so) is 32 bites kell legyen (ld. amit locsemege is irt fentebb). Ez mondjuk kiscit ellentmond az `strace` kimenetenek, mert ott meg 64 bites szimbolumokra hivatkozik (lasd: 0x7ffd0b85c9f0). Szoval vsz trace-elni is egy 32 bites `strace`-szel kellene. 

Szerk: az ilyen nagyon 32 bites programok eseten 64 bites rendszer alol futtatva ket dolog szokott tortenni: vagy eleg neki a 32bites libc, es azt feltelepitve (azaz a libc6-i386 nevu, de amd64 architekturaju csomagot feltelepiteve) menni fog. Vagy kell meg neki mas is, es akkor multiarch-ot engedelyezve fel tudod telepiteni a szukseges csomagokat. Pl ha ennek a ./holali-nak kell a libwhatever3.so 32 bites valtozata, akkor az `apt-get install libwhatever3:i386` varazslassal fel tudod ezt is tenni. 

Akkor szokott ilyet füllenteni, ha az interpretert nem találja, esetünkben a /lib/ld-linux.so.2 -t.

Szerkesztve: 2023. 08. 05., szo – 21:45

$ file holali
holali: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.2.0, not stripped
 

ez 32bites progi. tedd fel a szukseges debian csomagokat hogy meglegyenek a libek, es el fog indulni:

$ ldd holali
        linux-gate.so.1 =>  (0xf76e4000)
        libSDL-1.2.so.0 => not found
        libdl.so.2 => /lib32/libdl.so.2 (0xf76d1000)
        libaudio.so.2 => not found
        libXt.so.6 => not found
        libXext.so.6 => not found
        libncurses.so.5 => not found
        libslang.so.2 => not found
        libX11.so.6 => not found
        libpthread.so.0 => /lib32/libpthread.so.0 (0xf76b3000)
        libstdc++.so.6 => not found
        libm.so.6 => /lib32/libm.so.6 (0xf765d000)
        libgcc_s.so.1 => not found
        libc.so.6 => /lib32/libc.so.6 (0xf74a9000)
        /lib/ld-linux.so.2 (0xf76e5000)
 

olvasnivalo: https://wiki.debian.org/Multiarch

A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!

Köszönöm, ez érdemi segítség!

A "not found" arra utal a sor végén, hogy azok hiányoznak?

Nálam például a libsdl 1.2 fel van telepítve, mégis "not found" jelenik meg mellette. Az ncurses 5 csomagot feltelepítettem, de továbbra is "not found".

4 csomagot jelez hiányzónak:

       libSDL-1.2.so.0 => not found
       libaudio.so.2 => not found
       libXt.so.6 => not found
       libncurses.so.5 => not found

Elvileg mind a 4 telepítve van.

https://packages.ubuntu.com/ es https://packages.debian.org/ oldalakon van csomag tartalmaban kereso: ha csak a fajlnevet (vagy egy reszet tudod), akkor kikopi melyik csomag tartalmazza azt a fajlt. a dpkg-L csak a mar feltelepitett csomagokra jo.

A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!

Nálam például a libsdl 1.2 fel van telepítve, mégis "not found" jelenik meg mellette.

A 32 bites? Továbbá írtam neked, csak nem figyeltél: sdl12-compat.i686

Tudom, ez fedorás csomagnév, de tegyük fel, jelent valamit a névben az a compat. Azt, hogy régi, kompatibilitást biztosító réteg.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Miért adod fel? Működik, mondom, Fedorán simán életre tudtam kelteni. Egyedül a billentyűzettel volt bajom, a backspace nem azt csinálta, amit vártam tőle, illetve nem találtam a '+' és '*' jeleket. Nagyjából a PRINT 5+6 és PRINT 5*6 lett volna az, amivel megpróbálkoztam volna. Ja, és nem tudom, ebben a BASIC-ben mi a képernyőtörlés, mert a CLS és CLEAR egyikét sem ismerte fel.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Köszönöm mindenkinek a támogatást! Sikerült megoldanom.

A lépések:

dpkg --add-architecture i386
apt update

majd a dpkg -l | grep ... kombóval kikerestem a csomagok pontos nevét, és

apt-get install libncurses5:i386 és társaivel feltelepültek a hiányzó csomagok.

Az ldd szerint minden megvan!

El is indul ... csak épp "invalid pointer" hibaüzenettel kiszáll ... De ezen nem hiszem, hogy lehetne segíteni ... :(

Valamilyen kompatibilitási gond lesz, mert a hozzászólásomban írt fedorás csomagokkal stabilan működött. Engem csak az zavart, hogy bizonyos karaktereket '*', '+' nem tudtam bevinni, illetve a backspace sem működött visszatörlésként.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Lehet a ROM hiányzik neki, ezt jogi okokból nem mellékelik az emultárokhoz.

Amúgy ha Basic kell, akkor inkább FreeBasic, Gambas, QB64-et ajánlom, azok FOSS Basic interpreter/compiler alternatívák, esetleg a modern nyelvek közül a Lua hasonlít legjobban szintaxisban, egyszerűségben. Esetleg, amire a topiknyitóban is írnak, a MAME-ben van ilyen Aricomp 16 támogatás, grafikát nem támogat, de Basic-hez elég lehet.

Egyébként meg ez a HoLaLi szépen mintázza, hogy mi a baj a zárt forráskódú szoftverrel, főleg egy olyan gyorsan változó unixlike ökoszisztémában, mint a Linux. Van hozzá egyetlen régi bináris, 32 bites, elavult, kielégíthetetlen függőségekkel, gondolom Wine-ban fut a windowsos verzió, de akkor az már emulátor az emulátorban. Ezért kell a nyílt forráskód, meg hozzá a free licenc, hogy le lehessen fordítani, modern függőségekkel, 64 bitre is, és nem kell szenvedni 32 bites függőségekkel, meg összeomlásokkal. A forráskódban azt is le tudják értelmesen írni, hogy milyen ROM kell hozzá, mi a mérete, checksumja, stb..

Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”

Elhiszem neked, akkor meg nem tudom a kollégánál miért nem fut. Kipróbálnám én is, de nem szemetelem be a 64 bites Arch rendszerem mindenféle kísérletezésként felrakott 32 bites és compat csomaggal, amiről aztán meg később nem fogom tudni mihez kellett, kell-e még, stb.. Kb. 2 évente ezért is húzom újra az Arch rendszerem, amit nem kell, mert örökké frissülő rolling, tökéletesen működik, meg minden, de kb. ennyi idő után annyi felesleges csomag begyűlik, hogy inkább tiszta lappal kezdek. A btrfs-snapshot ilyenkor segítség lenne, de az is extra erőforrást kérne, így egyelőre maradok ext4-en.

Már most is van fent kb. extra 100-150 csomag, amit ilyen-olyan régi játékhoz, raw/nef/mime képmegjelenítéssel kísérletezés, képeffektezés, XeTeX-es háttérszínezéshez, stb. tettem fel, hogy már most kezd sok lenni, pedig még csak 1 éves rendszer.

Mindenesetre nem értem az illető emulátor fejlesztőjét. Ez egy ingyenes hobbiprojektnek tűnik, a forráskódját akkor miért nem publikálta. Ez neki is érdeke lenne, mert az ilyen egyes rendszereken előjövő crash bugokat segítene neki a közösség befoltozni, meg más rendszerekre portolni, nagyobb disztrók tárolójába betenni, stb.. Egyszerűen nem érdemes ilyen kódokon rajta ülni, ki kell tenni GPL vagy MIT/BSD licenccel egy git tárolóba.

Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”

Akkor szerintem használd a windowsos verziót, az tuti megy Wine-ban. Persze, emulátor az emulátorban, de ennyi overhead meg se kottyan a mai gépeknek. Persze én továbbra sem értem, hogy a magyar fejlesztő minek ül rajta az emulátor kódján. Nem pénzért adja úgy se, nincs értelme, hogy ezzel meg használhatatlanná teszi másoknak modern rendszeren, és mindenkinek extra emulátorozni kell hozzá, vagy windowsoszni, hogy menjen.

Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”

A windows emulátor sem tudja sajnos a grafikus módot generálni, de lehet, hogy az lesz. A MAME emulátor is tud annyit majdnem, mint a windows-os. Bár épp ma kaptam hírt egy béta verziós emulátorról, ami már WAV betöltésre is képes, és a grafikát is emulálja. Remélem, vagy lesz forráskódja, vagy futni fog wine alatt. Ez majd kiderül, ha tényleg hozzájutok.

[OFF]

Persze azt sem értem, hogy egy ilyen projekt miért nem valami publikus github-on készül

[/OFF]

Általában nincs külön Aircomp 16 emulátor. A Homelab emulátorok szokták tudni a 2,3,4-es verziót. Némelyik az 5-ös változatot, mint Breilab.

Azóta egy virtuális gépre feltettem egy Debian 6 rendszert, és azon el is indult gond nélkül a Holali. De nem lehetett átváltani Homelab 2 üzemmódba, így végül az egész szopás teljesen felesleges volt.

Mint ahogy a windows-os homelab emulátor írójának blogjában is rátaláltam arra a megjegyzésre, hogy aluldokumentáltság miatt a grafikus képesség nem került implementálásra.

Vagyis jelenleg nemlétezik olyan Aircomp 16 emulátor, ami teljesértékű lenne, azaz tudná a grafikus képességet is emulálni.

A négyesben talán nem is volt grafikus mód, ha jól emlékszem. Volt egy 6116-os SRAM (2KiB, mondjuk 32x64 karakter) mint videómemória, meg egy karakter-generátor ROM (2716, 2KiB, 256 db 8x8 as karakter).

Szerk: itt lehet látni: http://homelab.8bit.hu/images/homelab4cd.jpg (nem éppen kontrasztos).

Való igaz, már a III-ban sem volt ilyen jó grafika. A fejlesztők inkább üzleti célra fejlesztették, nem játéknak. Épp ezért érdekes, hogy egy régebbi verziója a gépnek többet tudott, mint az újabb.

Ráadásul - a kapcsolásába még nem látok bele, de - a ZX81-et is meghaladó grafikai megoldása lehet. Ugyanis mindkét gépnél a Z80 generálja a képet, de míg ZX81 esetén csak a slow/fast üzemmód van, addig Aircomp 16 esetén meg lehet mondani, hogy hány képernyősort generáljon a CPU. Így megteheted, hogy csak 3 karaktersornyi képernyőt hagysz meg, azaz még tudsz kommunikálni a felhasználóval, de már sokkal gyorsabban fut a programod.

Ráadásul a grafikus üzemmódja is hasonló. Nem ki/bekapcsolás van, hanem megmondod, hogy hány sornyi grafikát akarsz készíteni, ennyi memóriát levág a BASIC szabad terület végéről, és abban tudsz rajzolni.

Mivel kipróbálni még nem tudtam, nem tudom, hogy a grafika és a szöveg keverhető-e, és azt sem igazán látom át, hogy milyen egyszerű áramkörök képesek keverten generálni a képet. A Primo esetén viszonylag egyszerűen előállítható a kép a memóriából, mivel annak csak grafikus üzemmódja van. Egy csak karakteres üzemmódú gép is - gondolom - egyszerűen tud videojelet generálni a karakterrom segítségével. De, hogy ez sorokra keverten hogyan csinálják az Aircomp esetén, az érdekelne.

Szerkesztve: 2023. 08. 06., v – 18:38

Találtam valahol egy régi Ubuntut (valami Xanadu vagy ilyesmi), ez lett:

MustLockSurface(8E3F670): 0.   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .
*** Error in `./holali': free(): corrupted unsorted chunks: 0x08e312f0 ***S ; S ; S ; S ; S ; S ; S ; S
;  . : . : . : . : . : . : . : . : . : . : . : . : . : . : . : . : . : . :Segmentation fault : . : . :

Szerk: felerőltettem egy Centos7-re is, ott azért más a dolog:


Thread 1 "holali" received signal SIGSEGV, Segmentation fault.
0x0804ff29 in ScreenSDL::ScreenSDL(int, int, int, unsigned char*) ()
(gdb) bt
#0  0x0804ff29 in ScreenSDL::ScreenSDL(int, int, int, unsigned char*) ()
#1  0x0804a640 in main ()

A windowsos verzió úgy működik, hogy az alapgép elindul. De ha bekapcsolom a grafikát, és lefuttatom az Aircom 16 grafikai demo programját, akkor összeomlik és újraindul. Tehát grafikára nem használható az emulátor. Mint ahogy ezt a funkciót a MAME emulátora sem emulálja.

Legutolsó reményem, hogyha egy virtuális gépre felteszek egy XP-t, és azon futtatom (in memorim hajbi), akkor talán jól fog futni a windowsos emulátor. Nem sok esélye van, de jobb ötletem most nincs.

Apropó az XP már ingyenes? Honnan tudok letölteni egyet egy ilyen teszthez?

Nem ismerem ezt a programot, de az SDL-t mar hasznaltam (meg programot is irtam vele, ill. valami forditasi hibat is jelentettem es kerult be patchem).

Az SDL-nek az a lenyege, hogy hardware es software architekturafuggetlen modon tudod vele kezelni a billentyut, egeret, hangot es effeleket. Nem kell tudnod milyen OS-en vagy, es hogy most milyen hangrendszer van alattad, megoldja. Meg sajat kevero is van benne, ha jol emlekszem egy hatterzenet es sok effektet tud egyszerre jatszani, akkor is, ha a hasznalt hangrendszer nem tamogatna egyebkent.

Az en tippem is az, hogy ami hangrendszert hasznalsz, az az akkori SDL-ben meg nem volt tamogatva. Pl. pulseaudio 15 eve meg nem volt, locsemege meg pipewire-t hasznal, lehet annak van oss/alsa kompatibilis retege, a pulse-odban meg nincs bekapcsolva, vagy valami maskepp mukodik. Valahol erre probalkoznek. Alternativ megoldas egy olyan VM-ben futtatni, ami elbirja, gondolom a homelab-hoz nem kell annyi eroforras egyebkent sem.

A strange game. The only winning move is not to play. How about a nice game of chess?