OldComp.cz

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


Právě je 17.06.2025, 16:14

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říspěvekNapsal: 01.06.2025, 22:01 
Offline
Prvnička

Registrován: 09.12.2024, 14:15
Příspěvky: 20
Has thanked: 3 times
Been thanked: 19 times
Má TESLA ROM nějaký mechanismus, jak nahrát více binárních bloků paměti (tzn. např. 1500 bajtů od 0x1000 + 2000 bajtů od 0x8000 + ...) - jako to má ViLi ROM? Nebo je nutné to nahrát jako jeden spojený "blob" s rutinou, která to po spuštění příslušně rozhází po paměti?

Připadně mě napadá udělat něco jako spectrácký zavaděč (akorát ne v BASICu), který bude volat příslušné služby MIKOSu a jednotlivé bloky si načte z dalších souborů - ale to mi přijde už dost komplikované, to už snad radši ta "rozhazovací" rutina...

_________________
Zdraví
joker


Nahoru
 Profil  
 
PříspěvekNapsal: 02.06.2025, 18:47 
Offline
Radil
Uživatelský avatar

Registrován: 27.06.2021, 15:15
Příspěvky: 470
Has thanked: 107 times
Been thanked: 424 times
Co vím tak neumí, MIKOS uloží blok do paměti tam, jak byl uveden rozsah při příkazu save. Nic víc. Ale jak píšeš pomocí malého loaderu to pomocí služeb mikosu snadno implementuješ.

_________________
https://github.com/72ka


Nahoru
 Profil  
 
PříspěvekNapsal: 03.06.2025, 12:46 
Offline
Pan Štábní

Registrován: 12.05.2013, 22:24
Příspěvky: 1661
Bydliště: u Prahy
Has thanked: 51 times
Been thanked: 422 times
Jen si nejsem jist, zda každý blok v hlavičce nemá adresu, na kterou se má uložit, tím by to ovlivnit šlo.


Nahoru
 Profil  
 
PříspěvekNapsal: 03.06.2025, 14:25 
Offline
Prvnička

Registrován: 09.12.2024, 14:15
Příspěvky: 20
Has thanked: 3 times
Been thanked: 19 times
dex píše:
Jen si nejsem jist, zda každý blok v hlavičce nemá adresu, na kterou se má uložit, tím by to ovlivnit šlo.

Ano, má, ale z toho co víme, tak nejspíš platí, že 1 binární soubor = 1 blok. Mně šlo o to, jestli v jednom souboru může těch bloků být více (jako v souboru typu .KÓD pro ViLi ROM), a to asi v Mikosu nelze.

Ale ono je to vlastně stejně jedno, vzhledem k tomu, že Tesla ROM prakticky nikdo nepoužívá (spolu se dvěma lidmi, co se mi na otázku o smyslu úpravy SW pro ni ozvali, jsme tohoto názoru 3 ze 3 :D ), pro ni nic upravovat nebudu a tohle téma je tedy passé.

_________________
Zdraví
joker


Nahoru
 Profil  
 
PříspěvekNapsal: 03.06.2025, 20:12 
Offline
Pan Štábní

Registrován: 12.05.2013, 22:24
Příspěvky: 1661
Bydliště: u Prahy
Has thanked: 51 times
Been thanked: 422 times
Teď tomu nějak nerozumím, zdá se mi to jako blbost.
Citace:
platí, že 1 binární soubor = 1 blok.

To podle mne neplatí.
Soubor v MIKOSu se skládá z krátkých bloků za sebou jdoucích, každý má svou hlavičku s jménem souboru, svým pořadovým číslem atd.
Bloky jsou kratší než ve ViLi ROM.

Citace:
Mně šlo o to, jestli v jednom souboru může těch bloků být více (jako v souboru typu .KÓD pro ViLi ROM), a to asi v Mikosu nelze.

Opět za mne blbost.
MIKOS to tak má přeci normálně.

Nedělené soubory, v jednom bloku, měla ROM s MikroBasicem.


Nahoru
 Profil  
 
PříspěvekNapsal: 03.06.2025, 21:43 
Offline
Prvnička

Registrován: 09.12.2024, 14:15
Příspěvky: 20
Has thanked: 3 times
Been thanked: 19 times
Jak tedy v MIKOSu těch víc paměťových bloků do jednoho souboru uložím? Nejde mi o kazetové bloky, to si MIKOS dělí sám, jde mi o paměťové bloky. Příkaz K_S umožní zadat pouze 1 rozsah paměti k uložení, stejně jako vyvolání služby 0x160. A soubor se hned uzavře, nelze tedy udělat několik K_S za sebou a až pak uzavřít K_C.

_________________
Zdraví
joker


Nahoru
 Profil  
 
PříspěvekNapsal: 04.06.2025, 17:24 
Offline
Profík

Registrován: 15.01.2014, 20:08
Příspěvky: 917
Bydliště: Šlapanice
Has thanked: 158 times
Been thanked: 129 times
Jestli se nepletu tak MIKOS ukládá po sektorech kdy v prvním sektoru je jméno souboru. Následující sektory jsou data kdy v každý sektor má pořadové číslo a číslo souboru. Takže data jsou jeden celistvý blok, při chybě čtení se jde vrátit a provést nový pokus čtení …

Formát dat pro SAPI-1 je ZDE, pro ONDRU s TESLA ROM by měl být rozdíl akorát ve velikosti sektoru kdy SAPI-1 má 256byte a ONDRA 1024byte.

Takže pokud chceš více datových bloků tak je potřeba uložit/vyčíst každý do vlastního souboru zvlášť … nebo pokud to jde tak uložit jako jeden blok.

Jediná cesta jak uložit/načíst libovolné úseky je použít INTELHEX aneb ten má pro každý řádek počáteční adresu pro daný řádek. Na SAPI-1 je to možné ale jak je to s ONDROU a TESLA ROM tak to netuším. Taky umožňuje automatický start …

_________________
Ne všichni jsme měli z češtiny za jedna, aneb jsem dyslektik a dysgrafik.

http://www.sapi.cz/


Nahoru
 Profil  
 
PříspěvekNapsal: 05.06.2025, 10:29 
Offline
Prvnička

Registrován: 09.12.2024, 14:15
Příspěvky: 20
Has thanked: 3 times
Been thanked: 19 times
EC1045.01 píše:
Jestli se nepletu tak MIKOS ukládá po sektorech kdy v prvním sektoru je jméno souboru. Následující sektory jsou data kdy v každý sektor má pořadové číslo a číslo souboru. Takže data jsou jeden celistvý blok, při chybě čtení se jde vrátit a provést nový pokus čtení …

Formát dat pro SAPI-1 je ZDE, pro ONDRU s TESLA ROM by měl být rozdíl akorát ve velikosti sektoru kdy SAPI-1 má 256byte a ONDRA 1024byte.

V dokumentaci Ondry se vůbec o sektorech nepíše, jsou tam uvedeny jednak "bloky" (bez bližšího upřesnění - já jim říkám kazetové bloky), po kterých probíhá čtení/zápis z kazety, a ty jakoby "obalují" to, co je tam uvedeno jako "funkční blok" - ten má vždy 256 bajtů. První bajt funkčního bloku určije jeho typ (":"/0x01/0x04/"A"/"B"), zbývajících 255 bajtů jsou data, jejich se význam se liší podle typu bloku.

Kazetový blok má celkem 275 bajtů, na začátku několik synchronizačních znaků 0x10 (3B, viz níže), pak následuje funkční blok (256B), pak název souboru (11B), číslo bloku v souboru (1B), pořadové číslo souboru (1B), kontrolní součet (1B) a pak zase 2 synchronizační znaky 0x10 (2B).

Ty synchronizační znaky 0x10 na začátku bloku mají být jak podle dokumentace k Ondrovi, tak podle https://www.sapi.cz/sapi/doku2/kpv.php#mikos dva, ale ve skutečnosti se ukládají tři. A ono to odpovídá i tomu, co je ve zdrojáku https://www.sapi.cz/sapi/data/mi40f_asm.php (btw. luštit to v mnemonice i8080 pro mě bylo utrpení :D ) - takže nejspíš i na SAPI se navzdory dokumentaci ukládají 3:

Kód:
;WRITE BLOCK (HL-ADR,DE-BLOCK &FILE NUMBER)
;
WRBLO:  PUSH    B
        PUSH    H
        PUSH    D
        CALL    STARW   ;START WRITE
        MVI     A,80    ; 800/100 MS
        CALL    BTIME

        CALL    SEROP
        CALL    SEROP
        CALL    SEROP   ;PREAMBLE

        ... atd ...


Pak taky na konci mají být synchronizační znaky 0x10, 0x00, ale je tam dvakrát 0x10 - což zřejmě nevadí, vypadá to, že čtecí rutina skončí na kontrole kontrolního součtu a dál je jí to jedno.

Citace:
Takže pokud chceš více datových bloků tak je potřeba uložit/vyčíst každý do vlastního souboru zvlášť … nebo pokud to jde tak uložit jako jeden blok.

Jediná cesta jak uložit/načíst libovolné úseky je použít INTELHEX aneb ten má pro každý řádek počáteční adresu pro daný řádek. Na SAPI-1 je to možné ale jak je to s ONDROU a TESLA ROM tak to netuším. Taky umožňuje automatický start …

INTELHEX vypadá že Ondra neumí - příslušné příkazy (R/W/E) nic nedělají.
Automatický start je možný na Ondrovi při nahrání přes zkrácený příkaz "L" (místo "K_L"), pokud načtený paměťový blok začíná absolutním nepodmíněným skokem (0xC3), pak se automaticky po načtení provede. Jinak (po K_L) je nutné jej spustit ručně J, B, nebo Gxxxx.

Jo a díky za skvělou sbírku dokumentace (i všeho ostatního) ohledně SAPI.

_________________
Zdraví
joker


Nahoru
 Profil  
 
PříspěvekNapsal: 06.06.2025, 13:08 
Offline
Pan Štábní

Registrován: 12.05.2013, 22:24
Příspěvky: 1661
Bydliště: u Prahy
Has thanked: 51 times
Been thanked: 422 times
MIKOS ty bloky umí načítat i napřeskáčku, proto tak nějak čekám, že každý ten blok obsahuje i adresu, kam se má nahrát.
Systémovým způsobem to ovlivnit nepůjde, ale podvrhnout v blocích vlastní adresu (napsat si "saver" na ukládání segmentů paměti do jednoho bloku) by mohlo jít. A na nahrávání by pak nemusel být potřeba speciální loader, měl by fungovat ten systémový.
Ale ještě jsem se nedíval do disassemblingu.


Nahoru
 Profil  
 
PříspěvekNapsal: 06.06.2025, 13:28 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 4000
Bydliště: Bratislava
Has thanked: 389 times
Been thanked: 851 times
joker07cz píše:
(btw. luštit to v mnemonice i8080 pro mě bylo utrpení :D )
Na toto existuju online konvertory. Ja som si napr. takto do Z80 mnemoniky prehodil vypis romky PP01 aby som sa v tom lahsie orientoval.


Nahoru
 Profil  
 
PříspěvekNapsal: 06.06.2025, 14:06 
Offline
Prvnička

Registrován: 09.12.2024, 14:15
Příspěvky: 20
Has thanked: 3 times
Been thanked: 19 times
dex píše:
MIKOS ty bloky umí načítat i napřeskáčku, proto tak nějak čekám, že každý ten blok obsahuje i adresu, kam se má nahrát.
Systémovým způsobem to ovlivnit nepůjde, ale podvrhnout v blocích vlastní adresu (napsat si "saver" na ukládání segmentů paměti do jednoho bloku) by mohlo jít. A na nahrávání by pak nemusel být potřeba speciální loader, měl by fungovat ten systémový.
Ale ještě jsem se nedíval do disassemblingu.

Ač by to tak dle dokumentace mohlo vypadat (a myslel jsem, že to tak je), ve skutečnosti pouze první kaz. blok typu "B" - binární (čili druhý v daném souboru, úplně první je typu "název" - 0x01) obsahuje rozsah pamětí, kam se nahrává. Ty další už rovnou obsahují pokračování dat. Takže to nelze.
Ještě jsem ale nezkoušel, co by se stalo, kdybych mu podhodil místo posledního "uzavíracího" bloku typu 0x04 další 2 bloky typu "B" - jeden se "zbytkem" dat prvního bloku (který by normálně byl v tom uzavíracím) a pak další typu "B" s novým rozsahem adres a dalšími daty.
Když zkusím nahrát bloky napřeskáčku, tak mi to hází chybu - chce je přísně sekvenčně.

Jo a ještě pár (možná zajímavých) zjištění - zjištěno na Ondrovi, na SAPI je to třeba jinak:
- adresy pro nahrání jsou uvedeny v opačném pořadí, než by odpovídalo logice i dokumentaci - nejdřív koncová adresa (k.a.), pak počáteční adresa (p.a.)
- tyto adresy jsou uvedeny v lomených závorkách < k.a. p.a. >, ale kontrolní součet adres se počítá bez otevírací, ovšem včetně uzavírací závorky!
- kontrolní součet celého kazetového bloku se má dle dokumentace počítat vč. pilotního rámce (počátečních bajtů 0x10), ve skutečnosti se počítá až od bajtu typu souboru
- kontrolní součty jsou dle dokumentace negovaným součtem příslušných bajtů, ve skutečnosti je to prostý součet

_________________
Zdraví
joker


Nahoru
 Profil  
 
PříspěvekNapsal: 10.06.2025, 20:01 
Offline
Pan Štábní

Registrován: 12.05.2013, 22:24
Příspěvky: 1661
Bydliště: u Prahy
Has thanked: 51 times
Been thanked: 422 times
Zdá se, že tedy jsem si to pamatoval blbě - MIKOS musí nahrávat sektory (bloky) souboru postupně, ne napřezkáčku, a blok samotný neobsahuje adresu, kam se má nahrát, jen své pořadové číslo (ze kterého se adresa počítat nemusí, protože se zřejmě nahrává čistě sekvenčně - opravdu jsem si to ale pamatoval jinak, protože jsme ve hře Hammurabi měli vadný blok, ale zbytek programu se dařilo nahrát, tento nekompletní program vylistovat a zjistit, o co mělo asi jít).
Tož se omlouvám za svou paměť, tudy cesta opravdu nepovede.


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