OldComp.cz

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


Právě je 26.04.2024, 23:49

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




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 230 ]  Přejít na stránku Předchozí  1, 2, 3, 4, 5, 6, 7, 8 ... 16  Další
Autor Zpráva
 Předmět příspěvku: Re: Moderní klon D40/D80?
PříspěvekNapsal: 23.10.2020, 15:47 
Offline
Kecálek

Registrován: 06.04.2020, 16:24
Příspěvky: 241
Bydliště: Opava
Has thanked: 34 times
Been thanked: 76 times
iwosh píše:
Čo tak zmazať ten úvodný divIDE screen, aby sa niečo ušetrilo (ak by to stačilo)

No ten úvodní screen je právě těch 600 bytes plánovaných pro tu devastaci. Takže jeho odstranění je tak jako tak nevyhnutelné.

iwosh píše:
Čo tak pri resete v prípade chyby v rom upozorniť len zvukovým signálom a/alebo opakovanou zmenou borderu/paperu a potom pri výpise version-info zobraziť aj príslušný text.

To demo s písmem v borderi se mi líbilo víc a neskutečně mě to pobavilo. :D Ano, budeme psát demo na chybu v romce, která by se vlastně nikdy nikomu na funkční mašině neměla objevit... :lol: :D

Pokud nemáte kdo do čeho (koho) píchnout, tak jen nekecejte a něco vytvořte. Schválně kdo to bude mít hezčí a na méně bajtů !! Každopádně hodnotu kontrolního součtu dám samozřejmě i pod LIST*

Také můžeme udělat anketu jakou barvu má mít PAPER a BORDER při resetu (když tedy zmizí ten úvodní divide screen). Červený předem vylučuju, protože ho má org. MDOS1 i 2. PVL mdos měl tuším fialový. Co dát nějaký multicolor efekt? :whist:


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Moderní klon D40/D80?
PříspěvekNapsal: 23.10.2020, 16:04 
Offline
Kecálek

Registrován: 06.04.2020, 16:24
Příspěvky: 241
Bydliště: Opava
Has thanked: 34 times
Been thanked: 76 times
Pro inspiraci 8-)
Příloha:
Screenshot_2020-10-23-16-02-01-496.jpeg
Screenshot_2020-10-23-16-02-01-496.jpeg [ 128.76 KiB | Zobrazeno 2740 krát ]


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Moderní klon D40/D80?
PříspěvekNapsal: 24.10.2020, 10:09 
Offline
Radil

Registrován: 18.10.2013, 15:30
Příspěvky: 263
Bydliště: Oakland, Slovakia
Has thanked: 25 times
Been thanked: 60 times
PotPalo píše:
Možno hlúpa otázka: už ste si niekto dali nejakú ROM hru namiesto jedného z MDOSov? :D
Nie až taká hlúpa, viď ďalej.
MTs píše:
Ano, budeme psát demo na chybu v romce
Kašli na demo, daj tam nejakú hru (pingpong, tetris, batty).
MTs píše:
která by se vlastně nikdy nikomu na funkční mašině neměla objevit...
som zvedavý, či potom nebudú všetci používať poškodenú romku aby sa im zobrazovalo to demo. :D

Ale vážne, ten error môžeš vlastne vypísať aj s použitím atribútov (ako má TFCOPY spravené počítadlo, alebo MRPACK2 keď nie je pripojená D80ka), prípadne ho skrolovať v strednej tretine a pridať aj nejaké výstražné efekty.

_________________
Didaktik Gama | ZX Spectrum 128 | ZX Diskface Quick A | BetaDisk 128C Interface | D40 & D80 | divIDE | Interface M/P | Multiface 128 (GOTDJ) | Gama Breaker | D80mini

"Kvalita a stabilita Windows XP se Microsoftu nevyplatila, stal se takovou temnou připomínkou toho, co se stane, když odvedete svou práci moc dobře."


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Moderní klon D40/D80?
PříspěvekNapsal: 24.10.2020, 14:02 
Offline
Kecálek

Registrován: 06.04.2020, 16:24
Příspěvky: 241
Bydliště: Opava
Has thanked: 34 times
Been thanked: 76 times
MTs píše:
Busy píše:
Tiez si nemyslim, zeby implementacia bola komplikovanejsia nez PRINT * PEEK. Pri PEEK # sa zavola RST #08 a ak toto bolo sposobene prave tym PEEK # tak staci v rutinke v MDOS banke namiesto normalne ramky nacitat udaj z MDOS ramky a nasledne standartnym sposobom zrusit chybu a vratit sa, bud do povodnej PEEK rutinky, alebo hodit nacitanu hodnotu na calcstack a vratit sa do vyhodnocovania vyrazu. Ziadne nove prikazy mdosu na to netreba vymyslat.

ZX basic ma na rozdiel od mnohych inych basicov krasnu vlastnost - systematickost. Pokial sa nieco principialne da (napr. namiesto ciselnej hodnoty napisat lubovolny ciselny vyraz), tak sa to da vsade, v kazdom prikaze, vratane napr. GOTO. Ked som vymyslal upravy v mojej BS ROMke, dal som si zavezok, ze tuto vlastnost vzdy a za kazdych okolnosti dodrzim. Preto napriklad mozno pisat hexadecimalne cisla vsade tam kde desiatkove, aj v ramci akychkolvek vyrazov. Podobne by mal fungovat aj PEEK #. Aspon ja by som to urcite urobil prave takto.


Busy (a ostatní) já jsem také pro. To byla i má původní myšlenka. Jen tento způsob nelze použít bez doplnění tabulky SYNTAB (#05FF). A toto dolnění by vyžadovalo přemostění začátku příkazu POKE#, který začíná bohužel hned pod tou tabulkou. Do toho jsem v zájmu zachovaní co nejlepší kompatibility rýpat nechtěl. Anebo mi něco uniká? Ukaž kód jak bys to vyřešil :)


Abychom to nezamluvili... Dá-li někdo rozumný nápad pro PEEK# (rozuměj funkční kód), který příliš nenabourá kompatibilitu s mdos1/2, tak to určitě vyzkouším a dám do Mdos 2.2
Podle mě jsou jen tři cesty:
1. rozšířit syntab a kód pro poke# posunout jinam (hrozí jisté riziko u programů, které kódu využívají, o žádném však nevím...)
2. změnit začátek tabulky syntab a zkrátit text hlášení "File is too long" o 8 bajtů
3. vyprdnout se na syntab a napíchnout se pro vyhodnocení příkazu v mdosu jinam, tj. asi nejlepší ale také nejdelší (počtem potřebných bajtů) řešení. Nejlépe asi využít volného prostoru #021d až #0265


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Moderní klon D40/D80?
PříspěvekNapsal: 24.10.2020, 14:17 
Offline
Pan Štábní

Registrován: 12.05.2013, 22:24
Příspěvky: 1524
Bydliště: u Prahy
Has thanked: 44 times
Been thanked: 386 times
Nejvíc se mi líbí řešení 1.
Nejméně destruktivní, tabulka příkazů zůstane tam, kde ji každý očekává, kód povelu POKE# na původních adresách není důvod využívat (buď volám z Basic ROM, pak neovlivním, o jakou adresu jde, nebo mám nastránkovanou DROM/DRAM a můžu do DRAM ukládat hodnoty rovnou).


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Moderní klon D40/D80?
PříspěvekNapsal: 24.10.2020, 17:32 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3675
Bydliště: Bratislava
Has thanked: 373 times
Been thanked: 798 times
MTs píše:
Abychom to nezamluvili... Dá-li někdo rozumný nápad pro PEEK# (rozuměj funkční kód), který příliš nenabourá kompatibilitu s mdos1/2, tak to určitě vyzkouším a dám do Mdos 2.2
Podle mě jsou jen tři cesty:
1. rozšířit syntab a kód pro poke# posunout jinam (hrozí jisté riziko u programů, které kódu využívají, o žádném však nevím...)
2. změnit začátek tabulky syntab a zkrátit text hlášení "File is too long" o 8 bajtů
Tieto dve riesenia su zial nepouzitelne, pretoze tabulka RSTTAB je urcena len na rozsirovanie prikazov - okrem navratovej hodnoty RST #08 testuje TADDR co je pointer na polozky do syntaxnej tabulky prikazov v ZX romke na adrese #1A7A.
Kdezto v pripade PEEK # sa nejedna o basicovy prikaz alebo jeho rozsirenie, ale o funkciu, ktora sa pouziva vo vyrazoch. A vyhodnocovanie vyrazov nema nic spolocne s TADDR.
MTs píše:
3. vyprdnout se na syntab a napíchnout se pro vyhodnocení příkazu v mdosu jinam
Toto bude pre MDOS jedine schodne riesenie.

V obsluznej rutinke RST #08 (napr. na adrese #0266) bude treba otestovat ci navratova adresa je #1C8B (tam sa generuje error aj pri PEEK #) a ci CHADD ukazuje na znak '#' ktory tento error sposobil, a ci pred tymto znakom je nas PEEK (ktory moze byt od znaku este oddeleny nejakymi bielymi znami). A az ked toto vsetko bude splnene, mozeme pokracovat vo vyhodnocovani PEEK #. Hodnota TADDR sa kontrolovat nema, pretoze ta zavisi od konkretneho prikazu, v ktorom je vyraz obsahujuci PEEK # pouzity a preto to moze byt v podstate cokolvek.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Moderní klon D40/D80?
PříspěvekNapsal: 24.10.2020, 18:48 
Offline
Kecálek

Registrován: 06.04.2020, 16:24
Příspěvky: 241
Bydliště: Opava
Has thanked: 34 times
Been thanked: 76 times
Busy píše:
V obsluznej rutinke RST #08 (napr. na adrese #0266) bude treba otestovat ci navratova adresa je #1C8B (tam sa generuje error aj pri PEEK #) a ci CHADD ukazuje na znak '#' ktory tento error sposobil, a ci pred tymto znakom je nas PEEK (ktory moze byt od znaku este oddeleny nejakymi bielymi znami). A az ked toto vsetko bude splnene, mozeme pokracovat vo vyhodnocovani PEEK #. Hodnota TADDR sa kontrolovat nema, pretoze ta zavisi od konkretneho prikazu, v ktorom je vyraz obsahujuci PEEK # pouzity a preto to moze byt v podstate cokolvek.


Díky za objasnění. Využil bych tedy k tomu #021D až #0265. To místo je perfektně situované (ještě před vyhodnocováním SYNTAB) a je tam kód, který se nikdy neprovádí (zapomenutá debugovací rutina). Pochopil jsem, co jsi napsal, ale přeci jen se s tím budu trápit, protože zx rom zase tak zmáknutou nemám. Nechceš přiložit rovnou ten kód?
Já mám nyní toto (což je špatně, protože to rovnou tiskne na obrazovku, my však chceme jen předat hodnotu zpět basicu):

Kód:
         rst  #20
         cp   "#"
         jp   nz,#06C6
         rst  #20
         rst  #28
         defw #1C82
         call #1057
         rst  #28
         defw #1E99
         ld   a,b
         cp   #02
         ld   a,#0A
         jp   nc,#0204
         ld   hl,#3E00
         add  hl,bc
         ld   b,0
         ld   c,(hl)
         push bc
         ld   a,2
         rst  #28
         defw #1601
         pop  bc
         jp   #0FA6


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Moderní klon D40/D80?
PříspěvekNapsal: 24.10.2020, 21:55 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3675
Bydliště: Bratislava
Has thanked: 373 times
Been thanked: 798 times
PotPalo píše:
Mám blbý nápad. Keď sa už rieši POKE#, čo tak spraviť aj adresovanie ostatnej časti RAM, napríklad cez záporné čísla, od -1 po -1536?
Ja sa skor divim preco tam vobec davali ten offset #3E00 a nenechali adresy pre POKE v ich nativnom rozsahu 14336..16383. Ale asi sa rozhodli ze staci len poslednych 512 bajtov a chceli lahsie zapametatelny rozsah 0..512.

Napadli ma hned styri riesenia ako na to:

1. Prve je velmi primitivne, staci odstranit kontrolu na rozsah do 512 na adrese #06E0 a tiez aj ADD #3E00 na adrese #06EA a cela D80 ram bude potom dostupna v spominanom rozsahu 14336..16383. Ale toto nie je zial spetne kompatibilne, take typicke POKE #247 pojde do romky a aplikacie s prepinanim cez RST #00 sa budu logicky resetovat.

2. Ako prve riesenie, ale ak je adresa v POKE mensia ako 511 tak iba vtedy pripocitat #3E00, cim sa zabezpeci spetna kompatibilita, ale zostanu funkcne aj nativne adresy, cez ktore bude mozne pristupovat do celej D80 ramky.

3. Toto zachovava kompatibilitu v rozsahu 0..511, ale pre zvysok ramky zavadza adresovy priestor 512..2047. Takze nemame kontinualny adresovy priestor 0..2047, ale tento priestor je "zlomeny" na dve na seba nenadvezujuce casti. Na toto uplne postaci #06E0 zmenit CP 2 na CP 8 a medzi ADD HL,BC a LD (HL),A este pridat test BIT 6,H a aj je tento bit nenulovy, potom k HL este navyse pripocitat hodnotu #F800. V podstate iba 7 bajtov navyse:
Kód:
ld bc,#3e00
add hl,bc
bit 6,h
jr z,store
ld b,#F8
add hl,bc
store:
ld (hl),a
ret
4. Pokial chceme "kontinualny" priestor s adresami -1536..+511, uprava bude o dost zlozitejsia. V tomto pripade totiz nemozeme pouzit univerzalnu romkovu rutinku #1E85 ktora prevezme prvy parameter 0..65535 a druhy -256..+255, ale musime si samostatne prevziat druhy jednobajtovy parameter s vlastnym osetrenim jeho znamienka (pri zapornom hodnotu znegovat), a potom prvy parameter pri ktorom si tiez musime osetrit jeho znamienko (a tiez pri zapornom znegovat) a otestovat ho na rozsah -1536..+511. A potom uz len pripocitat #3E00 a mame adresu pre POKE. Odhadujem ze bude treba pridat tak 20 az 30 bajtov kodu.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Moderní klon D40/D80?
PříspěvekNapsal: 24.10.2020, 22:40 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3675
Bydliště: Bratislava
Has thanked: 373 times
Been thanked: 798 times
MTs píše:
Já jsem pro řešení 5.
Nechal bych 0-511 (pro plnou zpětnou kompatibilitu) a přidal i 14336 až 16383.
PotPalo píše:
Prikláňam sa k možnosti 1, ale s úpravou: čiže 0 až 511 bude po starom (kompatibilita zachovaná), potom bude rozsah ktorý bude "error", a následne 14336 až 16383 bude priame.
Cize obaja hlasujete pre moznost 2. To ma tesi, tato moznost sa najviac pozdava aj mne :)

(akurat teda PotPalo chce este navyse aby to pre rozsah 512..14335 vyhodilo chybu, co mi osobne pride zbytocne)


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Moderní klon D40/D80?
PříspěvekNapsal: 24.10.2020, 22:59 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3675
Bydliště: Bratislava
Has thanked: 373 times
Been thanked: 798 times
PotPalo píše:
Pokiaľ je robiť chybu zbytočné, tak potom by to mohlo byť rovno do 65535. :D
Ved tak to aj bude. Poke s adresami 16384 a viac pojde normalne do spektrackej ramky, takze tam bude jedno, ci uzivatel pouzije znak # v prikaze POKE alebo nie :)


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Moderní klon D40/D80?
PříspěvekNapsal: 24.10.2020, 23:08 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3675
Bydliště: Bratislava
Has thanked: 373 times
Been thanked: 798 times
Navrh na novu rutinku POKE# od adresy #06DE:
Kód:
ld e,a
ld a,b
cp 2
jr nc,skip
add a,#3E
ld b,a
skip:
ld a,e
ld (bc),a
ret


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Moderní klon D40/D80?
PříspěvekNapsal: 25.10.2020, 00:09 
Offline
Kecálek

Registrován: 10.07.2014, 01:57
Příspěvky: 169
Has thanked: 25 times
Been thanked: 225 times
teda pani... celkom ma udivuje, akeho kockopsa dokazete s chladnou hlavou navrhnut/odsuhlasit...

tu sa nebavite o programe, ktory si nejaky Janko z Hornej Dolnej doma zbastlil v basicu a pacil sa mu, lebo tam bolo vela farieb a pipal...

ako k tomu pridu adresy #0000-#01ff, ze cez POKE#/PEEK# s nimi nemozno ratat, ale zato adresy #3e00-#3fff su viditelne hned dvakrat?

za mna, ak chcete zvacsit rozsah adries a chcete byt spatne kompatibilni (co samozrejme hodnotim pozitivne), tak nerobte z "POKE #" bastarda, radsej nechajte "POKE #" tak ako je a spravte nieco nove, napr. "POKE &", alebo "POKE '" (alebo nejaky iny vhodnejsi znak).


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Moderní klon D40/D80?
PříspěvekNapsal: 25.10.2020, 10:33 
Offline
Kecálek

Registrován: 06.04.2020, 16:24
Příspěvky: 241
Bydliště: Opava
Has thanked: 34 times
Been thanked: 76 times
Každý máte svým způsobem pravdu.
V mdosu 2.2 já osobně upravím POKE# aby akceptoval pouze 0-511 a 14336-16383 ostatní vyhodí error out of range.
PEEK# bude stejně tak (pokud se mi to tedy podaří, protože tam bruslím na tenkém ledě a nepříjde mi to zrovna úplně snadné a Busy zatím mlčí :)


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Moderní klon D40/D80?
PříspěvekNapsal: 25.10.2020, 15:13 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3675
Bydliště: Bratislava
Has thanked: 373 times
Been thanked: 798 times
ub880d píše:
Busy píše:
ub880d píše:
ako k tomu pridu adresy #0000-#01ff, ze cez POKE#/PEEK# s nimi nemozno ratat, ale zato adresy #3e00-#3fff su viditelne hned dvakrat?
Zo systemoveho hladiska mas samozrejme pravdu, ale cisto prakticky - naco ti je plne pokrytie MDOS romky pomocou POKE ?! ;)
ze sa to pytas prave ty a prave tu ;] co ak si niekto da miesto romky baterkou zalohovanu sram (napr. kvoli jednoduchsiemu patchovaniu bugov, ci upgradu systemu)? alebo este lepsie eepromku (hi d80mini user ;])? to ze do nejakeho pamatoveho priestoru nejde zapisovat predsa nie je vlastnost basicu/operacneho systemu. ved, to je aj jedna z veci, ktoru sa prave pokusate na mdose zmenit. mdos definoval ze zapisovatelnych ma byt len 512 bajtov a citatelne ziadne. a vam sa nepaci ani to, ze sa da zapisovat len tych 512 a ani ta nesymetria v prikazoch - absencia PEEK#...
Vsetko beriem, akurat my sa teraz snazime o nejake jednoducho a rychlo spravitelne riesenie ktore nevyzaduje prilis velke zasahy do MDOS romky. Poziadavku na prevadzkovanie MDOSu v ramke s povolenym zapisom, vratane moznosti POKE do celych 16kB jeho priestoru, sme (zatial) neriesili.
ub880d píše:
Busy píše:
A (standart pre) samotny PEEK# este neexistuje, ten moze kludne fungovat vyhradne iba s nativnymi adresami, t.j. bez pripocitavania #3e00 k rozsahu 0..511.
akoze nie.. standard pre PEEK je, ze je to opak POKE. preco by to s PEEK# a POKE# malo byt inak? tym padom je jasne ako ma PEEK# fungovat a naimplementovat to inak by bolo prinajmensom matuce.
Ale ja pisem o PEEK# ako protipol POKE#, nie PEEK vo vseobecnosti. To znamena, ze ho mozeme vymysliet ako uzname za vhodne, nemusi nutne splnat vsetky atributy systematickosti (ked ho uz ani samotne POKE# z principu nemoze splnit) :) My ho prave chceme spravit ako protipol POKE#, t.j. cez adresu, ktorou sa naPOKE#-uju data, sa budu dat tieto data aj PEEK#-ovat. Standartom je iba to ze adresy 0..511 zodpovedaju poslednym 512 bajtom MDOS ramky a snazime sa toto nejak rozsirit na zbytok tej 2kB ramky v MDOSe.
Ak niekto bude chciet mat plny PEEK/POKE pristup do celych 16kB, na toto by som pouzil iny znak nez #, tak ako si navrhoval vyssie.
MTs píše:
PEEK# bude stejně tak (pokud se mi to tedy podaří, protože tam bruslím na tenkém ledě a nepříjde mi to zrovna úplně snadné a Busy zatím mlčí :)
Nemlcim ale spravit cez RST #08 obsluhu PEEK# pri vyhodnocovani obecneho vyrazu nie je az tak trivialne aby sa to dalo napisat len tak zfleku. Na to si musim najst cas a poriadne sa na to pozriet.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Moderní klon D40/D80?
PříspěvekNapsal: 26.10.2020, 10:42 
Offline
Kecálek

Registrován: 06.04.2020, 16:24
Příspěvky: 241
Bydliště: Opava
Has thanked: 34 times
Been thanked: 76 times
Jen takový nápad. Nezaložíme zcela novou tému s názvem "Vývoj MDOS 2.x" a nepřesuneme pár posledních stran tam?
Přeci jen toto stávající téma je spíše o HW a někoho to třebas vůbec nemusí zajímat....


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ů: 230 ]  Přejít na stránku Předchozí  1, 2, 3, 4, 5, 6, 7, 8 ... 16  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 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