[SharpMZ] Potize s generovanim preruseni od CTC0 na mz-800 - podezreni na mrtvy OUT0 od 8253 (?)
Michal Hucik - ORDOZ
ordoz na ordoz.com
Středa Únor 1 18:19:51 CET 2017
> 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
Další informace o konferenci SharpMZ