Welcome, Guest. Please login or register.


Author Topic: Lua scriptek fejlesztése (Read 73971 times)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Lua scriptek fejlesztése
« Reply #30 on: 2009.October.17. 00:40:56 »
:ds_icon_cheesygrin:

Ez már jobb :) Még egy javítási lehetőség: a címet szegmensszámmal kiírni.

Online Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: Lua scriptek fejlesztése
« Reply #31 on: 2009.October.17. 15:56:53 »
Még egy javítási lehetõség: a címet szegmensszámmal kiírni.
Az már bonyolultabb feladat :-)

Olyan Print van, ami nem emel sort?

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Lua scriptek fejlesztése
« Reply #32 on: 2009.October.17. 16:10:31 »
Az már bonyolultabb feladat :-)

Olyan Print van, ami nem emel sort?

Nincs :oops:, viszont az mprint()-et több paraméterrel is lehet hívni, és akkor azok között nincs soremelés, szóköz, vagy egyéb karakter. A string.format() is lehetővé teszi több paraméter használatát: például a string.format("%s: %d, %d", a, b, c) az a változót szövegként (%s), a b és c változót pedig decimális egész számként (%d) konvertálja.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Lua scriptek fejlesztése
« Reply #33 on: 2009.October.17. 20:54:01 »
Rövidebb megoldás táblázattal (a táblázat első elemének az indexe 1, és a nem létező elemek olvasása nil értéket ad vissza):

Code: Lua
  1.   clearBreakPoints()
  2.   setBreakPoint(4, 0x80505, 2)   -- break on reading memory at 20:0505
  3.   fishCalls = {
  4.     "Útvonal és KFCB készítése fájlnévből",
  5.     "Aktuális katalógus megadás",
  6.     "Aktuális katalógus lekérés",
  7.     "Első bejegyzés keresése",
  8.     "Következő bejegyzés keresése",
  9.     "Fájl létrehozás",
  10.     "Katalógus létrehozás",
  11.     "Fájl vagy katalógus törlés",
  12.     "Fájl vagy katalógus átnevezés",
  13.     "Fájl vagy katalógus áthelyezés",
  14.     "Attribútum nés idő változtatás",
  15.     "Fájl megnyitás",
  16.     "Fájl lezárás",
  17.     "Pufferek törlése",
  18.     "Szekvenciális olvasás",
  19.     "Szekvenciális írás",
  20.     "Szekvenciális írás 0 feltöltéssel",
  21.     "Szektorok olvasása",
  22.     "Szektorok írása",
  23.     "Rendelkezésre álló meghajtók lekérdezése",
  24.     "Allokációs információ",
  25.     "Fizika meghajtó lekérdezés",
  26.     nil,
  27.     nil,
  28.     "Mapdisk megadás",
  29.     "Assign megadás",
  30.     nil,
  31.     "Ramdisk létrehozás-törlés",
  32.     "Formázás"
  33.   }
  34.   function breakPointCallback(t, a, v)
  35.     if t == 3 then              -- allow stepping
  36.       return true
  37.     end
  38.     f = getA() 
  39.     if getPC() ~= 0xc505 then
  40.       return false
  41.     end
  42.     cim = OR(readMemory(getSP()), SHL(readMemory(getSP() + 1), 8)) - 3
  43.     if fishCalls[f] ~= nil then
  44.       mprint(string.format("%04X: %s", cim, fishCalls[f]))
  45.       return false
  46.     end
  47.     mprint(string.format("%04X: Ismeretlen FISH hívás: %d ", cim, f))
  48.     return true
  49.   end

UI: az ő karaktereket a fórum elrontotta :oops:

Online Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: Lua scriptek fejlesztése
« Reply #34 on: 2009.October.17. 21:09:37 »
Rövidebb megoldás táblázattal
Ügyes  :smt038

Online Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: Lua scriptek fejlesztése
« Reply #35 on: 2009.October.26. 21:37:44 »
Még egy javítási lehetõség: a címet szegmensszámmal kiírni.
Elvileg megoldva :-)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Lua scriptek fejlesztése
« Reply #36 on: 2009.October.26. 21:57:41 »
Jónak tűnik, bár ismeretlen hívás esetén a szegmensszámot nem írja ki :) A szegmensszám lekérdezését egyébként kissé lehet egyszerűsíteni: readIOPort(0xB0 + SHR(cim, 14)) vagy getMemoryPage(SHR(cim, 14)).

Online Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: Lua scriptek fejlesztése
« Reply #37 on: 2009.October.26. 22:05:25 »
A szegmensszám lekérdezését egyébként kissé lehet egyszerûsíteni: readIOPort(0xB0 + SHR(cim, 14)) vagy getMemoryPage(SHR(cim, 14)).
Sejtettem, hogy tudsz majd új trükköket mondani!

Arra mi lenne a legegyszerûbb, hogy a különbözõ EXOS és EXDOS listákban kotorászva, a szegmensszám:cím formátumú mutatókon ugráljunk? Különös tekintettel arra, hogy a cím nem szegmensen belüli, hanem valamelyik lapon érvényes.

Online Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: Lua scriptek fejlesztése
« Reply #38 on: 2009.October.26. 22:11:15 »
A konkrét megvalósítandó terv az lenne, hogy az EXOS ROM listából keressük ki az EXDOS-t (20H), meg tudjuk a RAM területének a címét, majd onnan a meghajtó táblázatból ki keresni a az egyes meghajtók kezelõprogramját, és azokra töréspontot berakni.
És utána egy hasonló jelentõ progival nézni mi történik.
Mivel vannak még ismeretlen akciókódok, ez eredményezi pl azt, hogy EPDOS 1.9-el vinyóról törölve data error hibát kapunk, mivel az IDE ROM az ismeretlenekre hibát ad vissza.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Lua scriptek fejlesztése
« Reply #39 on: 2009.October.26. 22:19:17 »
Az EXDOS programozását nem ismerem :oops: Pontosan mi az, aminek a megoldása a scriptben problémát jelent ?

Online Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: Lua scriptek fejlesztése
« Reply #40 on: 2009.October.26. 22:28:34 »
Pontosan mi az, aminek a megoldása a scriptben problémát jelent ?
A konkrét kérdés az, hogy ha van az EP memóriában egy 3 bájton tárolt cím, abból hogyan lehet a legegyszerûbben fizikai címet elõállítani?

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Lua scriptek fejlesztése
« Reply #41 on: 2009.October.26. 22:35:55 »
A konkrét kérdés az, hogy ha van az EP memóriában egy 3 bájton tárolt cím, abból hogyan lehet a legegyszerûbben fizikai címet elõállítani?

Code: Lua
  1. function getAddr(addr)
  2.   local segNum = readMemory(addr)
  3.   local offsL = readMemory(addr + 1)
  4.   local offsH = readMemory(addr + 2)
  5.   return (segNum * 16384 + offsL + (AND(offsH, 0x3F) * 256))
  6. end

Ez feltételezi, hogy a szegmensszám az első byte, de ezt természetesen egyszerűen lehet módosítani. A visszatérési érték a 22 bites fizikai cím (000000H-3FFFFFH).
« Last Edit: 2009.October.26. 22:51:20 by IstvanV »

Online Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: Lua scriptek fejlesztése
« Reply #42 on: 2009.October.26. 22:39:15 »
Köszi!!!

Online Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: Lua scriptek fejlesztése
« Reply #43 on: 2009.October.26. 23:28:32 »
Az lehetséges, hogy lefagy az egész emulátor ha sikerül végtelen ciklust csinálnom a LUA-ban?  :oops:
Nem tudok a Stopra se klikkelni, csak egy homokóra van...

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Lua scriptek fejlesztése
« Reply #44 on: 2009.October.26. 23:37:23 »
Az lehetséges, hogy lefagy az egész emulátor ha sikerül végtelen ciklust csinálnom a LUA-ban?

Igen :oops: