Přejít na obsah
ARCHIVEKArchiv e-mailových konferencí o 8bitových počítačích Archiv Pandory 1999 až 2013

Původní podoba příspěvku

malinsky <mm.malinsky@[doména skryta]> Zpět na příspěvek

Surová data tak, jak byla v roce 2013 stažena z Pandory (HTML zdroj bez úprav, osobní e-mailové adresy jsou maskované).

<pre>Dobry vecer,

tak uz mi to beha, jak ma (tj. i na zeleze), a to v obou konfiguracich, tj.

1) CTC1-&gt;CTC2-&gt;INT v modu IM1
2) CTC0-&gt;PIO-&gt;INT v modu IM2

Hlavni problem byl v obou pripadech s maskovanim preruseni pinem PC2 8255, respektive v tom, ze jsem 8255 zapomnel predtim poslat inicializacni byte, takze nezabral nasledy pokus o odmaskovani.

V pripade 1 jsem pro jednoduchost vyuzil Vasi poznamky o modu 2, v nem ted bezi CTC1, tj. posila tik na CTC2 s frekvenci cca 550 kHz a neni nutne ho restartovat. CTC2 je v modu 0, a po kazdem dopocitani se znovu nastavi a prostrednictvim sveho GATE (bit 0 E008) se spusti, cimz spadne jeho OUT zpatky na 0.

V pripade 2 je im2 patrne jedina funkcni moznost, aspon tak to sugeruje poznamka o maskovacim pinu PC2 8255 v manualu na scavu. Jak je to ale presne zadratovano netusim.

Pokud se chcete podivat, oba funkcni kody vcetne zdrojaku jsou na adrese

http://www-ucjf.troja.mff.cuni.cz/~malinsky/files/vnitrni_preruseni_na_zeleze.zip

Jeste jednou dekuju za pomoc,

MM

On 01 Feb 2017, at 18:19, Michal Hucik - ORDOZ &lt;ordoz@[doména skryta]&gt; wrote:

&gt; 
&gt;&gt; 1) a 2) jsou jasne; onou “posvatnosti” adresy 0x1039 jsem mel na mysli 
&gt;&gt; prave situaci, kdy je dolni ROM primapovana :-) Im 2 mi take prijde 
&gt;&gt; elegantnejsi, i kdyz pro rychle (a hlavne laicke) experimentovani 
&gt;&gt; slozitejsi, a tudiz az druhy v poradi.
&gt; 
&gt; Aha, az ted mne napadlo podivat se do vypisu ROM :) 0x1039 jsem vskutku 
&gt; neznal :) Jinak jak k inicializaci PIO v IM 2 pouzivam tohle:
&gt; 
&gt; 
&gt; set_ivector:
&gt;     ld hl, ivector_addr
&gt;     bit 0, l
&gt;     jr z,ivector_is_even
&gt;     inc hl
&gt; ivector_is_even:
&gt;     push hl
&gt;     pop ix
&gt;     ld hl,interrupt_routine
&gt;     ld (ix + 0), l
&gt;     ld (ix + 1), h
&gt;     push ix
&gt;     pop hl
&gt;     ld a,h
&gt;     ld i,a
&gt;     ld a,l
&gt;     ld hl, pioz80_init_data
&gt;     ld (hl), a
&gt;     ;ld bc, 0x06fc
&gt;     ld b, 0x05
&gt;     ld c,pio_ctrl
&gt;     otir
&gt;     ret
&gt; 
&gt; 
&gt; ; inicializacni data pro z80pio
&gt; pioz80_init_data:
&gt;     db 0x00            ; dolni cast adresy int. vectoru (nulty bit musi 
&gt; byt 0!)
&gt; 
&gt;     db 0xcf            ; dolni 4 bity musi byt 1111, horni 2 pak
&gt;                        ; mod nasledujici operace 0 - out, 1 - in,
&gt;                        ; 2 - bidir, 3 - control
&gt;                        ; 4. a 5. bit nemaji vyznam
&gt; 
&gt; 
&gt;    db 0x3f            ; v modu 3 musi nasledovat I/O Register Control Word
&gt;                        ; Vstup - 1, vystup - 0
&gt;                        ;
&gt;                        ; PA0 - IN - /RDA (LPT)
&gt;                        ; PA1 - IN - /STA (LPT)
&gt;                        ; PA2 - IN - GND
&gt;                        ; PA3 - IN - GND
&gt;                        ; PA4 - IN - /CTC0 (pozor, je invertovany!)
&gt;                        ; PA5 - IN - /VBLN
&gt;                        ; PA6 - OUT - IRT (LPT)
&gt;                        ; PA7 - OUT - RDP (LPT)
&gt; ;db 0x2f ; ooio iiii
&gt; ;db 0x3f ; ooii iiii
&gt; ;db 0xff ; oooo oooo
&gt; 
&gt; 
&gt; 
&gt;   db 0x97            ; dolni 4 bity musi byt 0111 -
&gt;                        ; 7 - 1/0 En.INT/disable
&gt;                        ; 6 - 1/0 AND/OR,
&gt;                        ; 5 - 1/0 Hi/Low,
&gt;                        ; 4 - Mask follows
&gt;                        ; 0x97 = 1001 0111
&gt; 
&gt; 
&gt; ;db 0x97 ; IENA, OR, LOW, MASK
&gt; ;db 0xb7 ; IENA, OR, HIGH, MASK
&gt; ;db 0xd7 ; IENA, AND, LOW, MASK
&gt; ;db 0xf7 ; IENA, AND, HIGH, MASK
&gt; 
&gt; 
&gt;     ;db 0xef            ; protoze v predch. slove byl 4b = 1,
&gt;                        ; nasleduje bitova maska. Sledovany jsou jen
&gt;                        ; piny, jejihz bity jsou 0
&gt;                        ;
&gt;                        ; 0xef - 4. bit (/CTC0)
&gt;                        ; 0xdf - 5. bit (/VBLN)
&gt; db 0xef ; /CTC0
&gt; ;db 0x6f ; /CTC0, PA7
&gt; ;db 0xff ; nic
&gt; 
&gt; 
&gt; 
&gt; ivector_addr:
&gt;     db 0x00
&gt;     dw 0x0000
&gt; 
&gt; _______________________________________________
&gt; SharpMZ mailing list
&gt; SharpMZ@mail.ordoz.com
&gt; http://mail.ordoz.com/mailman/listinfo/sharpmz

</pre>