Enterprise Forever

:HUN => Programozás => Topic started by: MrPrise on 2006.August.17. 16:05:04

Title: ROM0 kommentek a zöld könyvbõl
Post by: MrPrise on 2006.August.17. 16:05:04
c000 ; Megszakítások letiltása
c001 ; 1-es megszakítási üzemmód beállítása
c003 ; 0000 0100b b0 -> 64k beépített RAM, b1 -> 8MHz-es óra, b2-b3 -> várakozás M1-nél kivéve a video RAM-ot
c005- ; Az inicializálást a P3-on is megtalálható ROM0-ban folytatja.
c005 ; Ugrás a P3-ra
c008- ; (P3-on a 0xd780-nak felel meg)
c00a- ; Az RST 030h/17-34 végrehajtó rutinjainak belépési pontja
c00a ; EXOS 17 Csatorna átirányítása másikra olvasáskor
Title: ROM0 kommentek a zöld könyvbõl
Post by: MrPrise on 2006.August.17. 16:06:20
Valahogy így képzeltem. Aztán majd közben kiderül hogy megy-e így a dolog.
A cím utáni - azt jelenti hogy azt a megjegyzést az adott cím elé, teljes sorba kell majd rakni. Akinek van könyve, beszállhat!
Title: ROM0 kommentek a zöld könyvbõl
Post by: MrPrise on 2006.October.18. 16:41:26
Mi újság ezzel a projekttel?
Kész van? ;-)
Title: ROM0 kommentek a zöld könyvbõl
Post by: dano on 2006.October.19. 20:35:08
Quote from: "MrPrise"
Mi újság ezzel a projekttel?
Kész van? ;-)


Ööö, túl amatõr v.ok, de szívesen segítenék. A baj az, hogy nem tudom, melyik a "zöld könyv". Ha nekem is megvan, beszállnék.  :wink:
Title: ROM0 kommentek a zöld könyvbõl
Post by: gafz on 2006.October.19. 20:43:48
Quote from: "dano"
Ööö, túl amatõr v.ok, de szívesen segítenék. A baj az, hogy nem tudom, melyik a "zöld könyv". Ha nekem is megvan, beszállnék.  :wink:


(http://ep.homeserver.hu/Dokumentacio/Konyvek/Picture/ROM.JPG)
Title: ROM0 kommentek a zöld könyvbõl
Post by: dano on 2006.October.19. 21:18:33
Quote from: "MrPrise"
...Akinek van könyve, beszállhat!


Akkor mindenkinek van, nem? : http://ep.homeserver.hu/Dokumentacio/Konyvek/Enterprise_128-as_ROM_visszafejtese_0_szegmens/ROM_0.htm

Tehát, ha jól értem, hex sorrendben ki kell keresni az egyébként szétszórtan lévõ sorokat? (Elég macerásnak tûnik, nem csodálom, hogy nincs tolongás  :D  )
Title: ROM0 kommentek a zöld könyvbõl
Post by: MrPrise on 2006.October.19. 21:50:30
Quote from: "dano"
Quote from: "MrPrise"
...Akinek van könyve, beszállhat!


Akkor mindenkinek van, nem?

Ha megnézed a címeket azok 0xc000-tól kb 0xc500-ig tartanak. Ez csak töredéke a teljes könyvnek ill a ROM-nak.

Quote from: "dano"
Tehát, ha jól értem, hex sorrendben ki kell keresni az egyébként szétszórtan lévõ sorokat? (Elég macerásnak tûnik, nem csodálom, hogy nincs tolongás  :D  )

Nem. Másik topicban (http://enterpriseforever.com/viewtopic.php?t=150) volt erről szó. A lényeg, hogy magát a forráskódot IDA-val elő tudjuk állítani, de a könyvben lévő megjegyzéseket be kellene gépelni, utána azokat a forrásba belepakolni, ezután pedig előállna a csodálatosan szép, megjegyzésekkel teli EXOS forráskód amit utána PC-n akár tovább is lehetne fejleszteni.
A megjegyzések begépelésére kerestünk ebben a topicban jelentkezőket, nem sok sikerrel.
Title: ROM0 kommentek a zöld könyvbõl
Post by: Zozosoft on 2006.October.19. 22:16:11
Quote from: "MrPrise"
magát a forráskódot IDA-val elõ tudjuk állítani

Már itt történt némi elakadás :-)
Title: ROM0 kommentek a zöld könyvbõl
Post by: geco on 2006.October.20. 16:37:14
Én beszállok a gépelésbe, ha a forrás meglesz, sikerült beszereznem egy "Enterprise 128-as ROM visszafejtese 0 szegmens" címû könyvet.
Title: ROM0 kommentek a zöld könyvbõl
Post by: gafz on 2006.October.20. 16:49:00
Az elsõ pár (talán 100?) oldal be van már scennelve meg OCR-ezve, használjátok egészséggel.
Title: ROM0 kommentek a zöld könyvbõl
Post by: MrPrise on 2006.October.22. 09:28:34
Quote from: "Zozosoft"
Quote from: "MrPrise"
magát a forráskódot IDA-val elõ tudjuk állítani

Már itt történt némi elakadás :-)

Nem így emlékszem ;-)
Title: ROM0 kommentek a zöld könyvbõl
Post by: Zozosoft on 2006.October.24. 09:37:57
Quote from: "MrPrise"
Nem így emlékszem ;-)

Némi próbálkozás volt, de nem átütõ siker :-(
Mondtad, hogy valaki nagy IDA mágus, õ nem jár erre?
Title: ROM0 kommentek a zöld könyvbõl
Post by: MrPrise on 2006.October.24. 13:06:18
Quote from: "Zozosoft"
Quote from: "MrPrise"
Nem így emlékszem ;-)

Némi próbálkozás volt, de nem átütõ siker :-(
Mondtad, hogy valaki nagy IDA mágus, õ nem jár erre?

A múltkor válaszolt a hónapos üzenetemre, azt ígérte megpróbál rendszeresen járni. Ha olvassa ezeket a sorokat, kérem, hogy reagáljon :-)
Ettől függetlenül, szerintem nyugodtan lehet a kommenteket gépelni, biztos vagyok benne, hogy össze lehet utólag pakolni őket.
Title: A folytatás kezdete
Post by: MrPrise on 2007.November.23. 20:51:05
Holnap lesz pont 1 éve, hogy ebbe a topikba írtunk. "Unalmamban" elővettem a könyvet és elkezdtem IDA-ba beírni a megjegyzéseket.
Kedvcsinálóként itt egy kép:
[attach=1]
Title: Re: ROM0 kommentek a zöld könyvbõl
Post by: Zozosoft on 2007.November.23. 21:16:09
És van már valami jó tipp IDA EP-sítésére?
Title: Re: ROM0 kommentek a zöld könyvbõl
Post by: MrPrise on 2007.November.23. 21:32:46
Ha kézzel írja az ember a megjegyzéseket, akkor túl sok trükk nem kell ;-) Z80-at támogatja.
Title: Re: ROM0 kommentek a zöld könyvbõl
Post by: Zozosoft on 2007.November.23. 21:36:28
Z80-at támogatja.
És az olyan specialitásokat mint az EXOS hívás?
Title: Re: ROM0 kommentek a zöld könyvbõl
Post by: MrPrise on 2007.November.23. 22:29:36
Azzal még nem foglalkoztam, de szerintem meg tudom azt is csinálni majd.
Title: Re: ROM0 kommentek a zöld könyvbõl
Post by: Zozosoft on 2007.November.23. 22:38:25
Úgy általában jó lenne arra megoldás, hogy egy adott bájt(sorozat) után x db bájt az nem Z80 kód hanem egyéb adat.
Bonyolultabb amikor nem fix x bájtról van szó, henem mondjuk addig amíg pl nullával le nincs zárva a sorozat.

Ezután lehetne neki esni az eddig még nem visszafejtett ROM-oknak :-)
Title: Re: ROM0 kommentek a zöld könyvbõl
Post by: Zozosoft on 2007.November.23. 22:46:21
Hogy egy egyszerû konkrét példát mutassak, az EXDOS-ban van ilyen:
Code: [Select]
        CALL    0C0F2 ;LD DE,(IY+055H)
        DB 055H

A bonyolultra meg az IS-BASIC RST 10H-ja a példa. (http://www.ep128.hu/Ep_Konyv/Isbasic.htm#12)
Title: Re: ROM0 kommentek a zöld könyvbõl
Post by: MrPrise on 2007.November.23. 22:52:59
Az ilyen egyéb adatokat most is meg lehet adni lásd a képet.
[attach=1]
A trükk annyi, hogy ami szerinted kód ott nyomod a C-t, ami szerinted adat ott a D-t. Ilyenkor a D többszöri megnyomásával lehet váltogatni a DB,DW, DD stb között.
Egy gond van, bár ez az IDA működéséből adódik.
Ha megnézed a 0C008h-n lévő 5780h címet, akkor az tulajdonképpen a ROM0-ban lévő cím és ha P3-on van a ROM0, akkor 0D780h-nak felel meg.
Ha 0D780h lenne ott akkor az IDA simán tudja, hogy az egy offset a szegmensen belül (a beolvasott ROM-ból szegmenst kellett definiálni), mivel a ROM-ot 0xC000-ra töltöttem be. Így viszont nem tudja. Biztos van erre is valamilyen trükk, de még nem jöttem rá mi. Bűvészkedtem a szegmensekkel, de még nem az igazi.
Title: Re: ROM0 kommentek a zöld könyvbõl
Post by: MrPrise on 2007.November.23. 22:59:27
Sejtem már mire gondolsz.
Amikor egy "magasabb" szintű rutin, aminek több paramétert kellene átadni úgy kapja meg az adatokat, hogy a hívás utáni területen vannak az adatok. Ahhoz, hogy az ilyen hívások helyett szép, paraméteres függvényhívásokat lássunk, szerintem némi IDC-ben történő bütykölés szükséges, de a lényeg, hogy megoldható.
A cél gondolom az, hogy lefordítható assembly forrásunk legyen. Milyen fordítóval? HEASS vagy valamilyen PC-s Z80 assembler legyen a cél?
Gyanítom, hogy egy ilyen forráskód lefordítása Enterprise-on elég sok időt venne igénybe, talán célszerűbb lenne valamelyik PC-s assemblert megcélozni. Bár az ep128emu-t fel lehet kapcsolni max sebességre.
Title: Re: ROM0 kommentek a zöld könyvbõl
Post by: Zozosoft on 2007.November.23. 23:07:27
A trükk annyi, hogy ami szerinted kód ott nyomod a C-t, ami szerinted adat ott a D-t. Ilyenkor a D többszöri megnyomásával lehet váltogatni a DB,DW, DD stb között.
Ezt tudom, de azért van itt az asztalon ez a nagy doboz, hogy az dolgozzon helyettem :-)
Vagyis egyszerüen el lehessen magyarázni neki, és aztán csinálja meg automatán mindenütt.
Pl a DZ80-nak így lehet elmagyarázni az EXOS hívásokat. (Létezik hozzá pl Spectrum ROM-os fájl is, amiben vannak jó kis RST-k mint az IS-BASIC-ben :-) )
Title: Re: ROM0 kommentek a zöld könyvbõl
Post by: Zozosoft on 2007.November.23. 23:27:26
Ahhoz, hogy az ilyen hívások helyett szép, paraméteres függvényhívásokat lássunk
Ez eredetiben szerintem MACRO használatával volt megoldva. De elsõ körben jó az is ha utasítás+DB lesz belõle, a fõ lényeg, hogy ne kezdje utasításnak gondolni az adatokat.
A cél gondolom az, hogy lefordítható assembly forrásunk legyen.
Jól gondolod! Aztán jöhet a továbbfejlesztés :-)
Milyen fordítóval? HEASS vagy valamilyen PC-s Z80 assembler legyen a cél?
Gyanítom, hogy egy ilyen forráskód lefordítása Enterprise-on elég sok idõt venne igénybe, talán célszerûbb lenne valamelyik PC-s assemblert megcélozni. Bár az ep128emu-t fel lehet kapcsolni max sebességre.
Az EPDOS1-9, ami hasonló bonyolultságú (tömörítettlen formában 425K forrásszöveg, és 32K-s szinte csak kódból álló ROM lesz a vége), az HEASS-al 7.12Mhz-es gépen 30 másodperc. Ez szerintem nem túl sok idõ, így ragaszkodok az EP-hez :-)
Title: Re: ROM0 kommentek a zöld könyvbõl
Post by: MrPrise on 2007.November.24. 00:38:25
a fõ lényeg, hogy ne kezdje utasításnak gondolni az adatokat.
Nem teszi. A kód analizátora felismeri az ilyen 'halott' kódokat, ahová nem jutna el a vezérlés és automatikusan DB-t csinál belőle.

HEASS-al 7.12Mhz-es gépen 30 másodperc. Ez szerintem nem túl sok idõ, így ragaszkodok az EP-hez :-)
Ez tényleg elviselhető.
Jó játék lesz mire előállítjuk majd azt a forráskódot, amit lefordítva az eredivel byte szinten teljesen azonos bináris állományt kapunk ;-)
Title: Re: ROM0 kommentek a zöld könyvbõl
Post by: MrPrise on 2007.November.24. 00:41:09
Vagyis egyszerüen el lehessen magyarázni neki, és aztán csinálja meg automatán mindenütt.
Erre való az IDC. Ezzel lehet az IDA-t programozni. Nagyon hasonlít a C-hez. Ezzel akár azt is meg lehet csinálni, hogy olyan forrást csináljon az IDA ami változtatás nélkül fordítható a HEASS-szal pl. Még nem tudom hogyan, de tuti meg lehet ;-)
Title: Infók a rendszerszegmensről
Post by: MrPrise on 2007.November.24. 03:00:53
Na, ez sem rossz :-)
Bármilyen ROM vagy EP program betöltése után indítsd ezt el (File, IDC File)
Csinál egy új szegmenst ami a rendszerszegmenst képviseli (0x8000 és 0xc000 között). Minden hasznos címnek ad (majd) nevet és megjegyzéseket.
Egyelőre csak pár dolgot írtam bele, a megkezdett minta alapján akinek van kedve beírhatná az összes létező infót akár a zöld könyből, akár máshonnan.
Title: Re: ROM0 kommentek a zöld könyvbõl
Post by: Zozosoft on 2007.November.24. 12:14:07
Ez tetszik!
Egy kis segítséget most konvertáltam át HWP-bõl :-)
Title: Kibővített epsystem.idc
Post by: MrPrise on 2007.November.24. 13:25:09
Némi regex-es find&replace után az általad szerzett infókkal kiegészítve így néz ki. A nagyobb területek és a 24 bites címek leírását kikommenteztem egyelőre. Ezekre majd kitalálok valamit. A 24 bites cím gondolom DB,DW formában legyen. A nagyobb területekhez pedig lehet definiálni array-t.
Title: EPSystem.idc v0.1
Post by: MrPrise on 2007.November.25. 13:45:48
Itt az új verzió. Most már a területek is benne vannak.
Title: Re: ROM0 kommentek a zöld könyvbõl
Post by: MrPrise on 2007.November.25. 19:14:42
Zozo, nagyon jó ez az IDA! :-)
Definiáltam struktúrát a MODSOR-oknak.
Így jóval olvashatóbb a kód, lásd a képet.
[attach=1]
Ezen kívül a rendszerszegmensen 0xb900-től lévő alap LPT-t lehet definiálni MODSOR-ok tömbjeként.
Bárcsak meg lenne az egész zöld könyv szövege txt-ben...
Title: Re: ROM0 kommentek a zöld könyvbõl
Post by: Zozosoft on 2012.August.03. 12:04:11
Ezzel a projekttel mi a helyzet?
Lacika, legalább egy szkennelt PDF verziót lehetne?  :oops:
Title: Re: ROM0 kommentek a zöld könyvbõl
Post by: Lacika on 2012.August.03. 18:33:41
Ezzel a projekttel mi a helyzet?
Lacika, legalább egy szkennelt PDF verziót lehetne?  :oops:

Azt gondoltam, hogy kapok egy, a könyv listájával összeegyeztethetõ listát (szöveges állományban) kommentelésre...  :smt017
Title: Re: ROM0 kommentek a zöld könyvbõl
Post by: Zozosoft on 2012.August.03. 19:41:09
Elvileg ez volt már fent, meg szétküldtem is sokaknak...
Title: Re: ROM0 kommentek a zöld könyvbõl
Post by: Zozosoft on 2012.August.09. 14:05:54
Amíg nem lesz jobb, addig egy ilyen verzió (http://enterprise.iko.hu/books/Segment_0.pdf), hogy legyen valami kéznél, ami bárhonnan elérhetõ, ha nincs kéznél a könyv.

Most pár hónapig nem akarok szkennert látni  :twisted:
Title: Re: ROM0 kommentek a zöld könyvbõl
Post by: Lacika on 2012.August.11. 17:26:26
Elvileg ez volt már fent, meg szétküldtem is sokaknak...


Ezt tényleg megkaptam. Ott akadt el a dolog, hogy ez nem olyan formátumú, mint a könyvben. Ott benne vannak a memóriacímek is. Olyat nem lehet generálni.  :smt102
Title: Re: ROM0 kommentek a zöld könyvbõl
Post by: Zozosoft on 2012.August.15. 13:23:39
Quote from: Lacika
Ezt tényleg megkaptam. Ott akadt el a dolog, hogy ez nem olyan formátumú, mint a könyvben. Ott benne vannak a memóriacímek is. Olyat nem lehet generálni.  :smt102
Van benne pont elég memóriacím, címkévé konvertálva, amennyi elég a tájékozódáshoz. (Lényegében a csillagos címek a könyvben.)
Nem kell a "reszlit" reprodukálni, fordítható, kommentezett forrásszöveg a cél.
Elsõ fejezet kész. Itt-ott kellett is még hexaszámokat címkévé konvertálni, adatbájtokat rendezni, stb. A szöveget is néhol pontosítottam.
Tripla felkiáltójellel kerülnek be (keresés megkönnyítésére) a felfedezett hibák, ill. EXOS 2.0-2.1 eltérések.

Eddig egy új eltérés lett felfedezve, a SERIAL BAUD alapértéke 2.0-ban 13, 15 helyett, azaz 7200 baud 9600 helyett.

Ha valaki nagyon unatkozik, akkor a 291. oldaltól kezdõdõ kiegészítõ részeket vethetné OCR kezelésbe  :oops:

(A fájlokat a Programmers notepad (http://www.pnotepad.org/)-ban érdemes nézni, majd ha kész lesz, akkor nyomok rá tab-space konverziót.)
Title: Re: ROM0 kommentek a zöld könyvbõl
Post by: Lacika on 2012.August.15. 13:57:52
Eddig egy új eltérés lett felfedezve, a SERIAL BAUD alapértéke 2.0-ban 13, 15 helyett, azaz 7200 baud 9600 helyett.

És tud egyáltalán gyorsabbat? Miért nem a leggyorsabb mód az alapértelmezett?
Title: Re: ROM0 kommentek a zöld könyvbõl
Post by: Zozosoft on 2012.August.15. 14:11:45
És tud egyáltalán gyorsabbat? Miért nem a leggyorsabb mód az alapértelmezett?
Tud. Érdekes, az EXOS 2.0 leírás szerint 9600 az alapértelmezett. (http://enterprise.iko.hu/technical/ET15-6_EXOS_20_Serial-Network_Driver.pdf)
Lehet, hogy csak elgépelték a forrásszövegben? :-) aztán a 2.1-re kijavították.
Title: Re: ROM0 kommentek a zöld könyvbõl
Post by: Zozosoft on 2012.August.16. 16:46:59
Egy friss pontosítást kiemelnék, mert anno el is akadtam itt a könyv olvasásában  :oops:
Ha elkezdi az ember olvasni az elejétõl, hogy mi történik bekapcsoláskor, a 14. oldalnál eljut oda, hogy elugrik a ROM1-be... és mivel a könyv következõ része nem jelenhetett meg  :evil: , így nem volt meg az összefüggés, hogyan jön a 20. oldal környékén az eszközlánc felépítése, meg a ROM-ok RAM igényének kielégítése.

A pontosított magyarázó szöveg a 14. oldal elejéhez:
   ;Ha Z=0, akkor a ROM1-ben lévõ inicializáló rutint hívja. Ez
   ;elsõként C=20h resetjelzõvel végrehajt egy EXOS 0 (reset) hívást,
   ;amely felépíti az eszközláncot, valamint kielégíti a ROM-ok RAM
   ;igényét. Ezután írja ki az "ENTERPRISE" feliratot, ha nem törölt a
   ;kiírást engedélyezõ változó. Végül sorra meghívja a ROM-okat az 1-es
   ;hidegindítás akciókóddal, amíg valamelyik át nem veszi a vezérlést.
   ;Ha egyik sem vette át a vezérlést, akkor a beépített szövegszerkesztõ
   ;(WP) program indul el, ami a ROM lista végén áll.
   ;Ha Z=1, akkor az EXOS 0 rutint hívja a C-ben megadott resetjelzõvel.

Tehát ha az inicializálás folytatását akarjuk követni, akkor egy EXOS 0-val kell folytatni az olvasását a 41. oldalon.

RAM igénylésekkel kapcsolatban is vannak még tisztázatlan részek, amelyek úgy tûnik se itt a visszafejtésben, se a Gépi Kódú Programozás EXOS boncolásában nem kerültek terítékre...
Title: Re: ROM0 kommentek a zöld könyvbõl
Post by: Zozosoft on 2012.August.18. 10:48:40
RAM igénylésekkel kapcsolatban is vannak még tisztázatlan részek, amelyek úgy tûnik se itt a visszafejtésben, se a Gépi Kódú Programozás EXOS boncolásában nem kerültek terítékre...
Akkor itt van letisztázva ez a rész: számos lánc szerû adat struktúrát ismerünk már, de úgy tûnik egy kimaradt az eddigi könyvekbõl: Az EXOS bõvítõk részére felhasznált RAM nyilvántartása. Egyazon szegmens csoportban lesz elhelyezve a ROM bõvítõknek kiutalt rendszerszegmensen kívüli területek, és a betölthetõ  abszolút (6-os fejlécû) és áthelyezhetõ (7-es fejlécû) rendszerbõvítõk. A szegmenslánc kezdetét a BF99h (2.1) / BF9Dh (2.0) címen tárolja, 0 ha még nincs ilyen.
A RAM igényt kielégítõ rutin (C349h a 2.1-es ROM-ban, C346h a 2.0-ban), alapból felülrõl tölti be a szegmenseket, azonban lehetséges a szegmens elejét is kérni, ezt használja a rendszerbõvítõ betöltõ rutin abszolút bõvítõ betöltésekor. Új szegmenst akkor nyit meg, ha az addig használtakban nincs elég hely, ill. abszolút bõvítõ esetén ha a szegmensek eleje már nem szabad.
Példával nézve:
Alap 128-as gépen van egy ROM ami 8000 bájtot kér 1-es lapon, ez az F9h szegmens végében lesz kiutalva.
Ha ez után egy 2000 bájtos abszolút rendszerbõvítõt töltünk be, az a F9h szegmens elejébe kerül be.
Ezután egy újabb 2000 bájtos abszolút bõvítõt betöltve, az már az FAh szegmens elejére kerül, mivel hiába férne be az F9h-be, a szegmens elejére kell töltõdnie.
Ezután egy 2000 bájtos áthelyezhetõ bõvítõt betöltve, az a F9h szegmensbe fog kerülni a ROM bõvítõ által használt terület alá.