Welcome, Guest. Please login or register.


Author Topic: EXOS (Read 113469 times)

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • 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

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • 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 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • 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: 2296
  • Country: hu
    • 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

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • 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
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: 2296
  • Country: hu
    • 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

Offline Tuby128

  • EP addict
  • *
  • Posts: 1448
  • Country: hu
Re: EXOS
« Reply #337 on: 2022.January.06. 04:04:03 »
Mire való a
set 8,0
Illetve
Set 8,1
Utasítás?
Azt írja a kézikönyv, hogy a billentyű lenyomás szoftveres IRQ-t (megszakítás) okoz.
Basicben nem láttam különbséget, hol keressem?

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: EXOS
« Reply #338 on: 2022.January.06. 07:55:10 »
SET 8,0 = SET INTERRUPT STOP ON - vagyis a futó program megszakítható a STOP billentyűvel (ez az alapértelmezés)
SET 8,1 = SET INTERRUPT STOP OFF

Offline Tuby128

  • EP addict
  • *
  • Posts: 1448
  • Country: hu
Re: EXOS
« Reply #339 on: 2022.January.06. 13:42:04 »
Ezeket a Set utasításokhoz tartozó számokat és azok azonosítószámát hol találom meg? Ezek szerint akkor eddig a rossz táblázatot néztem.

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: EXOS
« Reply #340 on: 2022.January.06. 13:54:07 »
itt megtalálod: 8. Az EXOS-változók

Offline Tuby128

  • EP addict
  • *
  • Posts: 1448
  • Country: hu
Re: EXOS
« Reply #341 on: 2022.January.06. 15:36:46 »
Én az angol exos leírást néztem. Ezek szerint hibás.

A set 5 az timer_irq lett, és az egészet elcsúsztatta.

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: EXOS
« Reply #342 on: 2022.January.06. 15:54:10 »
Hát vagy épp az EXOS 2.0 leírását nézed :D , és akkor nem hibás az, hanem human error történt :D :D

Offline Tuby128

  • EP addict
  • *
  • Posts: 1448
  • Country: hu
Re: EXOS
« Reply #343 on: 2022.January.06. 16:29:16 »
Van egyáltalán angol leírás az exos .1-gyel.

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: EXOS
« Reply #344 on: 2022.January.06. 16:52:31 »
Most nézem, hogy nem is az EXOS 2.0-t nézted, hanem az EXOS 1.0-át.
Zozónál megvan mind a 3 verzió ángliusul