[SharpMZ] Potize s generovanim preruseni od CTC0 na mz-800 - podezreni na mrtvy OUT0 od 8253 (?)

malinsky mm.malinsky na gmail.com
Středa Únor 1 23:47:04 CET 2017


Dobry vecer,

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

1) CTC1->CTC2->INT v modu IM1
2) CTC0->PIO->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 <ordoz na ordoz.com> wrote:

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



Další informace o konferenci SharpMZ