OldComp.cz
https://oldcomp.cz/

XY4150 a připojení k ZX přes 8255 včetně softwaru
https://oldcomp.cz/viewtopic.php?f=144&t=8549
Stránka 410

Autor:  Ladislav [ 08.06.2020, 13:49 ]
Předmět příspěvku:  Re: XY4150 a připojení k ZX přes 8255 včetně softwaru

Suuuuper, rád otestuju,
ale nejsem v asembleru vůbec zběhlý, můžu Tě moc poprosit
o přiložení té utility zvlášt ve formátu, který nalouduju do Desktopu -třeba jako TAPku? Na disketu si jí už pak “vypískám”.

Ještě jednou Moooc děkuji,
Láďa

Autor:  MTs [ 08.06.2020, 14:26 ]
Předmět příspěvku:  Re: XY4150 a připojení k ZX přes 8255 včetně softwaru

Ladislav píše:
Suuuuper, rád otestuju,
ale nejsem v asembleru vůbec zběhlý, můžu Tě moc poprosit
o přiložení té utility zvlášt ve formátu, který nalouduju do Desktopu -třeba jako TAPku? Na disketu si jí už pak “vypískám”.

Ještě jednou Moooc děkuji,
Láďa


Ještě není co pískat. Jsme teprve na začátku. Dal jsem tu tento "polotovar", aby se mohlo v práci pokračovat a nečekalo se jen na mne. Já se teď na nějakou dobu odmlčím. Vrátím se k tomu později...

Autor:  Martin1 [ 09.06.2020, 10:12 ]
Předmět příspěvku:  Re: XY4150 a připojení k ZX přes 8255 včetně softwaru

MTs píše:
Ok. ok. Dík za info. Pořád ale nechápu proč ovladač zapisuje na ten ready port (63)? Co to má za význam?

Netestuje program, či má pripojený správny interfejs?
M1

Autor:  RaceSoft [ 09.06.2020, 10:26 ]
Předmět příspěvku:  Re: XY4150 a připojení k ZX přes 8255 včetně softwaru

Martin1 píše:
MTs píše:
Ok. ok. Dík za info. Pořád ale nechápu proč ovladač zapisuje na ten ready port (63)? Co to má za význam?

Netestuje program, či má pripojený správny interfejs?
M1

Nevím, ale tím, že na nějaký port něco zapíšu, aniž bych pak cokoliv přečetl a není tam žádná zpětná vazba, asi nezjistím, jestli na tom portu něco visí... Ale to je jen má domněnka. Kdyby z něj četl, tak to beru.

Petr

Autor:  Martin1 [ 09.06.2020, 13:15 ]
Předmět příspěvku:  Re: XY4150 a připojení k ZX přes 8255 včetně softwaru

MTs píše:
xy4150-2.bin - binárka utility xy4150(2) pro desktop
2. xy4150(2) plnohodnotný zdrojový kód, ve kterém už se neodkazujeme na fyzické adresy, ale na pojmenované návěští, je importovatelný (po malých reformátovacích úpravách) do Promethea (GENS příkaz) nebo AS a následně s tím už můžeme normálně pracovat
Nyní se tedy musí testnout, jestli zdroják z druhého listu po zkompilování dá přesně stejnou binárku jako je xy4150-2.bin. Pokud nedá, mám ve zdrojáku chybu, která se musí najít a opravit. Jakmile bude výsledek 1:1 s originálem, můžeme se v tom začít hrabat.

Boli tam tri preklepy a jedna zlá hodnota. Po oprave sedí s binárkou.
Bolo by dobré niekde to uložiť, kde by to mohlo editovať viac ľudí.
Keďže tento sw nepoznám, okomentoval som len nejaké všeobecné veci.
Odkazuje to však aj na nejaký ďalší kód.
M.

Přílohy:
xy4150-comm-20200609a.zip [3.67 KiB]
60 krát

Autor:  MTs [ 09.06.2020, 15:01 ]
Předmět příspěvku:  Re: XY4150 a připojení k ZX přes 8255 včetně softwaru

Martin1 píše:
Boli tam tri preklepy a jedna zlá hodnota. Po oprave sedí s binárkou.
Bolo by dobré niekde to uložiť, kde by to mohlo editovať viac ľudí.
Keďže tento sw nepoznám, okomentoval som len nejaké všeobecné veci.
Odkazuje to však aj na nejaký ďalší kód.
M.

Super! Díky za kontrolu a opravu. Ten další kód asi myslíš adresy mimo prostor utility, tj. přímo do Desktopu. Měly by odpovídat podprogramům v této dokumentaci:
https://mts.speccy.cz/doc/desktop-jak-psat-utility.pdf

Autor:  RaceSoft [ 09.06.2020, 15:22 ]
Předmět příspěvku:  Re: XY4150 a připojení k ZX přes 8255 včetně softwaru

Letmo jsem koukal do toho zdrojáku - nezapisuje pořád na port 63, ale v tech podprogramech OUT1 a OUT2 vždy napřed upraví adresu výstupního portu, který se bude ovládat. Ta 63 je tam jen z doby kompilace zdroje, ale při každém volání se upraví podle hodnoty uložené v Acc.

Petr

Autor:  MTs [ 09.06.2020, 18:12 ]
Předmět příspěvku:  Re: XY4150 a připojení k ZX přes 8255 včetně softwaru

RaceSoft píše:
Letmo jsem koukal do toho zdrojáku - nezapisuje pořád na port 63, ale v tech podprogramech OUT1 a OUT2 vždy napřed upraví adresu výstupního portu, který se bude ovládat. Ta 63 je tam jen z doby kompilace zdroje, ale při každém volání se upraví podle hodnoty uložené v Acc.

Petr

Ano, avšak projeď (prokrokuj) celý tisk v emulátoru (debuggeru) a uvidíš, že OUT (63),a se dělá. Někdy se změní za jiný, ale i ten 63 tam bývá a vždy se tam jen zapisuje.

Autor:  rombor [ 09.06.2020, 19:48 ]
Předmět příspěvku:  Re: XY4150 a připojení k ZX přes 8255 včetně softwaru

MTs píše:
Ještě mě zarazilo, že ready test se provádí jen po vložení papíru (po volbě nový papír v menu). Při tisku se již netestuje. To je nějaké divné ne?
Popis signálu READY z návodu k XY4150.

Přílohy:
xy41xx-ready.png
xy41xx-ready.png [ 302.42 KiB | Zobrazeno 1234 krát ]

Autor:  MTs [ 09.06.2020, 20:51 ]
Předmět příspěvku:  Re: XY4150 a připojení k ZX přes 8255 včetně softwaru

Ano, to by odpovídalo, že se ready testuje jen na začátku a že inicializace tisku posouvá vozík na okraj, aby se narazilo do toho snímače. Proč se ale zapisuje na ready ještě během tisku mi je stále nejasné. Možná, ale že to tak musí být u starších verzí plotru. Ta utilita není výhradně jen pro xy4150. V menu po ext+i je vidět i jiná čísla modelů v nadpisu...

Každopádně teď když je plnohodnotný zdroják nám to může být šumák. Můžeme zachovat celý princip tisku a jen ty outy vyměnit za res/set bity pro 8255. Zajímavé to bude s volným místem :box:
Ale Busy nám s tím kdyžtak píchne (pak však lituji toho, kdo to ještě někdy v budoucnosti bude o5 disassemblovat a zkoumat :lol: (ne abyste to pochopili špatně! To byl kompliment a poklona Busymu :god: )

Autor:  RaceSoft [ 09.06.2020, 20:59 ]
Předmět příspěvku:  Re: XY4150 a připojení k ZX přes 8255 včetně softwaru

Instrukce OUT je v celém zdrojáku celkem 6x, z toho je dvakrát nastavena na adresu 254 (0FEh) - řádky 713 a 725. Pak je 1x v OUT1 (řádek 606), 1x v OUT2 (řádek 647) a 2x v DOIT5 (řádky 626 a 632). Ve všech posledních 4 případech volání příslušných podprogramů je napřed naplněn Acc (případně registr C) konkrétním portem, do kterého se bude zapisovat (např. konstrukce LD A,223, CALL OUT1) a hned po vstupu do podprogramu je provedena instrukce LD (SAMOx+1),A, která zmodifikuje kód programu a změní tím adresu výstupního portu na tu, která je nastavena v Acc (případně C). Netroufám si tipnout, jaká hodnota se vkládá do registru C (řádek 573), ale ve všech ostatních případech je výstupní port vždy rozdílný od 63.

Kód:
NEWPAP
   ld   a,251         ; A2 = 0   pero hore - cílový port
   call   OUT2         ; volání zvednutí/spuštěného pera s časovou prodlevou

OUT2
   ld   (SAMO8+1),a         ; modifikace adresy instrukce OUT
   ld   de,5500            ; casova konstanta
LOOP2A
   dec   de
   ld   a,d
   or   e
   jr   nz,LOOP2A         ; odpocitaj
SAMO8
   out   (63),a            ; adresa 63 je přepsána instrukcí LD (SAMO81+1),a
   ret   


Adresa portu 63 se v celém programu (po příslušných samomodifikacích) podle mně vůbec nevyskytuje.

Petr

Autor:  MTs [ 09.06.2020, 21:20 ]
Předmět příspěvku:  Re: XY4150 a připojení k ZX přes 8255 včetně softwaru

RaceSoft píše:

Adresa portu 63 se v celém programu (po příslušných samomodifikacích) podle mně vůbec nevyskytuje.

Petr

Dej zarážky na ty outy, testování ready nastav, že je vždy ready (viz někde výše jak jsem psal), napiš do desktopu jedno velké T , dej ext+i a pak ext+p pro tisk a debuguj/krokuj. Fakt jsem tam měl mnohokrát out (63),a který se skutečně provedl. Ale zviklal jsi mě, až budu mít prostor, znovu to prokrokuju...

Autor:  RaceSoft [ 09.06.2020, 22:07 ]
Předmět příspěvku:  Re: XY4150 a připojení k ZX přes 8255 včetně softwaru

Bohužel nemám ZX, abych si to mohl vyzkoušet. Vložil jsem si výše uvedený kód do online emulátoru Z80 na webu, uložil, zkompiloval a jal se krokovat. Problém je v tom, že debuger si z kódu v paměti vytvoří posloupnost mnemotechnických instrukcí (LD, OUT, RET atd.), ale tato posloupnost je většinou statická - nepromítnou se do ní případné změny v operační paměti, kde je běží program. Takže v emulátoru jsem viděl, jak se po provedení instrukce LD (SAMO8+1),A v monitorované části RAM správně změnila posloupnost byte D3 3F (OUT (03Fh),A) na D3 FB (OUT (0FBh),A), ale debuger tvrdošíjně tvrdil OUT (03Fh),A, ačkoliv v RAM byla již adresa portu jiná. Suprově tohle ale funguje v emulátoru PMD85 bratří Bóriků, kde se opravdu disassembluje instrukce až podle toho, kam ukazuje PC - tam to správně napsalo OUT (0FBh),A.

Petr

Autor:  MTs [ 10.06.2020, 07:03 ]
Předmět příspěvku:  Re: XY4150 a připojení k ZX přes 8255 včetně softwaru

RaceSoft píše:
Bohužel nemám ZX, abych si to mohl vyzkoušet. Vložil jsem si výše uvedený kód do online emulátoru Z80 na webu, uložil, zkompiloval a jal se krokovat. Problém je v tom, že debuger si z kódu v paměti vytvoří posloupnost mnemotechnických instrukcí (LD, OUT, RET atd.), ale tato posloupnost je většinou statická - nepromítnou se do ní případné změny v operační paměti, kde je běží program. Takže v emulátoru jsem viděl, jak se po provedení instrukce LD (SAMO8+1),A v monitorované části RAM správně změnila posloupnost byte D3 3F (OUT (03Fh),A) na D3 FB (OUT (0FBh),A), ale debuger tvrdošíjně tvrdil OUT (03Fh),A, ačkoliv v RAM byla již adresa portu jiná. Suprově tohle ale funguje v emulátoru PMD85 bratří Bóriků, kde se opravdu disassembluje instrukce až podle toho, kam ukazuje PC - tam to správně napsalo OUT (0FBh),A.

Petr

No já také krokoval jen v emulátoru - Spectaculator (je na to fakt výborný). Ale ty jo, že by v debuggerech byla tato chyba? To se mi ani nechce věřit.

Autor:  Martin1 [ 10.06.2020, 14:18 ]
Předmět příspěvku:  Re: XY4150 a připojení k ZX přes 8255 včetně softwaru

RaceSoft píše:
Adresa portu 63 se v celém programu (po příslušných samomodifikacích) podle mně vůbec nevyskytuje.

Noazaj tam nie je. Vzdy je zmenena podla potreby.
OUT1 je urceny na krokovanie, ale vyuziva sa aj na impulzy Ready
OUT2 je jednoduchy vystup na port
DOIT5 je pravdepodobne na krokovanie dvoch motorv sucasne
Ten kod je sialenstvo samo o sebe, mnozstvo samomodifikacii a nasobnych datovych pointerov. :hammer:
Zabili ma skoky na Menu typu
Kód:
STARTI   ....
START0  jr STARTI
START1  jr START0
START2  jr START1
START3  jr START2

Co sa dalo, som rozlustil, dosiel som k zaveru, ze sa jedna o kod, ktory na plotri vykresluje binarne, tedy bod za bodom a nie vektorovo.
V tejto faze odovzdavam, neviem, ci este budem mat na to chut....Napisat nove by snad bolo jednoduchsie.

Přílohy:
xy4150-comm-20200610.zip [5.37 KiB]
63 krát

Stránka 410 Všechny časy jsou v UTC + 1 hodina [ Letní čas ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/