OldComp.cz

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


Právě je 28.03.2024, 20:01

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




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 25 ]  Přejít na stránku 1, 2  Další
Autor Zpráva
 Předmět příspěvku: Jak nadatlovat strojový kód?
PříspěvekNapsal: 19.02.2018, 18:32 
Offline
Radil

Registrován: 31.01.2018, 01:33
Příspěvky: 483
Bydliště: Praha
Has thanked: 179 times
Been thanked: 497 times
Dobré odpoledne,
moc se omlouvám, že budu za trotla, ale jako dítě jsem u ZX Spectra zamrznul u základu Basicu a když jsem si chtěl z Amatérských rádií předatlovat nějaké zajímavé složitější programy, nikdy jsem neuměl předatlovat strojový kód.
Omlouvám se tedy za následující lajcký, ale upřímný dotaz:
Pokud je část programu napsána v Basicu a následuje pak část se strojovým kódem - např.:
...
100 GO SUB 1200
110 GO SUB 1100
120 IF a<57 RND a>51 THEN GO TO 110
130 GO 8U8 1.500
140 GO 5UB 1800
150 GO TO 110
256 REM
800 PRINT •S;xs; RETURN
...atd.:
a pak
výpis strojového kódu, např.:
...
46528 ED 72 B6 7C B6 C1 CD 6C
46536 B6 10 05 CD 6C B6 18 05
46544 CD 6C 86 16 18 E6 10 02
46552 1E 07 3A 56 B5 4F B6 CD
46560 08 C9 3A 54 B5 80 47 3A
...
umím předatlovat část v Basicu, ale vůbec netuším, jak a kam předatlovat ten strojový kód.
Dokázali byste mi mooooc prosím poradit tuto určitě základní věc, (kterou skutečně neumím) krok po kroku? Tak, abych dokázal takto napsané programy z Amatérských rádií předatlovat, spustit a uložit...
Děkuji Vám
Láďa


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Jak nadatlovat strojový kód?
PříspěvekNapsal: 19.02.2018, 20:31 
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
přímo z BASIC to jde pomocí poke, můžeš si udělat smyčku a pak pole s daty a pomocí poke to naskládat do RAMky, musíš ale hex hodnoty převést na decimální.

syntaxe je následující

POKE addresa, hodnota

//hlavně pozor na tiskové chyby GO 8U8 je GO SUB, ale tokeny Tě do 8U8 vlastně ani nepustí :)

///Ještě napiš z kterého amára to je, ať víme víc, oč tam jde a jak na to.

////ale RND a AND už by mohl být problém, vlastně tam je RAND

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


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Jak nadatlovat strojový kód?
PříspěvekNapsal: 19.02.2018, 21:13 
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
Aha, to bude ono, tak v tom HEXu ty chyby nenajde nikdo, jedině obrázkový sken, nebo papírový originál.

Taky se dával stroják do REM řádků, ale tam byl problém s adresou, kde to vlastně je uloženo.

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


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Jak nadatlovat strojový kód?
PříspěvekNapsal: 19.02.2018, 22:38 
Offline
Radil

Registrován: 31.01.2018, 01:33
Příspěvky: 483
Bydliště: Praha
Has thanked: 179 times
Been thanked: 497 times
Děkuji, ano, je to splašený OCR :lol:
Bylo to pro příklad.
Jedná se mi o to obecně a když bych měl být konkrétní, tak např. AR A8/90 a "program CBD" od pana Věříše. Nebo v ME90 (Zelená ročenka AR) str. 60 "Minigraf-ZX Spectrum"
Jako kluk jsem si jej chtěl přepsat, basic jsem zvládnul, ale stroják už jsem přepsat nedokázal. Teď jsem se ke gumáku vrátil
a jsem stále na stejném levelu :lol:
Děkuji za osvětu :+)


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Jak nadatlovat strojový kód?
PříspěvekNapsal: 20.02.2018, 02:32 
Offline
Pan Generální
Uživatelský avatar

Registrován: 18.05.2013, 14:56
Příspěvky: 2331
Has thanked: 303 times
Been thanked: 637 times
Jde o předatlování programu, který něco konkrétního dělá, nebo o naučení se strojáku, resp. assembleru?

Pokud o to druhé, tak doporučuji začít programem Prometheus + knihou Assembler a ZX Spectrum.

Prometheus vč. manuálu
http://www.worldofspectrum.org/infoseek ... id=0025427

A pěkná ověřená učebnice se spoustou příkladů
https://softhouse.speccy.cz/documents/A ... trum_1.htm

... a co se týče softwaru k plotrům, tak to už snad dávno není potřeba přepisovat, určitě někde bude v TAPce, třeba tady u sebe https://cygnus.speccy.cz/popis_printer-aritma0507.php mám mzxr.tap (úplně dole) pro plotr Aritma 0507.

_________________
https://cygnus.speccy.cz ZX Spectrum 128k, Betadisk, DivIDE, ESXDOS


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Jak nadatlovat strojový kód?
PříspěvekNapsal: 20.02.2018, 09:38 
Offline
Radil

Registrován: 31.01.2018, 01:33
Příspěvky: 483
Bydliště: Praha
Has thanked: 179 times
Been thanked: 497 times
Děkuji,
ano, jde mi v prvním řadě o předatlování programu (strojového kódu), který konkrétně něco dělá, neboť jsem nikdy nedokázal tu posloupnost změtí čísel kamkoliv nadatlovat.

A mooooc děkuji za odkazy, na které rád kouknu, a rád do assembleru proniknu.

S pozdravem
Láďa


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Jak nadatlovat strojový kód?
PříspěvekNapsal: 20.02.2018, 09:51 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
A ja zase doporucujem MRS a knihu Ladislav Zajicek - Bity do bytu :)

MRS vratane manualov sa da priamo stiahnut tu:
https://busy.speccy.cz/tvorba/mrs.htm

Ale podla mna, pokial by sa chcel programovaniu v asembleri venovat serioznejsie, tak je skoda na toto nevyuzit vyhody a pohodlie cross-developingu na dnesnych vykonnych mnohobitovych pocitacoch. Pre kompilovanie programov v Z80 asembleri doporucujem SjASMPlus:
https://github.com/z00m128/sjasmplus
Je to open-source kompiler pre lubovolnu mnohobitovu platformu, s podporou v komunite spektristov a vystup z neho sa da priamo nahrat do niektoreho z emulatorov ktore su dnes uz na velmi dobrej urovni a obvykle aj s debuggerom takze nie je problem v nom program ladit.

Inak dalsia moznost, ked uz mas to OCR, je vyuzit nejaku utilitku (napr. bas2tap) ktora plaintextovy subor s napisanym basicom sama "nadatluje" priamo do programu ulozeneho v tap subore:
http://www.worldofspectrum.org/pub/sinc ... 25-win.zip
http://www.worldofspectrum.org/pub/sinc ... -linux.zip
A su aj utilitky co vedia previest hex-dump do binarky, napr.
https://busy.speccy.cz/download/pcutils.rar => subor hex2cod.exe


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Jak nadatlovat strojový kód?
PříspěvekNapsal: 20.02.2018, 10:23 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 12.05.2013, 19:27
Příspěvky: 1011
Has thanked: 231 times
Been thanked: 221 times
Ladislav píše:
Dobré odpoledne,
moc se omlouvám, že budu za trotla, ale jako dítě jsem u ZX Spectra zamrznul u základu Basicu a když jsem si chtěl z Amatérských rádií předatlovat nějaké zajímavé složitější programy, nikdy jsem neuměl předatlovat strojový kód.
Omlouvám se tedy za následující lajcký, ale upřímný dotaz:
Pokud je část programu napsána v Basicu a následuje pak část se strojovým kódem - např.:
...
100 GO SUB 1200
110 GO SUB 1100
120 IF a<57 RND a>51 THEN GO TO 110
130 GO 8U8 1.500
140 GO 5UB 1800
150 GO TO 110
256 REM
800 PRINT •S;xs; RETURN
...atd.:
a pak
výpis strojového kódu, např.:
...
46528 ED 72 B6 7C B6 C1 CD 6C
46536 B6 10 05 CD 6C B6 18 05
46544 CD 6C 86 16 18 E6 10 02
46552 1E 07 3A 56 B5 4F B6 CD
46560 08 C9 3A 54 B5 80 47 3A
...
umím předatlovat část v Basicu, ale vůbec netuším, jak a kam předatlovat ten strojový kód.
Dokázali byste mi mooooc prosím poradit tuto určitě základní věc, (kterou skutečně neumím) krok po kroku? Tak, abych dokázal takto napsané programy z Amatérských rádií předatlovat, spustit a uložit...
Děkuji Vám
Láďa


Stroják nejjednodušeji nadatluješ tak, že v Basicu napíšeš někam mimo program, třeba od řádku 9000 smyčku, která načítá hodnoty z dat a pomocí POKE je vkládá do paměti. Před tím si ale musíš ještě všechny hodnoty převést do dekadické soustavy, třeba pomocí kalkulačky:

9000 FOR f=46528 TO 46528+1000 (pokud je např. začátek strojáku od 46528 a jeho délka je 1000 bajtů, tj. 46528+1000=konečná adresa 47528)
9010 READ a: POKE f,a
9020 NEXT f
9030 DATA 237,48,182,124,182,193,205,108
9040 DATA ..... a tak dále. Čísla jsou dekadické ekvivalenty k hexa ED,72,B6,7C,B6,C1,CD,6C

potom samozřejmě GO TO 9000, aby se smyčka provedla a data se načetly do paměti a stroják se spouští třeba RANDOMIZE USR adresa, nebo si ho někde v programu spouští samotný Basic přávě funkcí USR adresa.

_________________
Have you played ATARI today?


Naposledy upravil Aki dne 20.02.2018, 15:07, celkově upraveno 1

Nahoru
 Profil  
 
 Předmět příspěvku: Re: Jak nadatlovat strojový kód?
PříspěvekNapsal: 20.02.2018, 12:07 
Offline
Pan Generální
Uživatelský avatar

Registrován: 11.06.2013, 15:27
Příspěvky: 3025
Has thanked: 2192 times
Been thanked: 894 times
Pro prepis kratkych useku kodu v basicu pomuze tahle tabulka:

Kód:
+---------------------------------------------------------------------+
|       0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F |
|   +-----------------------------------------------------------------+
| 0 |   0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15 |
| 1 |  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31 |
| 2 |  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47 |
| 3 |  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63 |
| 4 |  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79 |
| 5 |  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95 |
| 6 |  96  97  98  99 100 101 102 103 104 105 106 107 108 109 110 111 |
| 7 | 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
| 8 | 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
| 9 | 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 |
| A | 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 |
| B | 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 |
| C | 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 |
| D | 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 |
| E | 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 |
| F | 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 |
+---+-----------------------------------------------------------------+

_________________
// na co myslím, když sedím u oldkompů: Blood Products from Genetic Vaccine Recipients


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Jak nadatlovat strojový kód?
PříspěvekNapsal: 20.02.2018, 14:57 
Offline
Pan Generální

Registrován: 01.12.2017, 21:01
Příspěvky: 2062
Bydliště: BA-Petržalka :(
Has thanked: 18 times
Been thanked: 323 times
Niekedy ani 4800 DPI nestačí, keď je OCR program jedinec s IQ 60. Myslím že to bol ABBY Fine reader. Sken z novín, 600 DPI. Text prepísalo ako tak dobre, ale v nadpise veľkom ako krava to namiesto G dalo C. Nechápal som, bol to štandardný font Times new Roman, a OOOOBROOOVSKEEEE písmo.

K tomu prepisovaniu kódu. V prvom čísle príslušného časopisu je určite program v BASICu, ktorý to prepíše do strojového kódu. Ak nieje, nieje problém ho naprogramovať. Ono už ten začiatok vyzerá ako práve ten program na prepis, a výpis ako dáta aj s adresou kde majú byť. Len doplniť čísla riadkov a príkaz DATA.

asi takto:

5000 DATA 46528,"ED","72","B6","7C","B6","C1","CD","6C"
5001 DATA 46536...

alebo:
5000 DATA 46528,"ED 72 B6 7C B6 C1 CD 6C"
5001 DATA 46536...

prípadne:
5000 DATA 46528,"ED72B67CB6C1CD6C"
5001 DATA 46536...

Keby si dal celý výpis toho BASICu, presne by som vedel, aký formát dát to používa.

_________________
Oznamy o novom príspevku mi na mail chodia iba sporadicky, takže keď sa nehlásim v diskusii, tak je to tým. V 80% nepríde mail vôbec.


Naposledy upravil PotPalo dne 20.02.2018, 15:09, celkově upraveno 2

Nahoru
 Profil  
 
 Předmět příspěvku: Re: Jak nadatlovat strojový kód?
PříspěvekNapsal: 20.02.2018, 15:04 
Offline
Site Admin
Uživatelský avatar

Registrován: 11.05.2013, 23:48
Příspěvky: 10111
Bydliště: Praha
Has thanked: 1953 times
Been thanked: 1517 times
tommik píše:
Problém bude jak přečíst ty skeny že? Kamarád se živí jako operátor DTP a říkal, že na rozpoznávání textu je třeba skenovat 600 DPI...

Prdlajs. Záleží na kvalitě "zdroje" a OCR softu. Ti udělám OCR klidně i ze 120DPI, když to má normální font a není to rozpité na zbytkovém recyklátu.

_________________
Amiga/Amstrad/Atari/Commodore/Mac/Nintendo/PS/PC/Sega/Tandy/ZX


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Jak nadatlovat strojový kód?
PříspěvekNapsal: 20.02.2018, 18:59 
Offline
Pan Generální
Uživatelský avatar

Registrován: 23.03.2014, 20:13
Příspěvky: 2773
Has thanked: 224 times
Been thanked: 601 times
Jen od oka by ten program mohl vypadat takhle (netestováno!):
Kód:
10 CLEAR 32767
20 LET a=10: LET b=11: LET c=12
30 LET d=13: LET e=14: LET f=15:
40 READ g: IF g=0 THEN STOP
50 READ d$
60 FOR i=0 TO 7
70 POKE g+i, VAL(d$(i*3+1)) * 16 + VAL(d$(i*3+2))
80 NEXT i
90 GOTO 40
100 DATA 46528, "ED 72 B6 7C B6 C1 CD 6C"
110 DATA 46536, "B6 10 05 CD 6C B6 18 05"
120 DATA 46544, "CD 6C 86 16 18 E6 10 02"
130 DATA 46552, "1E 07 3A 56 B5 4F B6 CD"
140 DATA 46560, "08 C9 3A 54 B5 80 47 3A"
...
999 DATA 0, "Konec dat."

Na každém řádku máš adresu v paměti a osm po sobě následujících bajtů které je od ní potřeba zapsat. Dodržuj mezi nimi v datech vždy jednu mezeru, protože záleží na jejich přesné pozici v řetězci. Po napoukování bude užitečné ten úsek paměti ihned nahrát na kazetu, abys to nemusel psát znova. A ten program také, pokud nebude ten stroják fungovat a budeš ho opravovat, ať to nepíšeš pokaždé celé.

Toho OCR bych se také obával, je vidět že dělá chyby, tak pro něj nebude problém zaměnit třeba B a 8. Bude lepší luštit to ze scanu nebo ještě lépe přímo z časopisu.

Viděl jsem kdysi vylepšený program, kde za samotnými bajty následoval ještě kontrolní součet pro připad chyby tisku nebo opisování, takže se hned poznalo na kterém řádku něco nesedí.

_________________
Plesnivý sýr z Tesca, zatuchlé kuřecí řízky z Albertu, oslizlé hovězí a myší trus z Lidlu.
Nákup potravinářské inspekce v ČR, říjen 2023.


Naposledy upravil faraon dne 20.02.2018, 22:09, celkově upraveno 2

Nahoru
 Profil  
 
 Předmět příspěvku: Re: Jak nadatlovat strojový kód?
PříspěvekNapsal: 20.02.2018, 20:44 
Offline
Pan Generální

Registrován: 01.12.2017, 21:01
Příspěvky: 2062
Bydliště: BA-Petržalka :(
Has thanked: 18 times
Been thanked: 323 times
Dovolil som si opraviť zopár chybičiek. Netestované.
...
40 READ g: IF g=0 THEN STOP
50 READ d$
60 FOR i=0 TO 7
70 POKE g+i, VAL(d$(i*3+1)) * 16 + VAL(d$(i*3+2))
...

_________________
Oznamy o novom príspevku mi na mail chodia iba sporadicky, takže keď sa nehlásim v diskusii, tak je to tým. V 80% nepríde mail vôbec.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Jak nadatlovat strojový kód?
PříspěvekNapsal: 20.02.2018, 21:19 
Offline
Kecálek

Registrován: 10.07.2014, 01:57
Příspěvky: 168
Has thanked: 25 times
Been thanked: 225 times
faraon píše:
Adresa=a. Fyzikářka mě neměla ráda, protože když jsem si nepamatoval správné písmenko do vzorečku, tak jsem si tu "proměnnou" prostě pojmenoval podle vlastního názvosloví. A ona se v tom potom nevyznala, i když mi vyšel správný výsledek :lol:

Ale s tou šestnáctkou máš pravdu, 256 je blbost. Hned jsem to opravil!

aj s tym g ma pravdu. zjavne nerozumies co presne program robi (a ani si ho neskusal, zistil by si ze "integer out of range 70:1" ;])

premenna a je pouzita na uchovanie hodnoty nibblu 0xA cize 10 (vid riadky 20 a 30), cize tentokrat sa ti nevyplati vymyslat si premennu adresa s menom a ;]


@factor6: len pre uplnost.. (a aby sme zbytocne citatelov nemiatli) "for i=0 to 10" sa vykona 11 krat a nie 10 krat, takze tvoj program zapisuje nie 1000 hodnot ale 1001 hodnot.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Jak nadatlovat strojový kód?
PříspěvekNapsal: 20.02.2018, 22:08 
Offline
Pan Generální
Uživatelský avatar

Registrován: 23.03.2014, 20:13
Příspěvky: 2773
Has thanked: 224 times
Been thanked: 601 times
Nojó, síla zvyku :x
A skutečně jsem ho nezkoušel, jak jsem tam zdůraznil, psal jsem to z hlavy.

_________________
Plesnivý sýr z Tesca, zatuchlé kuřecí řízky z Albertu, oslizlé hovězí a myší trus z Lidlu.
Nákup potravinářské inspekce v ČR, říjen 2023.


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ů: 25 ]  Přejít na stránku 1, 2  Další

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