OldComp.cz

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

Reklama!

Právě je 21 bře 2019, 06:49

Všechny časy jsou v UTC + 1 hodina




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 21 ]  Přejít na stránku Předchozí  1, 2
Autor Zpráva
 Předmět příspěvku: Re: SIF Term
PříspěvekNapsal: 08 led 2019, 21:57 
Offline
Kecálek
Uživatelský avatar

Registrován: 24 bře 2014, 07:10
Příspěvky: 143
Has thanked: 28 times
Been thanked: 50 times
Busy píše:
Moja rutinka sa od tej romkovej #028E nijak principialne nelisi, obe citaju klavesy rovnakou filozofiou: Pomocou 8 x IN postupne precitaju vsetkych 8 polrad a v kazdej sleduju ktory z dolnych 5 bitov nacitaneho udaja je nulovy. Jedine, cim sa lisia, je ze moja rutinka to robi o kusok rychlejsie a cita polrady v opacnom poradi ako romkovska - toto by mohlo mat vplyv na pripadny ghosting sposobeny parazitnymi kapacitami alebo "prehnilou" membranou sposobujucou ze sa sucasne "stlacia" aj nejake klavesy okolo.

Na citanie niektorych klaves moze mat vplyv aj zatazenie zbernice - pokial adresove budice CPU pracuju na hranici svojich moznosti, moze sa stat ze sa nieco nenacita v poriadku. Ja som tento problem tiez kedysi maval na svojej +2 (uplne na to stacilo jedno TTL hradlo zavesene na A15 !), po osadeni budicov zbernice (LS244,LS245) problem zmizol a vsetko mi odvtedy fungovalo bez problemov.

V kazdom pripade, ja osobne si myslim ze primarny problem nebude v samotnej rutinke na citanie klavesnice.


Kluci,, zcela polopatistcka otázka. A jak Teda vysvětlíme fakt, že v Basicu mi funguje jak otazník, tak CS+F. I v Alasmu a MBCommanderu, kde mám Busyho rutinu.

Mate určitě pravdu, že to bude i hw, ale ty funkční klávesy v Basicu stále ukazují i na problém softwarový, tedy obsluzna rutina klávesnice.

_________________
http://hood.speccy.cz


Nahoru
 Profil  
 
 Předmět příspěvku: Re: SIF Term
PříspěvekNapsal: 09 led 2019, 00:52 
Offline
Profík
Uživatelský avatar

Registrován: 18 kvě 2013, 13:56
Příspěvky: 896
Has thanked: 116 times
Been thanked: 229 times
Dušky má pravdu, čtení klávesnice se chová různě na různých adresách v RAM, tím pádem nutně i rutina v ROM dělá jiné chyby než rutiny na jiných místech. Bohužel to tak úplně nevysvětluje, proč v BASICu jsme schopni něco napsat a použití téže rutiny odjinud nevede ke stejně dobrému výsledku.

Nicméně to asi vysvětluje, proč se chování sif-termu změnilo od předchozí verze. Jednou ze zásadních změn byly velké přesuny v RAM, aby mi zbyl volný blok mezi 32768-49152 pro případnou historii zobrazených řádků (je-li to vůbec realizovatelné).

Zkuste následující program, přikládám zdroják a TAPku - primitivní, ale názorné a relokovatelné.
Kód:
        cpu     z80undoc
        org     32768

START   ld      hl,16384        ; cls
        ld      de,16385
        ld      bc,6144
        ld      (hl),0
        ldir
        ld      bc,767
        ld      a,56
        ld      (hl),a
        ldir

        ld      a,6*8+6
        ld      (22528+1),a
        ld      (22528+32),a

        ld      a,4
        out     (254),a

LOOP    ei                      ; hlavní smyčka
        halt
        di

        ld      hl,16384        ; 1. 256 čtení
        ld      d,0

READ_L2 push    hl
        ld      bc,32766
READ_L1 in      a,(c)
        ld      (hl),a
        inc     h
        rrc     b
        jr      c,READ_L1
        pop     hl
        inc     hl
        dec     d
        jr      nz,READ_L2

        ld      hl,16384+2048   ; 2. 256 čtení
        ld      d,0

READ_L4 push    hl
        ld      bc,32766
READ_L3 in      a,(c)
        ld      (hl),a
        inc     h
        rrc     b
        jr      c,READ_L3
        pop     hl
        inc     hl
        dec     d
        jr      nz,READ_L4

        call    8020            ; Break?
        jr      c,LOOP
        ei
        ret

A až se dokončí upload, tak tady bude video https://youtu.be/rIR6w8o5V-0 .


Přílohy:
test.tap.gz [225 bajtů]
33 krát

_________________
https://cygnus.speccy.cz ZX Spectrum 128k, Betadisk, DivIDE, ESXDOS
Nahoru
 Profil  
 
 Předmět příspěvku: Re: SIF Term
PříspěvekNapsal: 09 led 2019, 10:30 
Offline
Kecálek
Uživatelský avatar

Registrován: 24 bře 2014, 07:10
Příspěvky: 143
Has thanked: 28 times
Been thanked: 50 times
zxcygnus píše:
Dušky má pravdu, čtení klávesnice se chová různě na různých adresách v RAM, tím pádem nutně i rutina v ROM dělá jiné chyby než rutiny na jiných místech. Bohužel to tak úplně nevysvětluje, proč v BASICu jsme schopni něco napsat a použití téže rutiny odjinud nevede ke stejně dobrému výsledku.

Nicméně to asi vysvětluje, proč se chování sif-termu změnilo od předchozí verze. Jednou ze zásadních změn byly velké přesuny v RAM, aby mi zbyl volný blok mezi 32768-49152 pro případnou historii zobrazených řádků (je-li to vůbec realizovatelné).




Vyborne, tedy asi tusime, odkud vitr vane. Nesouvisi to nahodou s rychlou a pomalou pameti?

Tvuj puvodni kod SIF Termu ma im2 rutinu, kde se vola klavesnice od adresy #Cxxx a vyse. A je problem.

Zatimco ROM vola klavesnici v oblasti 0- #3FF a je to bez problému.


Podobně v MBCommanderu je Busyho rutina na adrese #BE00, v Nmi menu na #20D2. A v Alasmu, kde nemám sice Busyho rutinu, ale někde mezi #8000 a #BFFF mám call #28E- a klávesnice funguje. I když musím přiznat, že v MBC je i zvuková odezva a je slyšet jakési dvojkliknutí při stisku otazníku (asi právě nějaký zákmit), ale v MBC se čte klávesnice přes IM2, mám podezření, že to dělá trošku neplechu. Podle mě lépe, kde to jde, dát čekací smyčku na klávesnici, nikoliv IM2.


Mohl bys zkusit IM2 volání v tvém původním kódu SIF Termu, přesunout do oblasti #8000- #BFFF? Nic víc, podle mě by to mohlo zabrat.


Hood

_________________
http://hood.speccy.cz


Nahoru
 Profil  
 
 Předmět příspěvku: Re: SIF Term
PříspěvekNapsal: 09 led 2019, 18:14 
Offline
Profík
Uživatelský avatar

Registrován: 18 kvě 2013, 13:56
Příspěvky: 896
Has thanked: 116 times
Been thanked: 229 times
hood píše:
Vyborne, tedy asi tusime, odkud vitr vane. Nesouvisi to nahodou s rychlou a pomalou pameti?
Pravděpodobněji souvisí se stavem adresové sběrnice, tj. jestli jsou A8 - A15 v L, nebo H vůči adrese portu, kterou se snažíme číst.
hood píše:
Zatimco ROM vola klavesnici v oblasti 0- #3FF a je to bez problému.
Není to bez problémů. Ty jsi psal, že ti to nefunguje a já to zkoušel na ZX 48k+ a taky jsem měl potíže i když jiné. Navíc ZX 48k+ (asi všechny ISSUE) jsou známé tím, že jim občas blbnou uvozovky, nebo něco jiného. A co je důležité, tentýž počítač s gumákovou membránou bude fungovat perfektně. To mám pro pluska s blbnoucími uvozovkami a pod. opakovaně odzkoušeno. Ostatně rutinu na #28E (dekadicky 654) jsem používal předtím, než jsem začal experimentovat s tou od Busyho.
hood píše:
Podle mě lépe, kde to jde, dát čekací smyčku na klávesnici, nikoliv IM2.
Nepomůže. Viz ten test, interrupt nepoužívá (IM1 ani IM2), jen halt, zkusil jsi ho? Zkusil jsi ho na všech svých ZX Spectrech? Zkusil jsi ho na různých adresách? S jakými výsledky? Jaké konkrétní projevy jsi pozoroval na konkrétních adresách?
hood píše:
Mohl bys zkusit IM2 volání v tvém původním kódu SIF Termu, přesunout do oblasti #8000- #BFFF?
Mohl, ale hodně teď nestíhám, vracím se pozdě večer domů a čert ví, jestli najdu vůbec nějaký čas o víkendu. Klidně by se mohlo stát, že to budu muset nechat pár týdnů u ledu.

A je to právě oblast paměti, kterou bych pro čtení klávesnice nechtěl používat. Viz memory mapa v balíčku se zdrojáky.

Než odpovíš, přečti si to prosím pozorně znovu, zkus ten test.tap na různých adresách (chtělo by to zkusit i v ROM v oblasti #00 - #FF, nebo v RAM na #FF00 až #FFFF ... třeba je to zrovna to nejlepší místečko?).

A mimochodem, vypadá mnohem lépe, když z citace vymažeš zbytečné části, zvláště kvůli jedné větě odpovědi citovat několik odstavců je nepřehledné, náhled pomáhá.

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


Nahoru
 Profil  
 
 Předmět příspěvku: Re: SIF Term
PříspěvekNapsal: 10 led 2019, 11:15 
Offline
Profík
Uživatelský avatar

Registrován: 18 kvě 2013, 13:56
Příspěvky: 896
Has thanked: 116 times
Been thanked: 229 times
Mimochodem, včera jsem to přeci jen krátce zkoušel na pár adresách a zdá se, že na #FE00 (tj. 254*256) to funguje správně pro všechny kombinace caps shift + něco i symbol shift + něco.

Ale vážně by mi pomohlo, kdybyste to vyzkoušeli na co možná nejvíc ZX Spectrech - 48k pluska, 128k toastrack, 128k +2 i ty +2B a +3 Amstrady ať máme přehled pro příště.

Na mé +2 určitě zlobí čtení klávesnice v oblastech (uvádím startovní adresy 87 bytů dlouhé rutiny + pár bytů pozice in a,(c))
Kód:
24500 - 0x5FB4 - 0b0101111110110100
25000 - 0x61A8 - 0b0110000110101000
32768 - 0x8000 - 0b1000000000000000
49152 - 0xC000 - 0b1100000000000000
64000 - 0xFA00 - 0b1111101000000000
65280 - 0xFF00 - 0b1111111100000000
Všimněte si, že samotná D8 = 0 nestačí, jinak by to na 32768, 49152, 64000 fungovalo správně.

Například na 65280 mi nefungovaly kombinace CS+J (přidávalo se F) a CS+N (přidávalo se C)

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


Nahoru
 Profil  
 
 Předmět příspěvku: Re: SIF Term
PříspěvekNapsal: 22 led 2019, 10:53 
Offline
Kecálek
Uživatelský avatar

Registrován: 24 bře 2014, 07:10
Příspěvky: 143
Has thanked: 28 times
Been thanked: 50 times
zxcygnus píše:
Mimochodem, včera jsem to přeci jen krátce zkoušel na pár adresách a zdá se, že na #FE00 (tj. 254*256) to funguje správně pro všechny kombinace caps shift + něco i symbol shift + něco.

Ale vážně by mi pomohlo, kdybyste to vyzkoušeli na co možná nejvíc ZX Spectrech - 48k pluska, 128k toastrack, 128k +2 i ty +2B a +3 Amstrady ať máme přehled pro příště.


Ahoj Cygnusi a vsichni s nefungujicimi klavesami,

na testovani tveho programu testovani klaves jsem se nedostal, se priznavam. Jen jsem sledoval tve video na youtube, abych pochopil smysl celeho zkoumani. Tzn. chapu to tak, ze pokud zacnou pixely po stisku klaves poblikavat, jde o nezadouci jevy. Snad se na to jeste dostanu, abych to testoval. Jinak jedine moje zjisteni je, ze i kdyz jsem odpojil dlouhy Jiiruv expansion interface i s NeoGS, takze jsem sestave vyrazne odlehcil, problem s nefungujicim "?" a velkym "F" pretrvaval.

Nicmene, bastlil jsem si RGB kabel, a kdyz jsem mel na stole pajku, tak po vzoru sve stare +2 jsem si pres klavesnicovou diodu D33 hodil paralelne kondenzator o hodnote 151 (a ted nevim, jestli piko nebo nano). Pak se jeste vyplati dat kondik cca 181 pres D35. Vim, ze to podstatu zakmitu, nebo nereakce klavesnice neresi, ale problem ano. A v puvodni verzi SIF Termu se otaznik a velke F rozjelo v pohode.

Takze, kdo nemate cas laborovat a hledat priciny, zkuste vyse popsane.

Hood

_________________
http://hood.speccy.cz


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

Všechny časy jsou v UTC + 1 hodina


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvní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