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 310

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

Pavel.Krivanek píše:
Ta čísla portů sama o sobě kódují výstupní akci pro ten initerface, není to "jeden drát = jedna funkce", viz https://github.com/berk76/plottercontroller/wiki. Tipoval bych, že port 253 bude pro pero. Ve zdrojáku Superplottu se také často volá.


Jeden drát = dvě možné akce (buď logická 0 nebo 1). Více z principu není možné.
Jen samozřejmě mám 256 možných hodnot pro odeslání na jeden samostatný port (instrukce OUT) takže je otázka jestli i toho je nějak využito anebo se mastí pořád stejná hodnota...

Nejjednodušší cesta je vzít pc emulator a odkrokovat celou utilitu během tisku. Tím se přesně zjistí jak to funguje a bude se to dát přepsat. Ale význam portů a možnosti hodnot na nich odesílaných by to samozřemě příjemně usnadnil.

Autor:  Pavel.Krivanek [ 04.06.2020, 20:15 ]
Předmět příspěvku:  Re: XY4150 a připojení k ZX přes 8255 včetně softwaru

Citace:
Jeden drát = dvě možné akce (buď logická 0 nebo 1). Více z principu není možné.
Jen samozřejmě mám 256 možných hodnot pro odeslání na jeden samostatný port (instrukce OUT) takže je otázka jestli i toho je nějak využito anebo se mastí pořád stejná hodnota...

Hodně je poznat z toho schématu od rombora. Akce pro plotter se posílají pomocí adresových vodičů a z datových má význam jen D7.

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

Pavel.Krivanek píše:
Hodně je poznat z toho schématu od rombora. Akce pro plotter se posílají pomocí adresových vodičů a z datových má význam jen D7.

Zaujimavý interfejs, obsadzuje skoro celý adresný priestor A1, A2, A3, A4, A5, A6, to pobeží len na gumákovi bez akejkoľvek ďalšej periférie.
M1

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

Tak jsem tu utilitku desktopu prokrokoval debuggerem (Win Spectaculator).
Jako zarážky stačí dát adresy 47066, 47848, 47886, 47897, 47923 s tím, že před vlastním krokováním je dobré ještě upravit na nulu (NOP) hodnotu adres 47070 a 47071 kde je test ready plotru. Těmi dvěmi NOPy zajistíme, že plotter bude vždy ready a tisk "nasucho" vždy proběhne.

Bylo to zajímavé sledovat. Ačkoliv už zhruba chápu jak to funguje (tedy s porty 199 x+, 207 x-, 215 y+, 223 y-), tak pořád mi unikají 251, 253 a 63. Tam vždy byla při tisku outována hodnota nula. Já čekal spíše nenulovou anebo stejný princip jako u 199,207,215,223 kde byla vždy 1x nenulová hodnota a pak dvakrát nulová, tj. pochopil jsem z toho, že pro jeden posun po X nebo Y se musí outnout 3x (1x s nenulovu hodnotou a pak 2x s nulovou) a ještě je mezi nimi pauza, která je nastavitelná v menu utility pod klávesou 3 (speed).

Můj závěr je takový, že aby to fungovalo s 8255, bude se to muset celé přepsat, protože jednak princip outování u 8255 bude jiný a pak tu je ještě ten samopřepisující se kód za běhu programu. :hang: Jednodušší je to opravdu asi napsat znovu. Dám si to na TODO list a možná se k tomu někdy v budoucnu vrátím. Nyní ale toto pole opustím, protože času není mnoho a já bych si chtěl "pohrát" spíše s ESXDOsem MDOSem3, MDOSem 2.1 a MFC. :joystick:

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

MTs píše:
Bylo to zajímavé sledovat. Ačkoliv už zhruba chápu jak to funguje (tedy s porty 199 x+, 207 x-, 215 y+, 223 y-), tak pořád mi unikají 251, 253 a 63. Tam vždy byla při tisku outována hodnota nula. Já čekal spíše nenulovou anebo stejný princip jako u 199,207,215,223 kde byla vždy 1x nenulová hodnota a pak dvakrát nulová, tj. pochopil jsem z toho, že pro jeden posun po X nebo Y se musí outnout 3x (1x s nenulovu hodnotou a pak 2x s nulovou) a ještě je mezi nimi pauza, která je nastavitelná v menu utility pod klávesou 3 (speed).
nuz, ak pises o drivri, ktory pouziva originalny interface, tak zo schemy interface vyplyva ze je jedno ake hodnoty sa outuju, zalezi na adrese, nie na hodnote. predpokladam ze tie hodnoty co si tam videl boli len proste nahodne hodnoty registrov v okamihu outu. jedine, kde interface prichadza do kontaktu s datovou zbernicou je ked pocitac cita signal ready, ktory vycita na D7. A tiez, nerozumiem tej pauze, nema to nahodou krokove motorceky? ked je tam nastavovanie osi x/y a hodnoty +1/-1 a signal na prevedenie kroku, tak by som cakal, ze na tom kroku treba pulzovat, aby sa to stale hybalo, ze inak sa to pohne len o jeden krok a bude cakat na dalsi pulz na signali krok...

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

Ano, to by mohlo být, to dává pak smysl.
251 je "port led reset " což bude víceméně nějaký zbytečný out, který na 8255 stejně neumíme ovlivnit (dle schématu zapojení tam u plotru takovýto pin není). Zbývá 63 a 253. To by tím pádem mohlo být pero. Jeden bude pero přitlač = piš, druhý pero odeber = nepiš. (???)

Tím pádem by stačilo pouze číslo portu předělat na správný zápis na 8255 hodnotu což si myslím jsem schopen tady už načrtnout...

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?

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

Nevím, jestli jsem to vydedukoval správně, ale vyšlo mi následující: OUT na 251 (FBh)- PEN DOWN, OUT na 253 (FDh) - PEN UP, a OUT/IN na 63 (3Fh) nastavení/test signálu /RDY - jediné místo, kde se pracuje s datovou sběrnicí, konkrétně s bitem D7. Na jiných portech na vyslaných datech nezáleží - viz zapojení rozhraní MS-SP. Plotry XY41xx (mimo XY4160) mají signál /RDY, který signalizuje připravenost plotru k práci. Signál je neaktivní (hodnota H) po zapnutí plotru, po založení papíru (mikrospínač napojený na páčku zvedající přítlačnou kladku papíru) nebo při naražení vozíku pera na koncové spínače na obou stranách vozíku pera. Pokud není stisknutý žádný spínač (kladka papíru nebo dorazy vozíku), shozením do hodnoty L (bit D7 na OUTu) ze strany počítače, se přepne také do stavu L - připraven (viz manuál k XY41xx).

Podle zapojení MP-SP je obsazení adresových vodičů následující:

A0 - nepoužito
A1 - sklápění pera
A2 - zvedání pera
A3 - +/-
A4 - X/Y
A5 - STEP
A6 - čtení/nastavení /RDY
A7 - nepoužito
Datový byte je použité pouze při čtení/zápisu hodnoty pro signál /RDY a to konkrétně do bitu D7

Snad je alespoň něco z toho pravda...

Petr

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

Podle mě (dle prokrokování v debuggeru):
191 ready
199 x+
207 x-
215 y+
223 y-
251 nejsem si jistý, ale jde o nějaký typ resetu, který zřejmě dá pero pryč
253 pero pryč
63 pero piš

Nejjednodušší bude si to ověřit z Basicu. Pan Ladislav by mohl s originálním interface outnout jedenkrát OUT 63,0 a pak několikrát (10x) nějakým xy outem (např. 207,0). Pak jednou OUT 253,0 a zase několikrát OUT 207,0. Následně celý test zopakovat, ale místo 253,0 použít 251,0. Tím zjistíme co je pero piš a co pero nepiš.

U 8255ky se toto outování musí překonvertovat na patřičný set/res na příslušném bitu brány B dle schématu. To je celé. Jen do toho ovladače to bez celkového přepsání jednoduše nePATCHneme. :(

Autor:  EC1045.01 [ 06.06.2020, 11:10 ]
Předmět příspěvku:  Re: XY4150 a připojení k ZX přes 8255 včetně softwaru

Mám tu dva ovladače ze SAPI-1 ZPS-2 kdy jeden je pro MINIGRAF a druhý pro XY41xx. Rozdíl je jen v tom jak se výsledně poskládají data, co se pošlou na port (pokut budu brat v potaz jen vlastní kreslící část). Aneb se liší jen dva podprogramy jinak výkonová část je stejná. S trochou práce jde ten ovladač udělat obojetný. Takže pokut výkonné jádro bude stejné (zatím jsem ani na jiné nenarazil) tak by neměl bít problém použít modul z ovladače ze SAPI-1 pokut bude výkonné jádro jiné tak to může posloužit jako inspirace.

S GitHub nebo jak se to jmenuje, nejsem moc kamarád tak jsem do zdrojáku nedíval, ale zajímalo by mě který ichtil vyplácal všechny volné adresy portů, aby mohl ovládat jedeno zařízení … jediné co mně napadá je, že šetřili místem nebo programátor byl levej jak turecká šavle.

Je pravda, že poskládat data na port pro XY41xx je o dost složitější a tím pádem i delší kód ale zas tak katastrofální to není. No než jsem pochopil jak je to udělané tak to byla docela fuška … aneb jsem potřeboval zjistit jak tu příšeru typu XY41xx připojit … osobně dávám přednost MINIGRAFu.

Přílohy:
Poznámka: ovladace ze SAPI-1 ZPS-2 pro MINIGRAF a XY41xx
plotr.rar [14.21 KiB]
74 krát

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

Koukal jsem se do programu SUPERPLOT na GitHubu a jsem přesvědčen, že hodnota PORT_LED_RESET je chybně pojmenovaná, protože se týká zvednutí pera (mohla by se jmenovat např. PORT_PEN_UP). Je to vidět v inicializaci programu/plotru (adresa 0EE53h), kde se OUTne na PORT_LED_RESET (zvedni pero - je to logické, když se hledá kraj papíru, pero by se po něm mohlo šourat) a pak na PORT_LED - pokus o překlopení /RDY (nebo LED, to je jedno). V další inicializaci se používá již jen PORT_LED a to jak pro IN tak pro OUT. Adresa PORT_LED je 0BFh (případně může být 03Fh nebo 63 - signál A7 není nijak využit), což přesně koresponduje s použitím jednotlivých adresních vodičů směrem k plotru (viz příspěvek výše) - zde tedy A6.

Hodnota PORT_LED_RESET (0FBh nebo 251, alias PORT_PEN_UP) je pak v programu použitá již jen 1x na adrese 0F6E2h. O pár byte dříve (0F6DE) je použita instrukce OUT (0FDh),A - s otazníky v komentáři (decimálně 253, mohla by se jmenovat PORT_PEN_DOWN), která pero spouští. Když jsem překresloval rozhraní MS-SP do EAGLE, nebylo mi jasné, jak se chovají hradla ovládající pero. Po nasimulování v simulačním programu mi došlo, že to je bistabilní klopný obvod, který při kombinaci A1=/WR=/IORQ=0 => PEN=1 pero spustí dolů a při kombinaci A2=/WR=/IORQ=0 -> PEN=0 pero zvedne z papíru. Úroveň na výstupu PEN zůstane zachována i po zániku uvedených nastavovacích kombinací.

Pro lepší orientaci přikládám schéma MP-SP tak, jak jsme to s Ladislavem vydedukovali a překreslili. Podle následného návrhu DPS Ladislav vyrobil repliku interfejsu, která mu funguje bezchybně.

Petr

Přílohy:
MS-SP.png
MS-SP.png [ 26.19 KiB | Zobrazeno 1476 krát ]

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

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?

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

Protože signál /RDY musí být programem/počítačem překlopen do /RDY=0, což jednak signalizuje připravenost k tisku a druhak to povolí signálem PEN sklopit pisátko a do třetice počítač pak ví, kde je vozík s perem - viz dále. Plotr má po zapnutí signál ve stavu /RDY=1 (stejně tak i po výměně papíru - spínač na kladce přítlaku papíru nebo po naražení vozíku do minimálně pravého dorazu vozíku pera) a proto je nutné ho překlopit do stavu /RDY=0.

Proto se čte byte z portu (63 nebo 03Fh nebo 0BFh), kde se pak programově zjišťuje stav signálu /RDY na bitu D7 a bitem D7 na té samé adrese se v plotru překlápí klopný obvod. Posloupnost příkazů je asi takováto:

Kód:
        čti byte z portu (63)
        je bit D7=0? pokud ano, konec inicializace
TEST:   pokud ne zapiš na port (63) byte s nastaveným D7=1
        chvilku počkej
        zapiš na port (63) byte s vynulovaným D7=0 -  sestupná hrana překlápí /RDY uvnitř plotru
        čti byte z portu (63)
        je bit D7=0? pokud ano, konec inicializace - vozík narazil do levého dorazu vozíku
        pokud ne, posuň vozík pera vlevo (např. o 10 kroků motoru)
        pokračuj na TEST - zde je vhodné testovat počet průchodů, aby nedošlo k zamrznutí programu v případě poruchy/nepřipojení plotru


Alespoň já to takhle mám ve svém programu udělané.

Jinak během tisku by se měl signál /RDY taky testovat, protože pokud vozík narazí do spínače na pravé (a asi i na levé) straně plotru, /RDY se překlopí nahoru do 1 a tím zablokuje spouštění pera.

Snad je to alespoň trochu srozumitelné. Princip překlápění signálu /RDY je také popsán v příručce k plotru XY41xx

Petr

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

Ano takhle nějak to tam program i má. Ale při samotném tisku se už ready port nečte, ale jen tam program zapisuje. Proč?

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

MTs píše:
Ano takhle nějak to tam program i má. Ale při samotném tisku se už ready port nečte, ale jen tam program zapisuje. Proč?


Třeba program netestje stav /RDY, ale rovnou se ho snaží překlopit do stavu 0.

Petr

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

Přikládám ZIPko se soubory:
Příloha:
zt-xy4150.zip [182.53 KiB]
75 krát


DESKTOP-X4150(2).SNA - snap Desktopu z utilitou xy4150(2). Pro trasování v PC emulátorech/debuggerech

xy4150-2.bin - binárka utility xy4150(2) pro desktop

xy4150(2).asm - surový kód ze zpětného překladu (ten už jsem tady dával...)

xy4150(2)+.xls - Excel, pracovní dokument o třech listech:
1. xy4150(2).asm
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
3. Různé info (Obrázky zapojení)

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. Musím říct, že kód je napsaný dost profesionálně. Jsou tam použity všelijaké "hrátky", které zajistí úsporu kódu (samozřejmě na úkor jeho čitelnosti :). Co jsem přehlédl v debuggeru (ale odhalil to samozřejmě převod na pojmenovaný zdrojový text) jsou návěstí SAMO1 až SAMO4, kde se za běhu doplňují nějaké instrukce.

Kdo by se chtěl naučit assembleru, tak toto je jedinečný výukový materiál !! :gun:

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