OldComp.cz

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


Právě je 29.03.2024, 00:11

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




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 58 ]  Přejít na stránku 1, 2, 3, 4  Další
Autor Zpráva
 Předmět příspěvku: PMI-80
PříspěvekNapsal: 02.04.2017, 14:57 
Offline
Kecka
Uživatelský avatar

Registrován: 29.10.2014, 12:00
Příspěvky: 67
Bydliště: Bruntál
Has thanked: 0 time
Been thanked: 16 times
Zdravím.
Chci se zeptat, jestli se ještě někdo zabývá klasickým programováním této mašinky. Konkrétně toto:
---------------------------------------------------------
0001 0000 ; Blikac - prepina piny PB4 a PB5 na pridavnem 8255 obvodu
0002 0000 ; s jinou prodlevou mezi výstupy
0003 0000 ; prodleva se mění po stisku 1 a 2 mění
0004 0000
0005 1C00 start .ORG 1C00H
0006 1C00 OUTKE .EQU 0116H
0007 1C00 DISP .equ 0140h
0008 1C00
0009 1C00
0010 1C00 1E 7F MVI E,7Fh ;casova prodleva
0011 1C02 3E 99 mvi a,99h ;nastaveni portu
0012 1C04 D3 F7 out 0f7h
0013 1C06 3E 20 smycka mvi a,20h ;zapnuti pinu
0014 1C08 D3 F5 out 0f5h
0015 1C0A CD 1A 1C call pausa
0016 1C0D 3E 10 mvi a,10h ;prepnuti pinu
0017 1C0F D3 F5 out 0f5h
0018 1C11 CD 1A 1C call pausa
0019 1C14 C3 27 1C JMP REGUL
0020 1C17 C3 06 1C jmp smycka
0021 1C1A ;
0022 1C1A 53 pausa MOV D,E
0023 1C1B 43 smyc0 MOV B,E
0024 1C1C 4B smyc1 MOV C,E
0025 1C1D 0D smyc2 DCR C
0026 1C1E C2 1D 1C JNZ smyc2
0027 1C21 05 DCR B
0028 1C22 C2 1C 1C JNZ smyc1
0029 1C25 15 DCR D
0030 1C26 C9 RET
0031 1C27 ;
0032 1C27 CD 40 01 REGUL: CALL DISP
0033 1C2A FE 81 CPI 0081h
0034 1C2C C2 33 1C JNZ blok2
0035 1C2F 1D DCR E
0036 1C30 C3 06 1C JMP smycka
0037 1C33 ;
0038 1C33 FE 82 blok2: CPI 0082h
0039 1C35 C2 06 1C JNZ smycka
0040 1C38 1C INR E
0041 1C39 C3 06 1C JMP smycka
0042 1C3C
0043 1C3C .END
0044 1C3C
tasm: Number of errors = 0
---------------------------------------------------------------
Jedná se jen o úpravu reakce na tlačítko 1 a 2.

Díky za náměty.

_________________
Dva pytle pšenice a jeden pytel ovsa. Ječmen a žito nevedu


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PMI-80
PříspěvekNapsal: 02.04.2017, 19:30 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 16.03.2017, 11:36
Příspěvky: 1493
Bydliště: Kósek vod Brna
Has thanked: 101 times
Been thanked: 112 times
No a co s tím chceš udělat?

_________________
TEMS-49, PMI-80, rep. MK14, ZX81, ZXspectrum+, TI58, MZ-800


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PMI-80
PříspěvekNapsal: 03.04.2017, 16:52 
Offline
Kecka
Uživatelský avatar

Registrován: 29.10.2014, 12:00
Příspěvky: 67
Bydliště: Bruntál
Has thanked: 0 time
Been thanked: 16 times
Ahoj, dík.
Chtěl jsem upravit původní program, který mění stavy na PB4 a PB5. Úprava spočívá v tom, že po stisku klávesy 1 se přičte 1 k reg. E a při stisku klávesy 2 se 1 od reg. E odečte. Tím se změní hodnota prodlevy v "pausa" a stavy BR4 a PB5 kmitají rychleji nebo naopak pomaleji. Snažil jsem se nasměrovat (řádek 32) na "OUTKE". Jenže program běhá někde v ROM. Po stisku klávesy 1 nebo 2 se stav v E sice změní, PB 4 a PB5 se na chvíli vymění, ale pak se vše opakuje. Program běhá v "OUTKE" a ne ve "SMYCKA".
Při rychlém stisku jedné klávesy se stavy mění. Jakmile se klávesa přestane rychle mačkat, chyba se znatelně projeví.

Mé vysvětlování je poněkud zmatečné. Teprve s PMI začínám.
Dík.

_________________
Dva pytle pšenice a jeden pytel ovsa. Ječmen a žito nevedu


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PMI-80
PříspěvekNapsal: 03.04.2017, 17:37 
Offline
Kecka
Uživatelský avatar

Registrován: 29.10.2014, 12:00
Příspěvky: 67
Bydliště: Bruntál
Has thanked: 0 time
Been thanked: 16 times
Malá ukázka:
phpBB [video]


Klávesou 1 zrychlit kmitání, klávesou 2 zpomalit.

_________________
Dva pytle pšenice a jeden pytel ovsa. Ječmen a žito nevedu


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PMI-80
PříspěvekNapsal: 04.04.2017, 07:38 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 16.03.2017, 11:36
Příspěvky: 1493
Bydliště: Kósek vod Brna
Has thanked: 101 times
Been thanked: 112 times
Opravdu ten popis je docela zmatečný, nemám moc času, ale přece se zeptám:

program, jehož výpis je výše uveden je funkční a chceš ho nějak modifikovat, nebo je to tvůj výtvor a potřebuješ ho rozchodit?

//tak mě to nedalo a prohlídnul jsem ten program, máš tam 1 nevýznamnou chybu v pause kde máš zavedený ještě registr D, který ale nijak netestuješ, ale hlavní problém je v tom, že každé volání OUTKE končí ve smyčce, která donekonečna čeká na stisk nějaké klávesy. takže musíš ve smyčce otestovat stisk a teprve až se něco stiskne, přes OUTKE zjistit co.

_________________
TEMS-49, PMI-80, rep. MK14, ZX81, ZXspectrum+, TI58, MZ-800


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PMI-80
PříspěvekNapsal: 04.04.2017, 21:17 
Offline
Kecka
Uživatelský avatar

Registrován: 29.10.2014, 12:00
Příspěvky: 67
Bydliště: Bruntál
Has thanked: 0 time
Been thanked: 16 times
Registr D byl původně pro další vrstvu ve zpožďovací smyčce.

Původně program jen přepínal porty pomocí konstanty. Doplnil jsem ho o prodlevu, která se mění podle hodnoty registru E. Jenže změnu hodnoty E jsem řešil pomocí OUTKE. A to je asi chyba. Jde nějak jinak pomocí tlačítek 1 a 2 měnit hodnotu registru E?

_________________
Dva pytle pšenice a jeden pytel ovsa. Ječmen a žito nevedu


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PMI-80
PříspěvekNapsal: 05.04.2017, 07:12 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 16.03.2017, 11:36
Příspěvky: 1493
Bydliště: Kósek vod Brna
Has thanked: 101 times
Been thanked: 112 times
Určitě to jde, jedna cesta je ošetřit stávající stav aby se nešlo do outke v době kdy není stlačena žádná klávesa, nebo udělat celou testovací rutinu. Tady by jsi se mohl inspirovat komentovaným výpisem monitoru třeba zde:
http://www.nostalcomp.cz/pdfka/pmi80_kniha.pdf

Záměrně nepíšu hotová řešení, byť je to pár řádků kódu, aby jsi na to přišel sám a něco se naučil, a taky bys z toho neměl ten správný pocit.

_________________
TEMS-49, PMI-80, rep. MK14, ZX81, ZXspectrum+, TI58, MZ-800


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PMI-80
PříspěvekNapsal: 05.04.2017, 10:40 
Offline
Kecálek

Registrován: 07.05.2014, 12:10
Příspěvky: 197
Bydliště: Jbc
Has thanked: 0 time
Been thanked: 39 times
Nejak mi to cele nedava smysl ;) Je tu zminovana funkce OUTKE, ktera se ale v prikladu nikde nevola. Vola se funkce DISP, ktera by mela resit zobrazovani a scanovani, ale mela by nakonec vratit kod tlacitka a v C priznak, zda je tlacitko stisknute. Funkci DISP vlastne vola i zminovana funkce OUTKE... s jedinym rozdilem, ze primarne testuje priznak C a teprve pokud je "platny", testuje kod klavesy.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PMI-80
PříspěvekNapsal: 05.04.2017, 11:18 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 16.03.2017, 11:36
Příspěvky: 1493
Bydliště: Kósek vod Brna
Has thanked: 101 times
Been thanked: 112 times
Máš pravdu, nikde se nevolá, protože po jejím zavolání se to zacyklí při čekání na klávesu. A jak píše klásek výše, tak na řádku 32 nahradí volání DISP za OUTKE

_________________
TEMS-49, PMI-80, rep. MK14, ZX81, ZXspectrum+, TI58, MZ-800


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PMI-80
PříspěvekNapsal: 07.04.2017, 20:30 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 16.03.2017, 11:36
Příspěvky: 1493
Bydliště: Kósek vod Brna
Has thanked: 101 times
Been thanked: 112 times
No a jak to nakonec dopadlo?

_________________
TEMS-49, PMI-80, rep. MK14, ZX81, ZXspectrum+, TI58, MZ-800


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PMI-80
PříspěvekNapsal: 08.04.2017, 21:13 
Offline
Kecka
Uživatelský avatar

Registrován: 29.10.2014, 12:00
Příspěvky: 67
Bydliště: Bruntál
Has thanked: 0 time
Been thanked: 16 times
Ahoj.

Zatím ležím v manuálu. Nemám ponětí, která část nebo program mě má nekopnout, abych pochopil, kde dělám chybu. Chce to asi víc času.

Zatím dík.

_________________
Dva pytle pšenice a jeden pytel ovsa. Ječmen a žito nevedu


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PMI-80
PříspěvekNapsal: 09.04.2017, 09:39 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 16.03.2017, 11:36
Příspěvky: 1493
Bydliště: Kósek vod Brna
Has thanked: 101 times
Been thanked: 112 times
No první dva řádky OUTKE, DISP nastaví CY pokud je stisknuta klávesa

//taky možná neznáš podmíněné CALL, např CC (CALL if CY)

_________________
TEMS-49, PMI-80, rep. MK14, ZX81, ZXspectrum+, TI58, MZ-800


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PMI-80
PříspěvekNapsal: 13.04.2017, 15:06 
Offline
Kecka
Uživatelský avatar

Registrován: 29.10.2014, 12:00
Příspěvky: 67
Bydliště: Bruntál
Has thanked: 0 time
Been thanked: 16 times
Znám pouze základy. Vlastně nemám žádný vlastní program.

CY jako carry? První bit registru F? Mám informace, že se mění při přetečení registru.
Podmíněné CALL? Tak to jsem z toho truhlík ...

_________________
Dva pytle pšenice a jeden pytel ovsa. Ječmen a žito nevedu


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PMI-80
PříspěvekNapsal: 13.04.2017, 15:38 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
Aby si z toho nebol truhlik, treba vediet asembler 8080. Velmi dobra seria clankov, ktora ti poskytne prvy prehlad, je napriklad tu: https://strojak.cz/category/assembler/8080/
Zozen si aj tabulku instrukcii 8080 kde by boli vsetky instrukcie pekne prehladne vysvetlene a popisane. Na nete je toho plno, staci pogooglit (hladaj: 8080, assembler, instruction set...).
A potom ked budes vediet pracovat s 8080, pozistuj si vsetko o softweri v PMI80 - ake rutinky ma v romke, ako je mozne ich pouzivat.
Nuz a ked toto vsetko prejdes, budes sam vediet tvorit a opravovat take programy, ako si tu na zaciatku uviedol.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PMI-80
PříspěvekNapsal: 13.04.2017, 15:40 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 16.03.2017, 11:36
Příspěvky: 1493
Bydliště: Kósek vod Brna
Has thanked: 101 times
Been thanked: 112 times
Tak truhlíku tady to máš:

start .ORG 1C00H
OUTKE2 .EQU 011CH ;vynechá vst. testovací smyčku
DISP .equ 0140h
MVI E,3h ;casova prodleva
mvi a,99h ;nastaveni portu
out 0f7h
smycka: mvi a,20h ;zapnuti pinu
out 0f5h
call pausa
mvi a,10h ;prepnuti pinu
out 0f5h
call pausa
JMP REGUL
jmp smycka
pausa: MOV B,E
smyc1: MOV C,E
smyc2: DCR C
JNZ smyc2
DCR B
JNZ smyc1
RET
REGUL: CALL DISP
CC OUTKE2 ;sem pouze při stisku klavesy
CPI 0081h
JNZ blok2
DCR E
JMP smycka
blok2: CPI 0082h
JNZ smycka
INR E
JMP smycka


.END

_________________
TEMS-49, PMI-80, rep. MK14, ZX81, ZXspectrum+, TI58, MZ-800


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ů: 58 ]  Přejít na stránku 1, 2, 3, 4  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 5 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