Enterprise Forever

:HUN => Programozás => BASIC => Topic started by: Ep128 on 2022.December.28. 16:45:13

Title: Basic BÚÉK
Post by: Ep128 on 2022.December.28. 16:45:13
(Attachment Link)
(Attachment Link)

Ezt nincs kedved átírni 2023 -ra is...? :-)
Title: Re:Basic BÚÉK
Post by: szipucsu on 2022.December.31. 06:10:54
Ezt nincs kedved átírni 2023 -ra is...? :-)
Megpróbáltam, de feladtam. Az eredeti basic programot nem találtam meg. Olyan cseles voltam a snapshot elkészítésekor, hogy a program letiltotta a resetet és a STOP-ot is, így saját magammal kiszúrtam, és nem találtam semmilyen lehetőséget, hogy a programot ki tudjam listázni. De ezzel nem adtam fel, hex editorban megnéztem a snapshotot, megkerestem a 2012-es számot és átírtam 2023-ra. Erre kiderült, az emulátor a CRC-t is nézi, így már nem nyílt meg a fájl.
Még mindig nem adtam fel, elmentettem emulátorral egy tetszőleges basic programot, ezt megnéztem hex editorban, és ehhez hasonlót próbáltam rittyenteni az említett basic programból. A fejléc hiányzott alapból, ez lett 00 04 valami hossz 00 00 00.... ezeket odaírtam az elejére, a basic programnak kinéző részt utána másoltam, de így se töltötte be. Lehet, hogy a sorszámok nem úgy vannak letárolva a snapshotban, mint a tokenizált basic programban. Még jó, hogy akkor nem volt tömörített snapshot, különben a basic programot se találtam volna meg benne.
Több ötletem nincs. Érdekelne, mások hogyan szendék ki a snapshotból a basic programot, esetleg a reset vagy a STOP tiltását fel lehet-e oldani a debuggerből és így kilistázni a programot.

UI: Ez lenne a snapshotból mesterségesen előállított, nem működő basic program:
[attach=1]
Title: Re:Basic BÚÉK
Post by: Zozosoft on 2022.December.31. 13:34:09
Sokkal egyszerűbb visszaállítani a resetet. Debugerben >BFF8 04 01
Utána már csak az volt a szívatás, hogy magnós konfigban volt elkövetve, így nem volt egyszerű kiszedni a programot.
Kellett egy nyomtatós LUA script, és aztán LLIST-tel kimenteni.
Title: Re:Basic BÚÉK
Post by: szipucsu on 2022.December.31. 14:05:19
Sokkal egyszerűbb visszaállítani a resetet...
Köszi! :smt041
Na, ezeket lenne jó tudni, hogy hol és mi történik, amikor kiadjuk pl. a set interrupt stop off parancsot. Már gondoltam arra is, elmentek egy snapshotot, ahol van stop, és egy olyan, ahol nincs, és valahogy összehasonlítom a kettő. Bár a debuggerben biztos könnyebb lenne, ha egyáltalán tudnám, mit kell nézni.

Utána már csak az volt a szívatás, hogy magnós konfigban volt elkövetve
Egyébként, ha a FileIO-t engedélyezed, szerintem a save "file:név" is működött volna.

Hex editorban összeollóztam egy basic program fejlécet és a snapshotból kibányászott, basic programra utaló adatokat, és akár működhetett is volna, csak nem jöttem rá, mit adjak meg a legelején a 00 04 után. Ez nyilván a program hossza, de azt miből kell kiszámolni? Már ott tartottam, hogy a tokenek alapján magam visszafejtem a programot, de hát pont arra van a basic, hogy ő fejtse vissza. Bosszantó, hogy a hosszbájt, vagy mi miatt ez nem ment. Meg még azt nem tudtam, a basic program végén hány darab 00 kell.

Nemsokára feltöltöm a 2023-as BÚÉK programot.
Title: Re:Basic BÚÉK
Post by: Zozosoft on 2022.December.31. 14:18:55
Na, ezeket lenne jó tudni, hogy hol és mi történik, amikor kiadjuk pl. a set interrupt stop off parancsot.
Az BFCDh címen van tárolva, tehát debuggerben >BFCD 0 paranccsal kapcsolható vissza.
Itt (http://enterprise.iko.hu/memorymap.htm) összeszedtem a rendszerszegmens pókolós címeit. Anno a Tippek és trükkök, Gépi kódú programozás, stb könyvekben meg sok cikkben volt ezeknek piszkálása sokat emlegetve :-D
(A táblázatba kikerestem az EXOS 2.0-ás címeket is.)
Jelen esetben a RST_ADDR illetve a STOP_IRQ címekre volt szükségünk, hogy vissza lehessen pókolni a letiltott dolgokat.
Title: Re:Basic BÚÉK
Post by: szipucsu on 2022.December.31. 15:02:56
Aquafresh, a háromszoros védelem lerobbantva.
Már csak azt nem tudom, a 2023-as évszám jó-e, mert 2012 végén 2012 volt. Itt most előre gondolkodtunk. Szerencsére a basic programban most már bármit át lehet írni.
[attach=1]
[attach=2]
[attach=3]
Title: Re:Basic BÚÉK
Post by: Ep128 on 2023.January.01. 00:58:43
Aquafresh, a háromszoros védelem lerobbantva.
Már csak azt nem tudom, a 2023-as évszám jó-e, mert 2012 végén 2012 volt. Itt most előre gondolkodtunk. Szerencsére a basic programban most már bármit át lehet írni.
(Attachment Link)
(Attachment Link)
(Attachment Link)

A fene se' gondolta, hogy ilyen nehezet kértem... :-P :-D
Köszi mindkettőtöknek! :-)
Title: Re:Basic BÚÉK
Post by: szipucsu on 2023.January.01. 14:59:15
A fene se' gondolta, hogy ilyen nehezet kértem... :-P :-D
A kérés reális volt. Az nem volt reális, hogy 10 éve olyan védelmet helyeztem a snapshotba, hogy én se tudtam visszafejteni. Nem tudom, mi értelme volt. Biztos megértem egyszer saját magamat, hogy magam elől is elrejtem a tartalmat... :D
Közben rájöttem, hogy visszafejtegetés helyett akár újra megírhattam volna a programot, az pár perc lett volna csak.
Bonyolult dolgok ezek.
Title: Re:Basic BÚÉK
Post by: szipucsu on 2023.January.08. 20:51:03
UI: Ez lenne a snapshotból mesterségesen előállított, nem működő basic program:
talan.bas
Azt meg tudná mondani valaki, hogy ez a program miért nem működött? A snapshotban megkerestem a basic programot és odaraktam elé valami olyasmit, ami fejlécnek néz ki. Mit kellett volna még változtatni rajta és hogyan, hogy betölthető legyen?
Title: Re: Basic BÚÉK
Post by: geco on 2023.January.09. 11:52:37
A fejléc se volt jó, a 04h után a fájl mérete-32-t kell megadni, és szerintem 1-2 bájt a program elejéről is lemaradt, mert amikor megadtam a jó hossz értéket, akkor belefagyott az EP a fájl feldolgozásába.
Title: Re: Basic BÚÉK
Post by: szipucsu on 2023.January.10. 12:13:20
szerintem 1-2 bájt a program elejéről is lemaradt
Nekem is befagyott, amikor próbálkoztam.
Lgb fileanalizátorával (http://epbas.lgb.hu/) is megnéztem, az is kiakadt rajta és nem mutatott meg semmit belőle.
Kíváncsiságból kimentettem egy egysoros basic programot és megnéztem hex editorral, és az említett újévi program snapshotból kiszedett változatát is megnéztem hex editorral. Az elejének szerintem stimmelnie kellene, a hosszbájt kivételével, mert mindkét fájlban a fejléc után ugyanannyi 00 van, és utána a sorszámra vonatkozó adatok jönnek.

Példaprogram:
[attachimg=1]

A rettegett újévi program snapshotból kibányászott és faragott változata:
[attachimg=2]

Kíváncsi lennék, snapshotból hogyan lehet kiszedni egy memóriában lévő basic programot úgy, hogy az pl. igazi EP-be is betölthető legyen.
Title: Re: Basic BÚÉK
Post by: geco on 2023.January.10. 16:02:58
Van 4 bájt shortage a TALAN.BAS-ban, betöltöttem, betöltötte az egészet, feldolgozás közben az F8:13E1 olvasása után fagyott meg, összehasonlítottam Zozo által hatástalanított verzióval, megnéztem, hogy ott az F8:13E1 olvasása hová esik , és így kijött hogy a TALAN.BAS-ból 4 bájt hiányzik és már "sit ENTERPRISEFOREVER.COM" első karakterére esett az olvasás, míg a jó verzióban a "Q visit ENTERPRISEFOREVER.COM" legelejére, a Q (51h) gondolom a REM utasítás kódja, a TALAN.BAS-nál ebben a pozícióban s (73h) van, ami a szöveg része, ilyen utasítás nincs, és így végtelen ciklusba kerül a basic program feldolgozása.
A két fájl "Q Character Definer" -ig megegyezik, itt jön a 4 bájt elmaradás, ami 2012.
Meg is oldottam, a file-ban 0105h pozícióban az 1eh hossz értéket lecsökkentettem 1ah-ra, és megjavult a program :D
Plusz kiegészítettem a végét egy new line-nal 0ah, meg egy kis üres résszel , nemtom ez szükséges volt-e.
Title: Re: Basic BÚÉK
Post by: szipucsu on 2023.January.10. 17:48:26
Úgy nagyjából értem, bár a szakkifejezések kínaiak nekem. Szóval valahogy eltűnt a !-jeles sor végéről a 2012 szöveg, valószínűleg én töröltem le, csak nem emlékszem rá. És ezzel a sor hosszát leíró bájt téves lett, és ezen borult az egész, ha jól értem.
Nem tudom, gyakorlati haszna lehet-e a jövőben, de hogyan lehetne egy basic programot a snapshotból kiszedni, betölthető basic program formátumra? Magát a programot meg lehet találni a snapshotban hex editorral, az elejét biztosan. A végét pontosan belőni már nehezebb, talán elég az utolsó sort leíró bájtokat (sorszám és sor hossza) megkeresni, és abból kiszámolni, hol a sor vége? És ha megvan a program az elejétől a végéig, akkor a hosszt hogyan kell meghatározni? Össze kell számolni, összesen hány bájt a program, gondolom fejléc nélkül, és úgy írni meg a fejlécet, hogy az elején 00 04 legyen, utána néhány bájtban a hosszt kell megadni, és a fejléc hossza összesen 16 bájt legyen, a nem használt bájtokra 00-t írni be?
Title: Re: Basic BÚÉK
Post by: geco on 2023.January.10. 19:08:24
Az a fura, hogy akkor valami hex editorral kellett ténykedned a fájlban, mert az rövidebb is lett.
Igen, meg kell keresni az elejét, és a végét, és betenni egy fejécet elé, a hossz meghatározása a fejléces fájlméret - 32.
Tedd fel lécci a snapshotot, amiből csináltad a talan.bas-t
Title: Re: Basic BÚÉK
Post by: Zozosoft on 2023.January.10. 19:32:30
Miért nem használtok debuggert? :oops:
És BASIC-ben turkáláshoz ajánlott olvasmány: Tippek és trükkök (http://www.ep128.hu/Ep_Konyv/Tippek.htm)
21Ah-n van a program kezdetének címe
236h:
Quote
A változó tábla elejének címét tárolja. Ez a cím a tárolt Basic program utáni első memória rekeszre mutat. Ennek ismeretében az általunk beírt Basic program hosszát mi magunk is meghatározhatjuk
Title: Re: Basic BÚÉK
Post by: SlashNet on 2023.January.10. 19:49:27
Maybe just force in snapshot warm reset using debugger to quit to Basic?
Or it not so easy in this case?
Title: Re: Basic BÚÉK
Post by: szipucsu on 2023.January.10. 20:39:09
Az a fura, hogy akkor valami hex editorral kellett ténykedned a fájlban, mert az rövidebb is lett.
Az csak az én hozzánemértésem miatt van, mert ránézésre meghatároztam, hol lehet a program vége, és lehet, nem is ott volt.
Magát a snapshotot töltöttem be amúgy ebbe az online hex editorba (https://hexed.it/), ott kerestem rá a 2012-es sztringre, így lőttem be kb., hogy mettől meddig tart maga a program. Úgy tűnik, szerencsém volt, mert a snapshotban is ugyanabban a formátumban van meg a program, mint amit a SAVE-vel lehet kimenteni, csak a fejléc hiányzik.

Quote
a hossz meghatározása a fejléces fájlméret - 32.
Vagy fejléc nélküli méret-16? Gondolom, ez is ugyanaz, mert a fejléc mindig 16 bájt.

Quote
Tedd fel lécci a snapshotot, amiből csináltad a talan.bas-t
[attach=1]

Maybe just force in snapshot warm reset using debugger to quit to Basic?
Or it not so easy in this case?
It is OK too, Zozo did this as I know. Just as a curiosity I am asking how to extract the basic program itself from an emulator snapshot.
Title: Re: Basic BÚÉK
Post by: Zozosoft on 2023.January.10. 22:30:12
Van még egy modul vége fejléc is a mentett programban, azért nagyobb összesen 32 bájttal.
Title: Re: Basic BÚÉK
Post by: geco on 2023.January.11. 08:39:16
Miért nem használtok debuggert? :oops:
És BASIC-ben turkáláshoz ajánlott olvasmány: Tippek és trükkök (http://www.ep128.hu/Ep_Konyv/Tippek.htm)
21Ah-n van a program kezdetének címe
236h:
Használtam, úgy derült ki, hol van a hiba :D
A fent említett címekkel nem voltam tisztában, köszi, bár tuti elfelejtődnek, nem hinném, hogy sűrűn fogok basic programokat memóríából kinyerni :D
Title: Re: Basic BÚÉK
Post by: geco on 2023.January.11. 08:57:23
Na, Zozó kiegészítésével már nagyon egyszerű a fájl kinyerése:
021ah-n a debuggerben megtalálható a basic program kezdőcíme, ez 12c9h
0236h-n található cím-1 megadja, hogy mi a vég címe, ez most 15adh-1=15ach
a dbugger page2-n a következő paranccsal lementhető maga a program: s "valamic.bas" 0 12c9 15ac
és már csak az EXOS fejlécet kell elé tenni:
hossz: 15adh-12c9h = 02e4h
00 04 hossz 00 00 00 00 00 00 00 00 00 00 00 00
és a fájl végére:
00 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Title: Re: Basic BÚÉK
Post by: Zozosoft on 2023.January.11. 09:09:27
A fent említett címekkel nem voltam tisztában, köszi, bár tuti elfelejtődnek
Én is csak arra emlékeztem, hogy melyik könyvben kell keresni :-)