Enterprise Forever
:HUN => Hardver => Topic started by: Povi on 2014.April.23. 07:43:14
-
Ha a Printer protra küldök egy byte-ot, akkor az meddig marad ott? A következő bájt küldéséig? Csak a D0-D7-et használnám, a többi kontroll csatlakozót nem.
-
jobb kérdésem van: hogyan lehet a printer portra a PRINTER: eszköz megkerülésével adatot írni (D0-D7)? illetve hogyan lehet írni még a STROBE bitre, és olvasni a BUSY bitet?
gondolom sima OUT és IN utasítással, de melyik portra?
-
jobb kérdésem van: hogyan lehet a printer portra a PRINTER: eszköz megkerülésével adatot írni (D0-D7)? illetve hogyan lehet írni még a STROBE bitre, és olvasni a BUSY bitet?
gondolom sima OUT és IN utasítással, de melyik portra?
ööö... lehet, hogy meg is találtam itt? :-)
http://enterprise.iko.hu/technical/ET16-2_EXOS_20_Printer_Driver_Specificaton.pdf
adat = 0b6h port
strobe = 0b5h port 4. bitje
ready (busy) = 0b6h port 3. bitje
ugye?
-
Gépi kódú programozás 166. oldalán kezdve (http://enterprise.iko.hu/books/GepiKoduProgramozasEnterprise128.pdf) van példa nyomtatásra. (HTML-be még mindig nem rakta ki ezt a részt Lacika :evil: )
-
Ha a Printer protra küldök egy byte-ot, akkor az meddig marad ott? A következő bájt küldéséig? Csak a D0-D7-et használnám, a többi kontroll csatlakozót nem.
Igen, beíródik az U24-es IC-be, és amíg felül nem írod ott marad.
-
Gépi kódú programozás 166. oldalán kezdve (http://enterprise.iko.hu/books/GepiKoduProgramozasEnterprise128.pdf) van példa nyomtatásra. (HTML-be még mindig nem rakta ki ezt a részt Lacika :evil: )
ez tetszik...
viszont a STROBE bit írását nem egészen értem
mi van a BFF3H címen, miért olvassa azt az A-ba? ott van elmentve b5h port értéke?
-
mi van a BFF3H címen, miért olvassa azt az A-ba? ott van elmentve b5h port értéke?
Igen, mivel azon a porton mást is piszkálhatsz :-) mondjuk saját gépi kódú programban, ami nem az EXOS-al működik együtt, nem kell foglalkozni vele.
-
na, még egy kérdés (közben rájöttem, nekem nem is kell a STROBE)
van egy eszközöm, amit a printer portra kötnék, viszont azon kétirányú a dataport. Erre küldöm az adatot(D0-D7), de erről olvasnám is (D7), hogy foglalt-e az eszköz.
Az addig világos, hogy az EP D7-je megy az eszköz D7-re.
Az eszköz D7-je pedig rá lenne kötve az EP READY-re.
Ez így jó? Vagy az egyik buffer felesleges? (az READY bufferje az inverterrel)
-
Az szerintem is felesleges, viszont honnan fogod tudni mikor érvényes a Ready? Ill. honnan jön az R/W jel?
-
4 bites protokollt használok (d4-d7), így az r/w jel lehet az EP d0-d3-jén bármi.
-
4 bites protokollt használok (d4-d7), így az r/w jel lehet az EP d0-d3-jén bármi.
Így akkor ok, tudhatod, mikor lehet Readyt olvasni :-)
-
(HTML-be még mindig nem rakta ki ezt a részt Lacika :evil: )
Úgy tűnik, ezek a példaprogramok csak német gépen működnek. Így is van értelme ezeket berakni? Megnéznéd esetleg, az ASM-ban hol van hiba? (Elég rosszul olvasható a könyv.)
-
Úgy tűnik, ezek a példaprogramok csak német gépen működnek.
Nem véletlen, legalább vagy 10 helyen leírják, hogy a német gép címkiosztását használják :oops:
-
készítettem egy printer-port vezérelt 7szegmenses órát (most a video kedvéért úgy volt beprogramozva, hogy "mm:ss" -et mutasson), 1Hz-es megszakításban fut
https://www.youtube.com/watch?v=Z1BVLEb8Jm0&feature=youtu.be
7 biten kapja BCD-ben az adatot, ami négy darab BCD dekóderre van kötve:
d0-d3 -> egyesek
d4-d6 -> tízesek (itt nincs szükség a d7-re, mert a tízes helyi értéken nem lehet nagyobb 8-nál a szám)
d7 -> vezérli az perceket (latch)
strobe -> vezérli a másodperceket
egy probléma van csak, amit nem értek, hogy a strobe által vezérelt számjegyek csak akkor frissülnek, ha a strobe vezetéket a kezemben fogom (leföldelem? magamra) - ez vajon miért lehet?
a progi:
org 1000h
bit 3,d ;1 Hz-es megszakitas?
ret z
ld a,(0bf74h) ; A = ora
set 7,a ; latch enable
out (0b6h),a
ld a,(0bf73h) ; A = perc
out (0b6h),a
ld a,(0bff3h)
or 010h
out (0b5h),a ;strobe = 1 (latch enable)
and 0efh
out (0b5h),a ;strobe = 0
ret
-
:smt038
A két rendszer GND-je össze van kötve?
-
elvileg igen...
de ha nincs, akkor hogy-hogy működik?
ha meg nincs, akkor ez okozhatja ezt a gondot?
elég rejtélyes nekem ez az elektronika (néhol)
-
Ha nincs, az okozhat zavart.
-
megnéztem, tuti van test (ráadásul közös tápról megy a floppymeghajtóval, szóval ott is kéne közösködni az EP-vel)
kipróbáltam elemes meghajtással is, de akkor is ugyanezt csinálja...
az, hogy árnyékolt a kábel az EP és a kütyü között, számít-e valamit?
-
az, hogy árnyékolt a kábel az EP és a kütyü között, számít-e valamit?
Ha nem is árnyékolt, de a printer port GND-jét is érdemes lenne összekötni vele.
Ha megnézed az EP alaplapját, ott is van egy több plusz GND drót felrakva, hogy a különböző GND pontok biztosan egy potenciálon legyenek.
-
ami érdekes, hogy 1mp difi van a két (a ZozoTools féle és a 7szegmenses) idő között
ez miért van?
-
a következő áldozat, amit printer portra fogok kötni, egy karakteres LCD kijelző lesz... :-)
már csak azon gondolkodok, mi az az információ, ami jó lenne, ha folyamatosan megjelenne rajta? (időn kívül, így felszabadulna a ZT féle status sor fölötti sor) :-)
szabad szegmensek száma? egyéb ötlet? PC-ről jött az ötlet, ott házba szokták beépíteni ezeket a kijelzőket, és pl. procihőmérsékletet, ventillátor fordulatszámot stb. jeleznek ki rajta.
-
Program tesztelésnél lehetne debug infókat kiküldeni rá. Én anno igaz printerre küldtem ki register értékeket.
-
na, egy 0.1-es verzió:
1Hz-es megszakításból megy az idő kijelzése
végül nem kötöttem be azt, amivel ellenőrizni lehet, hogy foglalt-e az LCD (épp dolgozik, vagy tud-e már újabb parancsot / adatot fogadni), két okból is:
1., egyszerűbb volt így bekötni, és megspóroltam egy chip-et.
2., annyira nem lassú az LCD az EP-hez képest:
sima karakterírás az adatlap szerint 40us alatt fut le.
Csináltam próbaképpen egy üres "busy_check" nevű rutint. Erre ugrana rá írás előtt, ha be lenne kötve a LCD-->EP128 irányú kommunikáció is.
Ekkor még hülyeségeket csinált, de kipróbáltam, 3 NOP már elég a rutinban, hogy megfelelő időköz legyen két írás végrehajtása között.
A rendes "busy" bit vizsgálata sokkal több idő lenne, mint amíg lefut 3 db NOP, szóval nem is érné meg megírni.
Az egyetlen hosszú idejű utasítás a képernyőtörlés és a cursor home, ezek akár 1,64 ms is lehetnek. Az összes többi parancs lefut 40us alatt.
A következő lépés, hogy egy EXOS eszközt csinálni az LCD-nek, ami értelmezné a VIDEO: eszköznél már megszokott escape szekvenciákat is :-)
A harmadik lépés pedig, hogy az LCD, mint EXOS-periféria, megszakítást is igényelne magának, és egy rendszerváltozóban lehetne állítani, hogy legyen-e, vagy ne.
EXOS-perifériát még nem csináltam, majd ha elakadok, számítok a segítségetekre, persze majd egy másik topikban :-)
-
Zozo, azon gondolkodtam, hogy lehet, hogy az EP-ben van a kontakthiba, hogy a Strobe-ot "földelni" kellett, hogy működjön a 7 szegmenses kijelzőm normálisan, és lehet, hogy akkor ezért nem ment tavalyelőtt a C64 lemezmeghajtó a Speccialista találkozón...