ENTERPRISE KLUB
2021. június 19., 1055 Budapest, Nyugati tér 9. 14-19 óráig
(Belépés csak védettségi igazolvánnyal lehetséges!)
Részletek
Welcome, Guest. Please login or register.


Author Topic: EXOS (Read 53756 times)

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13982
  • Country: hu
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Firefox 85.0 Firefox 85.0
    • View Profile
    • http://enterprise.iko.hu/
Re: EXOS
« Reply #330 on: 2021.February.17. 14:19:10 »
16 bites az ellenőrző összeg. Ki kell számolni a módosítás utáni új értéket és beírni azt a ROM végére.
Én anno csináltam egy kis programot, amit Asmonból vagy Fenasból lefuttattam a módosított ROM tartalmon és kiszámolta az értéket.

De akár BASIC-ből is meg lehetne csinálni, csak jó lassú lesz, mondjuk manapság van ALT+W :lol:

Offline szipucsu

  • EP addict
  • *
  • Posts: 9068
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 85.0 Firefox 85.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: EXOS
« Reply #331 on: 2021.February.17. 14:31:52 »
Ki kell számolni a módosítás utáni új értéket
Hogyan kell kiszámolni? Gondolom, nem az összes addigi karakter kódjának az összege, mert akkor nem befolyásolná, ha csak megcserélek két karaktert.
Én ilyesmire gondoltam:
Code: [Select]
OPEN #1:"exos21.rom" ACCESS INPUT
LET X=0
FOR A=1 TO 32768
GET #1:A$
LET X=X+ORD(A$)
NEXT
CLOSE #1
PRINT "Ezt kell beírni a végére (hex alakban):" X
100 SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
110 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
120 SOUND PITCH 25,SYNC 2
Videos

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13982
  • Country: hu
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Firefox 85.0 Firefox 85.0
    • View Profile
    • http://enterprise.iko.hu/
Re: EXOS
« Reply #332 on: 2021.February.17. 15:15:33 »
Code: [Select]
OPEN #1:"exos21.rom" ACCESS INPUT
LET X=0
FOR A=1 TO 16384
GET #1:A$
LET Y=ORD(A$)
GET #1:A$
LET Y=Y+ORD(A$)*256
LET X=X+Y
NEXT
CLOSE #1
PRINT "Összeg:" X

Ha jól emlékszem nullának kell kijönni. A 0-ás szegmens végéről kell venni az utolsó két bájtot 16 bites értékként, abból kivonni az eltérést, és az így kapott értéket kell visszaírni.

Offline Povi

  • EP addict
  • *
  • Posts: 2091
  • Country: hu
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Chrome 88.0.4324.150 Chrome 88.0.4324.150
    • View Profile
    • http://povi.fw.hu
Re: EXOS
« Reply #333 on: 2021.February.17. 16:00:08 »
Az miért van, hogy ha pl. az exos21.rom tartalmában valamit átírok hex editorral, és azt rakom az emulátorba, akkor Internal checksum error üzenettel el sem kezdődik a memóriateszt? Gondolom, a fájlban lévő karakterek kódja alapján ellenőrzi, milyen érték jön ki, és ha nem az, ami kell, akkor nem engedi elindulni a gépet. Viszont ha csak két karaktert megcserélek a rom-ban, akkor is ugyanannyi kéne, hogy legyen a kódok összege, azt sem fogadja el.
Megtaláltam a rom-ban a funkcióbillentyűk szövegeit sorban egymás után. Először azt hittem, a basic romban lesz. A toggle speaker-t akartam átírni valami másra.
Így hogyan lehet romokat fejleszteni? Vagy az ellenőrző rutin is a romban van benne és felül lehet írni mással?
a későbbi exos verziókban ki lett irtva ez a cheksum, azokban már büntetlenül átírhatod a szöveget (de lehet, h rosszul tudom)
*** Speicherplatz zu klein

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13982
  • Country: hu
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Firefox 85.0 Firefox 85.0
    • View Profile
    • http://enterprise.iko.hu/
Re: EXOS
« Reply #334 on: 2021.February.17. 16:12:30 »
a későbbi exos verziókban ki lett irtva ez a cheksum, azokban már büntetlenül átírhatod a szöveget (de lehet, h rosszul tudom)
Rosszul tudod.
A titkos cheksum lett kiírtva 2.4-ben, ami hardver hibát szimulál ha nem stimmel. Ennek az ellenőrző összegbájt helye lett felhasználva 191-es EXOS változónak.

Offline elmer

  • EP fan
  • *
  • Posts: 196
  • Country: us
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 85.0 Firefox 85.0
    • View Profile
Re: EXOS
« Reply #335 on: 2021.February.17. 16:53:43 »
Nem tudom, hogy ez segít-e Önnek, de itt van a C kód, amelyet az EXOS ellenorzo összeg javításához használok, amikor megváltoztatom az EXOS karakterkészletet ...

-----------------------------------------------------

I do not know if this will help you, but here is the C code that I use to fix the EXOS checksum when I change the EXOS character set ...

-----------------------------------------------------

Code: [Select]
  // Javítsa az EXOS ellenorzo összeget (az elso szegmens utolsó 2 bájtjában tárolva).
  // Fix the EXOS checksum (stored in the last 2 bytes of the first bank).

  {
    uint16_t * pChecksum = (uint16_t *) aRomBuffer;

    pChecksum[ 0x1FFF ] = 0;

    j = 0;

    for (i = 0; i < 0x4000; ++i)
    {
      j += pChecksum[i];
    }

    j = 0 - j;

    pChecksum[ 0x1FFF ] = (uint16_t) j;
  }

Offline Povi

  • EP addict
  • *
  • Posts: 2091
  • Country: hu
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Chrome 88.0.4324.150 Chrome 88.0.4324.150
    • View Profile
    • http://povi.fw.hu
Re: EXOS
« Reply #336 on: 2021.February.17. 17:28:56 »
Gondolom, nem az összes addigi karakter kódjának az összege, mert akkor nem befolyásolná, ha csak megcserélek két karaktert.
Azért lesz más a checksum, mert nem byte-onént adja össze a számokat, hanem 16 bites értékekként.
Tehát pl. tegyük fel, hogy páros címen kezdődik ez a szöveg: "ZOLI", akkor ez így van tárolva a memóriában: 5A 4F 4C 49 (ezek az ASCII kódok hexában)
16 bites számonként olvasva (kis endián ábrázolás miatt az első byte az alsó helyiérték, a második byte a felső helyiérték): 4F5A, és 494C, ezeknek az összege = 98A6

ha megcseréled a két első betűt: OZLI -> 4F 5A 4C 49, a két 16 bites számod ez lesz: 5A4F és 494C, ezeknek összege értelemszerűen más lesz.
*** Speicherplatz zu klein