OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 28.03.2024, 13:26

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 13 ] 
Autor Zpráva
PříspěvekNapsal: 26.04.2018, 20:44 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 16.03.2017, 11:36
Příspěvky: 1493
Bydliště: Kósek vod Brna
Has thanked: 101 times
Been thanked: 112 times
2x mě nikdo neodpověděl na dotaz ohledně JAVy a tak jsem zadal vyhledávání a zjistil, že se to tu moc nemusí. Nikdy jsem v tom nic nedělal a nechci v tom utápět moc energie, ale potřeboval bych upravit emulátor pro VDU MK14ky. Jde o přepsání 4 konstant a o přeložení zpět do JARu, nebo uvítám alespoň radu čím to přeložit a trochu nasměrovat.

//nebo jestli to jde, tak jak ty konstanty najít v tom JARu

_________________
TEMS-49, PMI-80, rep. MK14, ZX81, ZXspectrum+, TI58, MZ-800


Nahoru
 Profil  
 
PříspěvekNapsal: 26.04.2018, 21:00 
Offline
Profík
Uživatelský avatar

Registrován: 31.08.2014, 16:27
Příspěvky: 993
Bydliště: Praha
Has thanked: 63 times
Been thanked: 371 times
Konstanty v JARu nepřepíšeš, obzvlášť je-li komprimovaný.

Co tedy potřebuješ...

1. Java Development Kit (JDK, abys mohl překládat programy v Javě. Ten obsahuje překladač javac (bin/javac.exe), který akceptuje .java soubory a vyrobí z nich .class soubory)
2. NetBeans (Vývojové prostředí)

Obojí se dá stáhnout jako jeden balík zde: http://www.oracle.com/technetwork/java/javase/downloads/jdk-netbeans-jsp-142931.html
Pak v NetBeans vytvoříš nový projekt (z existujících zdrojáků), zvolíš která třída je hlavní a provedeš BUILD projektu. Tím vznikne .jar soubor.

Výše uvedené je samozřejmě teoretizování, protože ten emulátor může používat vlastní skripty na sestavení. JDK ale budeš potřebovat určitě.


Nahoru
 Profil  
 
PříspěvekNapsal: 26.04.2018, 21:53 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 16.03.2017, 11:36
Příspěvky: 1493
Bydliště: Kósek vod Brna
Has thanked: 101 times
Been thanked: 112 times
Dík za radu. Našel jsem ty konstanty v .class souboru. Můžu je přepsat tam a ušetřit si překlad java>class?

_________________
TEMS-49, PMI-80, rep. MK14, ZX81, ZXspectrum+, TI58, MZ-800


Nahoru
 Profil  
 
PříspěvekNapsal: 26.04.2018, 22:56 
Offline
Profík
Uživatelský avatar

Registrován: 31.08.2014, 16:27
Příspěvky: 993
Bydliště: Praha
Has thanked: 63 times
Been thanked: 371 times
Můžeš to klidně zkusit. V lepším případě to bude fungovat, v horším jsou .class soubory chráněné kontrolním součtem proti neoprávněné manipulaci, a pak to při spuštění vyhodí výjimku.


Nahoru
 Profil  
 
PříspěvekNapsal: 27.04.2018, 07:08 
Offline
Kecka

Registrován: 08.06.2016, 18:25
Příspěvky: 48
Has thanked: 5 times
Been thanked: 21 times
Konstanty jsou v .class souboru uložené na více místech, buď v tzv. "constant pool", který je hned na začátku .class souboru, nebo jsou součásti instrukce - platí pouze pro čísla -32768 až 32767. Přímá změna v .class souboru je možná, žádné kontrolní součty tam nejsou.

_________________
http://maximalne.8u.cz


Nahoru
 Profil  
 
PříspěvekNapsal: 27.04.2018, 08:46 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 16.03.2017, 11:36
Příspěvky: 1493
Bydliště: Kósek vod Brna
Has thanked: 101 times
Been thanked: 112 times
Nakonec jsem to dokázal přeložit se vším všudy a tady jsou dva obrázky, který mě dnes potěšily. Je ale divné, že výsledek má poloviční data, než ten původní a přesto to funguje.

//Baktra, ještě jednou děkuji za tip


Přílohy:
obrdne.png
obrdne.png [ 7.18 KiB | Zobrazeno 8966 krát ]
java.png
java.png [ 90.06 KiB | Zobrazeno 8966 krát ]

_________________
TEMS-49, PMI-80, rep. MK14, ZX81, ZXspectrum+, TI58, MZ-800
Nahoru
 Profil  
 
PříspěvekNapsal: 27.04.2018, 18:18 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 16.03.2017, 11:36
Příspěvky: 1493
Bydliště: Kósek vod Brna
Has thanked: 101 times
Been thanked: 112 times
Tak se mě otevřela cesta na úpravu vstupních dat. Tento systém importuje HEX soubory ve formátu 4 znaky adresa, mezera pak 16 hex hodnot oddělených mezerou. Musel jsem binárku vyexportovat jako HEXtext a v editoru doplnit sloupec s adresama, čili práce tak na 2 minuty, než jsem dostal přeložený kód do emulátoru. Zkusím, jestli to půjde upravit na binárku, případně intelHEX.

_________________
TEMS-49, PMI-80, rep. MK14, ZX81, ZXspectrum+, TI58, MZ-800


Nahoru
 Profil  
 
PříspěvekNapsal: 28.04.2018, 07:58 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 14.05.2013, 19:10
Příspěvky: 1486
Bydliště: Kurim
Has thanked: 828 times
Been thanked: 577 times
Na konverzi do Intel HEX je hormada utilitek.

_________________
http://www.8bity.cz


Nahoru
 Profil  
 
PříspěvekNapsal: 28.04.2018, 19:41 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 16.03.2017, 11:36
Příspěvky: 1493
Bydliště: Kósek vod Brna
Has thanked: 101 times
Been thanked: 112 times
Já vím,taky to tak dělám, ale zdržuje to. Chci aby ten simulátor uměl přímo výstup z assembleru, bez nějakého překódovávání. Když už ho umím přeložit (ten JAVA projekt), tak ho ten intelHEX taky naučím číst

Kód:
   /**
    * Reads one line of a hex dump into the given memory area. The hex dump starts with the
    * absolute address, followed by one or more bytes consisting of 1-2 hex digits.
    * @param str The string with the hex data to read.
    * @return int Start address for this hex line.
    */
   public int read(String str) throws HexFormatException {
      StringTokenizer st = new StringTokenizer(str, " ,-\t");
      boolean firstToken = true;
      int lineStartAddress = -1;
      
      while (st.hasMoreTokens()) {
         String s = st.nextToken().trim();
         
         // stop at comments (even if first token)
         if (s.startsWith(";") || s.startsWith("|") || s.startsWith(".")) {
            break;
         }
         // skip labels in the input file (looks like a .dis file to re-import)
         if (s.startsWith("L$") || s.endsWith(":")) {
            continue;
         }

         // first token is target memory address of data
         if (firstToken) {
            workingAddress = HexHelper.toInt(s);
            lineStartAddress = workingAddress;
            firstToken = false;
         } else {
            memory.set(workingAddress, HexHelper.toByte(s));
            workingAddress++;
         }
      }
      
      return lineStartAddress;
   }
}

_________________
TEMS-49, PMI-80, rep. MK14, ZX81, ZXspectrum+, TI58, MZ-800


Nahoru
 Profil  
 
PříspěvekNapsal: 28.04.2018, 19:49 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 16.03.2017, 11:36
Příspěvky: 1493
Bydliště: Kósek vod Brna
Has thanked: 101 times
Been thanked: 112 times
To, co to čte vypdá takto:

Kód:
0000 08 C4 0E 35 C4 00 31 C4 FF C8 1C C4 20 CD 01 B8
0010 16 9C F8 C4 0F 35 C4 00 31 C4 FF C8 0A C4 20 CD
0020 01 B8 04 9C F8 90 01 00 C4 0E 35 C4 00 31 C4 10
0030 C8 F5 C4 3D CD 01 B8 EF 9C F8 C4 0E 35 C4 00 31
0040 C4 00 37 C4 6E 33 3F C4 0E 35 C4 0F 31 C4 00 37
0050 C4 6E 33 3F C4 0F 35 C4 00 31 C4 00 37 C4 6E 33
0060 3F C4 0F 35 C4 0F 31 C4 00 37 C4 6E 33 3F 00 C4
0070 10 C8 0B C4 49 CD 10 B8 05 9C F8 3F 90 F1 00

_________________
TEMS-49, PMI-80, rep. MK14, ZX81, ZXspectrum+, TI58, MZ-800


Nahoru
 Profil  
 
PříspěvekNapsal: 28.04.2018, 20:22 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 16.03.2017, 11:36
Příspěvky: 1493
Bydliště: Kósek vod Brna
Has thanked: 101 times
Been thanked: 112 times
No, vlastně už to někdo udělal za mně

https://github.com/j123b567/java-intelhex-parser/tree/master/src/cz/jaybee/intelhex

_________________
TEMS-49, PMI-80, rep. MK14, ZX81, ZXspectrum+, TI58, MZ-800


Nahoru
 Profil  
 
PříspěvekNapsal: 29.04.2018, 08:17 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 14.05.2013, 19:10
Příspěvky: 1486
Bydliště: Kurim
Has thanked: 828 times
Been thanked: 577 times
Ten kus kodu nahore ale neni Intel HEX, je to normalni vypis hexa hodnot. Intel HEX ma adresy a kontrolni soucty, ja mam Intel HEX celkem rad prave kvuli nim.

_________________
http://www.8bity.cz


Nahoru
 Profil  
 
PříspěvekNapsal: 29.04.2018, 10:46 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 16.03.2017, 11:36
Příspěvky: 1493
Bydliště: Kósek vod Brna
Has thanked: 101 times
Been thanked: 112 times
No právě, používá to výpis a proto to chci upravit na intelHEX, který leze z assembleru, abych to nemusel převádět. Nebo snad TASM umí výpis?

_________________
TEMS-49, PMI-80, rep. MK14, ZX81, ZXspectrum+, TI58, MZ-800


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 13 ] 

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 3 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz