OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů
Právě je 05.10.2024, 12:04

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




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 12 ] 
Autor Zpráva
 Předmět příspěvku: Oprava chýb ROM 3.0
PříspěvekNapsal: 12.07.2024, 14:03 
Offline
Radil

Registrován: 18.10.2014, 23:10
Příspěvky: 399
Has thanked: 29 times
Been thanked: 129 times
Už som to písal na FB, ale bez odozvy, tak skúsim tu.
Robil som nejaké úpravy ROM 3.0, ale zistil som, že MDOS a BDOS používajú pevné adresy pre NMISTOP=&1C9E a UPACK=&ED39.
Existuje nejaká ďalša adresa od &0190, ktorá by mala zostať nezmenená?

Plánované opravy:
-Pri výskyte prerušenia s pripojenou externou pameťou sa XM dočasne odstránkuje.
-Pri pristránkovaní a odstránkovaní DOSu namiesto povolenia prerušenia sa zachová pôvodný stav.
-Chyba ROLL Left,Pix=1,Width=2
-Zrýchlenie násobenia celých čísel 16bit*8bit, a rýchlejšia detekcia výsledku väčšieho ako 65535.
-Plus nejaké drobné optimalizácie.

Vyzerá to, že si viem vytvoriť dosť miesta na prevedenie zmien, ale cenou bude mierne spomalenie programu, tak to nechcem preháňať.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Oprava chýb ROM 3.0
PříspěvekNapsal: 13.07.2024, 05:52 
Offline
Pan Generální
Uživatelský avatar

Registrován: 11.06.2013, 15:27
Příspěvky: 3215
Has thanked: 2318 times
Been thanked: 969 times
Tyto chyby taky opravíš?

_________________
// na co myslím, když sedím u oldkompů: . Neexistuje vládní dezinformace


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Oprava chýb ROM 3.0
PříspěvekNapsal: 13.07.2024, 11:06 
Offline
Radil

Registrován: 18.10.2014, 23:10
Příspěvky: 399
Has thanked: 29 times
Been thanked: 129 times
Niečo je proste vlastnosť a nie chyba.
Ja chcem opraviť hlavne to prerušenie a stránkovanie DOSu.
Opravu prerušenia som si už otestoval a je to fajn, ale zväčšuje sa oneskorenie reakcie. To by mohol byť problém pri viacerých zmenách palety na určitom riadku obrazovky, ale dalo by sa to trochu kompenzovať vynechaním testu svetelného pera, aj tak ho nikto nemá.
Nechcem sa púšťať do žiadnych veľkých zmien, oprava chyby ROLL vyžaduje len 1 bajt a po ďalších optimalizáciach tohto podprogramu je to ešte o 3 bajty kratšie. Oprava prerušenia vyžaduje 12 bajtov, stránkovanie DOSU spotrebuje 16 bajtov, násobeniu som obetoval až 18 bajtov. Získavanie ďalšieho miesta spôsobuje spomalenie iných časti a potom tá optimalizácia násobenia stráca zmysel.
Tie LABELy by asi vyžadovali zmenu celého návrhu BASICu, to je chyba, ktorá aj mňa nasrdila.
Chybu MEM$ som objavil až pri skúmaní obsahu ROM, keď som hľadal rovnaké reťazce pomocou príkazov PEEK a napadlo ma, že MEM$ by mohol byť rýchlejší.
Určite sa na to pozriem, ale asi zvolím taký postup, že najprv dám dokopy verziu s opravami, ktoré už mám hotové a až potom budem skúšať ďalšie opravy. Momentálne mi ale ide hlavne o to ako som písal, že MDOS a BDOS používajú pevné adresy pre NMISTOP=&1C9E a UPACK=&ED39 a či niektoré programy predpokladajú niečo ďalšie na určitých adresách. Podľa pravidiel by to nemalo byť, veď aj kvôli tomu sú na adresách &0100-&0190 definované vektory na volanie ROMky. Ešte ma napadá, že by to mohli byť aj data FONTU CHARSRC=&FE4E.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Oprava chýb ROM 3.0
PříspěvekNapsal: 13.07.2024, 11:34 
Offline
Pan Generální
Uživatelský avatar

Registrován: 11.06.2013, 15:27
Příspěvky: 3215
Has thanked: 2318 times
Been thanked: 969 times
Antony/DTA píše:
Niečo je proste vlastnosť a nie chyba.

OK.
Možná by se na chyby a věci k opravě ROM lépe přišlo, pokud bychom měli více informací o MasterBASICu, který svým způsobem ROM patchuje.
Jenže na zdrojácích už před lety seděl S. Goodwin, který jejich originální diskety dostal přímo od autora a ještě před časem je odmítal vydat. Připadal mi jako starý zapšklý dědek, co všechno vsadil na Next a odmítal se o "konkurenci" bavit. Je facebookový maniak, tak možná bys mohl zkusit se jej na zdrojáky zeptat... (?)

_________________
// na co myslím, když sedím u oldkompů: . Neexistuje vládní dezinformace


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Oprava chýb ROM 3.0
PříspěvekNapsal: 07.08.2024, 22:40 
Offline
Radil

Registrován: 18.10.2014, 23:10
Příspěvky: 399
Has thanked: 29 times
Been thanked: 129 times
Takže čo sa už podarilo:

INT_XM -oprava chyby s pristránkovanou ExtMem

RST&30_XM -oprava chyby s pristránkovanou ExtMem

DOS Paging DI/EI -namiesto EI po pristránkovaní a odstránkovaní DOSu sa zachová stav podľa IFF2

JSVIN1 Paging DI/EI -namiesto EI po pristránkovaní a odstránkovaní DOSu sa zachová stav podľa IFF2

DOS ErrorRemoveXM -pri výskyte chyby ak DOSER=0 sa odstránkuje ExtMem a vypíše sa chybové hlásenie

ROLL -oprava chyby ROLL Left,Pix=1,Width=2

MEM$ -oprava chyby pre adresu začiatku (0-16383)

QMULT -zrýchlenie násobenia 16 bit * 8 bit

SOUND -zoptimalizovaná rutina

JMODE -oprava chyby, pri návrate sa obnoví HMPR, takže funkcia je použiteľná odkiaľkoľvek z pamete

Tá oprava JMODE nieje vlastne oprava, ale len dôsledok opravy RST&30_XM. To zistenie ma dnes milo prekvapilo, keď som si spomenul na túto chybu a ona už bola opravená. :)
To ma tiež priviedlo k zamysleniu, že asi bude fungovať veľa funkcií aj z externej pamete.
Napr: &0010_PRINT a &0013_PRINTSTR by mali fungovať a vypísať znak/reťazec aj z externej pamete, ale adresa reťazca musí byť 0-&BFFF z nastavenej pamete, pretože stránkovanie nepracuje s ExtMem.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Oprava chýb ROM 3.0
PříspěvekNapsal: 09.08.2024, 22:00 
Offline
Pan Generální
Uživatelský avatar

Registrován: 11.06.2013, 15:27
Příspěvky: 3215
Has thanked: 2318 times
Been thanked: 969 times
Kdyby Ti nahodou zbylo misto...
jako pridrzeni shiftu nastartuje s 256KB,
tak pridat na stisk jine klavesy start do MODE3?

Oprava to neni, ale proste uzitecne pro neparmeny... :-)

_________________
// na co myslím, když sedím u oldkompů: . Neexistuje vládní dezinformace


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Oprava chýb ROM 3.0
PříspěvekNapsal: 10.08.2024, 08:36 
Offline
Radil

Registrován: 18.10.2014, 23:10
Příspěvky: 399
Has thanked: 29 times
Been thanked: 129 times
Tiež som sa pohrával s myšlienkou štartu do MODE3, vyzeralo by to profesionálnejšie, ale asi by sa ukázalo, že veľa programov počíta po štarte s módom 4.

Nieje problém si na bootovací record pridať niečo také do AutoStart súboru. Ja mám nastavený pre automatický štart COMET assembler, "SPACE"=Boot z diskety, "D"=štart môjho DirSys.

Výpis hlásenia po štarte, alebo po príkaze NEW je veľmi komplikovaný a zaberá dosť miesta v ROM-ke, pretože "é" ako posledný znak fontu s kódom &82 nemôže byť v chybovom hlásení, kde sú povolené len znaky do &7F a čokoľvek väčšie sa berie ako znak s koncovou značkou. A tak sa tento koniec správy vypisuje dodatočne špeciálnym programom. Snažil som sa to nejak upraviť a pridať do hlásenia aj verziu ROM, skúšal som aj MODE3, ale napriek tomu, že to vyzeralo pekne, nebolo možné natlačiť tak dlhú správu do ROM-ky. Momentálne skúšam na font LZX kompresiu (t34o2) a pár bajtov v ROM1 to ušetrí, teraz potrebujem presunúť niečo z ROM0 do ROM1. A rád by som aj LZX dekompresor zaradil do systémových služieb.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Oprava chýb ROM 3.0
PříspěvekNapsal: 23.09.2024, 20:42 
Offline
Radil

Registrován: 18.10.2014, 23:10
Příspěvky: 399
Has thanked: 29 times
Been thanked: 129 times
S romkou pre AtomClassic som celkom spokojný, čo som chcel opraviť, to som opravil a tak som začal s romkou pre AtomLite. Zistil som, že bootovanie sa dosť zmenilo a nebude to len o výmene jednej rutiny. No ale čo čert nechcel, napadla ma taká myšlienka, že by sa možno podarilo spojiť tieto dve romky do jednej. Niekoľko dní (nie 24 hodín denne) som hľadal na internete ako vypnúť 8-bitový prenos a nakoniec sa pošťastilo. Prvé testy vyzerajú dobre, uvidím či sa mi to tam ešte podarí natlačiť.
Funguje to tak, že sa skúsi nabootovať vždy najprv AtomC a keď sa nepodarí, tak sa prepne 8-bitový prenos a vyskúša sa nabootovať AtomL. Takto najprv Drive2_Master, potom Drive2_Slave a nakoniec Drive3_Master a Drive3_Slave (či ako sa to označuje). Ak sa nepodarí nič 8-bitový prenos zostane vypnutý a skúsi sa boot z diskety Drive1.

Klávesy počas bootovania sú tiež pre mňa neznáme. Teda "Shift"=256K je jasný.
Romka pre AtomC pridala "Space" pre vynechanie bootovania z HD, romka pre AtomL má na to "0".
A ešte som sa dočítal na https://sam.speccy.cz/atomlite.html, že by sa klávesami 1-4 mala zvoliť CF karta z ktorej sa nabootuje, ale v programe som nič také nevidel. Žeby to bolo na nejakej staršej verzii romky? No ale jeden človek, hrdý majiteľ Sam coupe s pripojenými 4 CF kartami, by mi to tu mohol objasniť. :)

Skúšal som to zatiaľ len v Emulátore a BootBlok sa spustil z Drive2_Master aj Slave pre AtomC aj AtomL. Viac zariadení SimCoupe nepodporuje.
Ešte taká zaujímavosť: Keď som si myslel, že pre AtomC aj AtomL použijem spoločnú rutinu na test BootBloku, tak som ešte netušil, že každý systém sa nahráva na inú adresu, kontrolný reťazec "BOOT" je na inom offsete, a na inom offsete sa aj spúšťa.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Oprava chýb ROM 3.0
PříspěvekNapsal: 24.09.2024, 07:32 
Offline
Pan Generální
Uživatelský avatar

Registrován: 11.06.2013, 15:27
Příspěvky: 3215
Has thanked: 2318 times
Been thanked: 969 times
Mely by fungovat klavesy 0 a 1 taky pro jeden AL+ a pro dva CF sloty.
Jsem mel posledni romku a bdos primo od Edwina, mozna to nebyla verze, co je ke stazeni.
Predpokladam, ze zdrojaky mas od nej (?) - bootstrap, rompatch a posledni bdos (porad vylepsovany, ale stejne cislovany 1.5, certabysevtomvyznal).

_________________
// na co myslím, když sedím u oldkompů: . Neexistuje vládní dezinformace


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Oprava chýb ROM 3.0
PříspěvekNapsal: 24.09.2024, 10:41 
Offline
Radil

Registrován: 18.10.2014, 23:10
Příspěvky: 399
Has thanked: 29 times
Been thanked: 129 times
SCjoe píše:
Mely by fungovat klavesy 0 a 1 taky pro jeden AL+ a pro dva CF sloty.
Tak som to našiel, je to v BootBloku: Klávesy 1 - 4 pre CF 1 - 4
Edwin do BootBloku natlačil aj veci, na ktoré už v romke nebolo miesto.

SCjoe píše:
Jsem mel posledni romku a bdos primo od Edwina, mozna to nebyla verze, co je ke stazeni.
Predpokladam, ze zdrojaky mas od nej (?) - bootstrap, rompatch a posledni bdos (porad vylepsovany, ale stejne cislovany 1.5, certabysevtomvyznal).
Zdrojáky mám len ROM 3.0, RomPatch (AC), BDOS15a (AC+AL), BootSector (AC+AL)


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Oprava chýb ROM 3.0
PříspěvekNapsal: 24.09.2024, 11:09 
Offline
Radil

Registrován: 18.10.2014, 23:10
Příspěvky: 399
Has thanked: 29 times
Been thanked: 129 times
Ešte by som dodal, že na už spomínanej stránke https://sam.speccy.cz/atomlite.html je pre príkaz RECORD uvedená kombinácia CNTRL+Z, ale je to SYMBOL+Z (SYMBOL sa v SimCoupe mapuje na ľavý CTRL).


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Oprava chýb ROM 3.0
PříspěvekNapsal: 02.10.2024, 21:15 
Offline
Radil

Registrován: 18.10.2014, 23:10
Příspěvky: 399
Has thanked: 29 times
Been thanked: 129 times
Antony/DTA píše:
Keď som si myslel, že pre AtomC aj AtomL použijem spoločnú rutinu na test BootBloku, tak som ešte netušil, že každý systém sa nahráva na inú adresu, kontrolný reťazec "BOOT" je na inom offsete, a na inom offsete sa aj spúšťa.
A ešte aj to spúšťanie je iné, AC sa inicializuje a rovno skúsi načítať súbor "auto*", zatiaľ čo AL sa po inicializácii vráti do ROMky so značkou, či sa má načítať súbor "auto*".
Mal som problém aj s načítaním BootBloku. Prvý sektor sa načítal, ale radič pindal a zaseklo sa to na rutine v BootBloku AL. Prišiel som na to, že prvý sektor po resete sa načíta dobre, ale pred druhým čítaním treba nastaviť čo chcem čítať, takže sa mi kód zas predĺžil.
Teraz som v stave, že nabootuje AC aj AL prípadne Disketa, ale keď sa bootovanie preskočí a nieje vložená disketa (alebo neobsahuje DOS), tak sa vypíše veeeľmi oklieštená úvodná správa (chýba mi asi 50 bajtov). Potom AC aj AL nabootuje príkazom BOOT aj BOOT1, ale aj po príkaze NEW. To isté robí aj pôvodná HD BOOTROM V2 pre AC, z ktorej vychádzam aj keď je pár vecí prevzatých aj z AL-BOOT v2.2 pre AL. Ten príkaz NEW by som chcel ešte trochu vyladiť, tež som ešte neskúšal meniť nastavenie BootBloku AL, aby nečítal súbor "auto*". Ale všetko potrebuje nejaké miesto v ROMke, ktoré už nemám. Takže plán je jasný - našetriť cca 50 bajtov. Keď sa to nepodarí, tak budem musieť robiť samostatné verzie AC a AL, nebudem skracovať úvodnú správu.


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ů: 12 ] 

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 7 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