OldComp.cz

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

Reklama!

Právě je 24 úno 2019, 02:14

Všechny časy jsou v UTC + 1 hodina




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 64 ]  Přejít na stránku Předchozí  1, 2, 3, 4, 5  Další
Autor Zpráva
 Předmět příspěvku: Re: PROMETHEUS - zdrojový kód
PříspěvekNapsal: 03 pro 2018, 12:54 
Offline
Pan Generální

Registrován: 22 kvě 2013, 20:14
Příspěvky: 2103
Bydliště: Bratislava
Has thanked: 229 times
Been thanked: 393 times
rombor píše:
Pavel.Krivanek píše:
Docela by mě zajímalo, jakým způsobem tu tabulku pro tak rozsáhlý program zkonstruoval (přepočítávaných míst je asi 1200).
Neviem, ako to robil Universum, ale na CP/M sa to bežne robilo tak, že sa program preložil na dva krát od dvoch adries, obvykle vzdialených 0100h, a potom sa tieto dve binárky prehnali cez Program, ktorý hľadal práve tieto rozdiely, kde boli určite absolútne adresy a vytvoril tak relokačnú tabuľku.
Presne tak, staci program napisat uplne klasicky (s absolutnymi adresami), skompilovat dve verzie na dve rozne adresy, a potom uz len jedna kratka rutinka obe verzie porovna a zapise rozdiely, nuz a druha jednoducha rutinka, ktora bude so zoznamom zistenych rozdielov sucastou vysledneho kodu, len popripocita vhodnu konstantu vsade tam kam ukazuje zoznam rozdielov. A je to :) Vyhodou je, ze po takejto "instalacii" programu mozno rutinku aj so zoznamom rozdielov zahodit, lebo uz nie su potrebne a nimi zabratu pamet uvolnit.

Trosku mimo temu: Ja by som program prelozil na adresu nie vyssiu o #0100, ale napr. o #0201, a vsade kde by bol rozdiel 2, to by bol vyssi bajt, a vsade kde iba 1, to by bol nizsi bajt. Vychytalo by to aj rozne sposoby typu LD H,vyssi_bajt_adresy. Ale si tiez myslim, ze z cisto praktickeho hladiska uplne postaci moznost posuvania programu v pameti po #0100 bajtoch.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PROMETHEUS - zdrojový kód
PříspěvekNapsal: 09 pro 2018, 22:36 
Offline
Kecka

Registrován: 03 črc 2018, 22:06
Příspěvky: 39
Has thanked: 20 times
Been thanked: 44 times
Použil jsem data ze stávající rekokační tabulky k tomu, abych opravil nějaká místa v kódu, která před tím nebyla identifikována jako absolutní ukazatele či naopak jako ukazatelé byla identifikována chybně. Nyní jsem schopen pomocí dvojité kompilace s posunutím ORG vygenerovat relokační tabulky (jsou ve skutečnosti dvě) se stejným obsahem jako původní. Takže do budoucna budeme moci modifikovat Promethea při zachování jeho relokačních schopností.

Narazil jsem v jeho kódu na pár zajímavých míst. Třeba nastavení toho, jestli se písmena mají zobrazovat jako malá, velká či nezměněná, se řeší přímou modifikací kódu patřičné rutiny, což je samozřejmě pro běh nejrychlejší způsob. Na patřičné místo se jednoduše vlepí kód pro jednu z následujících možností (každá má 2 byty):

Kód:
caseModificationCodeOptions:
    and 0ffh  ; normal
    or 020h   ; lowercase
    and 0dfh  ; uppercase


Podobně se řeší to, jestli se fonty mají vykreslovat tučně. Nebo když chcete tisknout nějaký řetězec, umístí se literál s jeho obsahem přímo za volání tiskové rutiny (pomocí CALL). Ta si ze zásobníku vyzvedne adresu, která odpovídá začátku řetězce, a po vytištění skočí za jeho konec (JP, nikoliv RET), kde program vesele pokračuje.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PROMETHEUS - zdrojový kód
PříspěvekNapsal: 10 pro 2018, 21:17 
Offline
Pan Štábní

Registrován: 29 čer 2013, 15:52
Příspěvky: 1460
Has thanked: 17 times
Been thanked: 241 times
Ja bych videl radeji Promethea upraveneho, aby pouzival zasobnik jen jako zasobnik, k nicemu jinemu. Tedy aby se nespolehal, ze jsou na zasobniku nejaka predpripravena data. Predpokladam, ze kazdy, kdo Promethea na ZX bude pouzivat, nejspis ho bude nahravat z Divide ci Divmmc (alespon ve vetsine pripadu). A da se logicky predpokladat, ze bude obcas uzivatel z Promika skakat do NMI menu ESXDOSu. A prave pri stisku NMI dochazi k prepsani zasobniku, coz by mohlo zpusobit poskozeni dat programu nebo zdrojaku. Nezkoumal jsem zdrojak a praci se zasobnikem, ale minimalne by stalo za to overit kdy a jak Promik pouziva registr SP. Kdyby nahodou opravdu zasobnik pouzival pro tabulky a podobne finty, u Divide/Divmmc je stale jeste moznost zablokovat docasne funkci tlacitka NMI, ci ho kdykoli podle potreby povolit.

_________________
http://velesoft.speccy.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PROMETHEUS - zdrojový kód
PříspěvekNapsal: 11 pro 2018, 00:33 
Offline
Kecálek

Registrován: 18 říj 2014, 22:10
Příspěvky: 195
Has thanked: 12 times
Been thanked: 42 times
VELESOFT píše:
Ja bych videl radeji Promethea upraveneho, aby pouzival zasobnik jen jako zasobnik, k nicemu jinemu.
To si asi zle pochopil, aspoň v tomto prípade sa zásobník používa správne a nehrozí prepis od NMI. Podobne pracuje aj Calculator, za inštrukciou call, alebo rst sú data a tie si obslužná rutina vyberie z návratovej adresy, ktorá je uložená na zásobníku.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PROMETHEUS - zdrojový kód
PříspěvekNapsal: 11 pro 2018, 10:57 
Offline
Pan Generální

Registrován: 22 kvě 2013, 20:14
Příspěvky: 2103
Bydliště: Bratislava
Has thanked: 229 times
Been thanked: 393 times
Pavel.Krivanek píše:
Nebo když chcete tisknout nějaký řetězec, umístí se literál s jeho obsahem přímo za volání tiskové rutiny (pomocí CALL). Ta si ze zásobníku vyzvedne adresu, která odpovídá začátku řetězce, a po vytištění skočí za jeho konec (JP, nikoliv RET), kde program vesele pokračuje.
VELESOFT píše:
Ja bych videl radeji Promethea upraveneho, aby pouzival zasobnik jen jako zasobnik, k nicemu jinemu. Tedy aby se nespolehal, ze jsou na zasobniku nejaka predpripravena data. ...
Pokial narazas na tie data za CALL, tak ako uz pisal Antony, v tomto pripade to nicomu nevadi a zasobnik sa stale pouziva korektne tak ako ma, takze ani prerusenie nerobi problem. Napriklad ZX romka tiez casto pouziva tuto koncepciu pristupu k datam a cele to v pohode a bez problemov bezi s povolenym prerusenim.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PROMETHEUS - zdrojový kód
PříspěvekNapsal: 25 pro 2018, 01:50 
Offline
Pan Štábní

Registrován: 29 čer 2013, 15:52
Příspěvky: 1460
Has thanked: 17 times
Been thanked: 241 times
Další věcí ke zlepšení by byla obsluha klávesnice. U Promethea to byla někdy dost katastrofa. Kurzory pak sem tam fungují jako čísla bez shiftu a třeba na +2A/+3 to bejvalo peklo. A zrovna při programování by tedy měla klávesnice fungovat spolehlivě a na všem. Takže na romkový test klávesnice bych se vybodnul a použil vlastní.

_________________
http://velesoft.speccy.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PROMETHEUS - zdrojový kód
PříspěvekNapsal: 25 pro 2018, 11:13 
Offline
Kecka

Registrován: 03 črc 2018, 22:06
Příspěvky: 39
Has thanked: 20 times
Been thanked: 44 times
Tipoval bych, že problém s kurzorovými klávesami může být spíše způsoben tím, že si Prometheus naopak většinu věcí ošetřuje po svém. Příslušný kód je zde:
https://github.com/oldcompcz/prometheus ... .asm#L5828


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PROMETHEUS - zdrojový kód
PříspěvekNapsal: 25 pro 2018, 15:25 
Offline
Pan Štábní

Registrován: 29 čer 2013, 15:52
Příspěvky: 1460
Has thanked: 17 times
Been thanked: 241 times
Kazdopadne Prometheus vola i romkovou rutinu klavesnice a zx romka ji nema napsanou spolehlive. A nejspis by to chtelo upravit tedy i klavesnicove rutiny Promika.

_________________
http://velesoft.speccy.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PROMETHEUS - zdrojový kód
PříspěvekNapsal: 25 pro 2018, 15:34 
Offline
Pan Štábní

Registrován: 29 čer 2013, 15:52
Příspěvky: 1460
Has thanked: 17 times
Been thanked: 241 times
Ukladani na kazetu bych rad videl jako dva standartni hlavickove bloky code. Aby ESXDOS mohl ukladat do TAP.

_________________
http://velesoft.speccy.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PROMETHEUS - zdrojový kód
PříspěvekNapsal: 25 pro 2018, 21:31 
Offline
Kecka

Registrován: 03 črc 2018, 22:06
Příspěvky: 39
Has thanked: 20 times
Been thanked: 44 times
Skoro každý u Promethea upravím pár návěští nebo přidám nějaké komentáře, ale je to běh na dlouhou trať. Jeho kód je poměrně křehký a dokud ho ještě důkladněji nezdokumentujeme, jsou jeho úpravy rizikové. Je ovšem příjemné sledovat, jak ten kód dostává postupně smyslf. Jakákoliv pomoc je samozřejmé vítána (je možné posílat pull requesty)


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PROMETHEUS - zdrojový kód
PříspěvekNapsal: 26 pro 2018, 05:36 
Offline
Pan Štábní

Registrován: 29 čer 2013, 15:52
Příspěvky: 1460
Has thanked: 17 times
Been thanked: 241 times
A jeste jedna chybka. Kurzor v editoru je vzhledove poskozeny na jinych zx modelech se 128kB protoze Prometheus pro jeho zobrazeni pouziva obast bajtu FF ktera je jen u orig.48 rom.

_________________
http://velesoft.speccy.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PROMETHEUS - zdrojový kód
PříspěvekNapsal: 26 pro 2018, 08:32 
Offline
Kecka

Registrován: 03 črc 2018, 22:06
Příspěvky: 39
Has thanked: 20 times
Been thanked: 44 times
Na +3 se označení nezobrazí vůbec. Prometheus data pro normální znaky bere z ROM, ale pro znak značku bloku prostě použije nižší kód znaku (0x03), který zdrojovou adresu vypočítá do nevyužité oblasti před znakovou sadou, 0x386E až 0x3D00-1 (konkrétně 3C18). Myslel jsem, že označení dělá pomocí nastavení atributů, ale takhle mu to umožňuje udělat rychlý přesun obsahu video RAM při scrollování.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PROMETHEUS - zdrojový kód
PříspěvekNapsal: 26 pro 2018, 10:58 
Offline
Radil

Registrován: 27 zář 2014, 22:56
Příspěvky: 458
Has thanked: 429 times
Been thanked: 221 times
Ty originální chybky Promethea jsou taky hezká zajímavost a stálo by za to je zdokumentovat formou Issues.

_________________
ZX Spectrum DELTA, D80, Melodik, XY4150, Aritma 0512
PGP: A6EA 1F93 EF6B D8D1 35AD B6D7 1E79 73E5 1B28 17F9


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PROMETHEUS - zdrojový kód
PříspěvekNapsal: 28 pro 2018, 18:50 
Offline
Kecálek
Uživatelský avatar

Registrován: 03 kvě 2017, 10:50
Příspěvky: 96
Bydliště: Ústí nad Labem
Has thanked: 6 times
Been thanked: 38 times
Jaký chybky? Jelkož +kový spektra nejsou vůbec v seznamu podporovaných počítačů, tak se nejedná o chyby.. Respektive určitě ne chyby Promethea..... :D


Přílohy:
20181228_113837.jpg
20181228_113837.jpg [ 209.01 KiB | Zobrazeno 546 krát ]
Nahoru
 Profil  
 
 Předmět příspěvku: Re: PROMETHEUS - zdrojový kód
PříspěvekNapsal: 28 pro 2018, 20:46 
Offline
Pan Generální

Registrován: 22 kvě 2013, 20:14
Příspěvky: 2103
Bydliště: Bratislava
Has thanked: 229 times
Been thanked: 393 times
Clouseau píše:
Jaký chybky? Jelkož +kový spektra nejsou vůbec v seznamu podporovaných počítačů, tak se nejedná o chyby.. Respektive určitě ne chyby Promethea..... :D
Ok, tak teda bude presnejsie napisat:
Ty originální vlastnosti Promethea jsou taky hezká zajímavost a stálo by za to je zdokumentovat formou Issues.
:jump:


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

Všechny časy jsou v UTC + 1 hodina


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 2 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