Merhaba, Ziyaretçi. Lütfen giriş yapın veya üye olun.

Kullanıcı adınızı, parolanızı ve aktif kalma süresini giriniz

  Gelişmiş Arama
insanın içinde varsa, commodore.gen.tr açığa çıkarır bunu.. bir nevi retro olaylarının dolunayıyız.(Arda)
commodore.gen.trCommodoreCommodore YazılımBir frame'de tetiklenebilecek maksimum raster irq sayısı
Sayfa: [1] 2   Aşağı git
Yazdır
Gönderen Konu: Bir frame'de tetiklenebilecek maksimum raster irq sayısı  (Okunma Sayısı 12201 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« : Haziran 19, 2016, 16:08:35 ÖS »

Kaç adettir?

Nette bakıyorum 2'den fazla kullanmış olanı göremedim neredeyse. Sınırı var mıdır, sebebi nedir internette adam akıllı bilgi bulamadım.

Ps1: IRQ handler içinde CLI yapıp interrupt'ı acknowledge etmeden tekrar irq tetikletmekten bahsetmiyorum. Her bir interrupt o frame içinde fiziki olarak IRQ hattını low'a çekip acknowledge olduğunda da high'a çekmeli.

Ps2: IRQHack64'de ekran açık transfer için lazım, bad line'ları atlatıp transfer yapmak için.

Ps3: Raster irq kullanamazsam bad line'ları bekleyip CIA üstünden IRQ üretmek aklımdaki ikinci yöntem.
Logged

Every imagination is one's self reflection but not every self reflection is imagination. <I.R.on - 2001>

twitter | blog
eins
Uzman
*****
Mesaj Sayısı: 1.816


A.K.A. deliMawi


Üyelik Bilgileri
« Yanıtla #1 : Haziran 19, 2016, 17:13:34 ÖS »

Ben çok defalar 2 den fazla kullandım. 
Logged

Doberman ♦ megaOne ♦ HDMI-64 ♦ HDMI-520 ♦ NewSchool
i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« Yanıtla #2 : Haziran 19, 2016, 19:07:37 ÖS »

Bana lazım olan 25 yahut 26 adet.
Logged

Every imagination is one's self reflection but not every self reflection is imagination. <I.R.on - 2001>

twitter | blog
eins
Uzman
*****
Mesaj Sayısı: 1.816


A.K.A. deliMawi


Üyelik Bilgileri
« Yanıtla #3 : Haziran 19, 2016, 20:39:01 ÖS »

Bence rahatlikla olur. Neden olmayacagini dusundun?
Logged

Doberman ♦ megaOne ♦ HDMI-64 ♦ HDMI-520 ♦ NewSchool
i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« Yanıtla #4 : Haziran 19, 2016, 21:34:35 ÖS »

Kod aşağıdaki gibi, bunun sonucunda 25 tane kıprış kıprış beyaz çizgi bekliyorum border'da ancak 3-4 değişik yerde bazısının sürekli yeri değişen beyaz çizgi çıkıyor. Farklı bir şekilde durumu görmek için ekrandaki değerleri increment ettim. Mantıken bir frame'de 25 defa çalışıyor olsa karakterlerin ben daha görmeden hızlıca değişmesi gerekirken gayet görünür bir şekilde 0, 1, 2,  3 diye değiştiğini gözlemliyorum.

Kod:
IRQVECTOR	= $0314
IRQ6502 = $FFFE

CURRENTFRAME = $08

;VIC Border color
BORDER = $D020
SCREEN = $D021

*=$080E        
CLD

LDY #$7f    ; $7f = %01111111
    STY $dc0d   ; Turn off CIAs Timer interrupts
    STY $dd0d   ; Turn off CIAs Timer interrupts
    LDA $dc0d   ; cancel all CIA-IRQs in queue/unprocessed
    LDA $dd0d   ; cancel all CIA-IRQs in queue/unprocessed

LDA #$00
STA $D01A

LDA #$35
STA $01

LDX #$00
STX CURRENTFRAME
-
LDA $D012
BNE -
LDA $d011                     ; clear high bit of raster line
AND #$7f
STA $d011

LDA RP, X
STA $D012

LDA #<MRH
STA IRQ6502
LDA #>MRH
STA IRQ6502+1

LDA #$01
STA $D01A

CLI

LOOP
JMP LOOP


MRH
SEI
ASL $D019
INC BORDER
LDX CURRENTFRAME
INX
CPX #25
BNE +
LDX #$00
+
LDA RP, X
STA $D012
STX CURRENTFRAME
INC $07C0,X
DEC BORDER
RTI


   
RP = range($31, $F1, 8)


ps: Setup rutinleri aynı kalacak şekilde CIA'in Timer A'sını single shot modunda IRQ üretecek şekilde çalıştırdım. Onda çalışıyor.
Logged

Every imagination is one's self reflection but not every self reflection is imagination. <I.R.on - 2001>

twitter | blog
eins
Uzman
*****
Mesaj Sayısı: 1.816


A.K.A. deliMawi


Üyelik Bilgileri
« Yanıtla #5 : Haziran 19, 2016, 21:51:15 ÖS »

Kod detayli bakamadim, bakacagim da, servis rutinin basindaki sei neden orda? Onun cli si neden yok?
Logged

Doberman ♦ megaOne ♦ HDMI-64 ♦ HDMI-520 ♦ NewSchool
i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« Yanıtla #6 : Haziran 19, 2016, 22:13:28 ÖS »

Aslında cli eksik değil, hatta sei fazla orada, alışkanlıktan yazmışım. 65xx'ler interrupt'a girdiğinde status register'ini (benim kodumda CLI'li olan) stack'e basıyor ve otomatik olarak interrupt disable flag'ini de set ediyor.

Cli benim kodda $31. raster satırında ilk interrupt'a girmeden önce ana rutinde kullanılıyor. Sonrasında zaten hep RTI ile stack'ten çekileceği için ana rutin üstünde IRQ enable durumda yani.
Logged

Every imagination is one's self reflection but not every self reflection is imagination. <I.R.on - 2001>

twitter | blog
eins
Uzman
*****
Mesaj Sayısı: 1.816


A.K.A. deliMawi


Üyelik Bilgileri
« Yanıtla #7 : Haziran 19, 2016, 22:21:37 ÖS »

Pardon
Cep telden yazamadım, bilgisayara geçiyorum...
« Son Düzenleme: Haziran 19, 2016, 22:39:21 ÖS Gönderen: delimawi » Logged

Doberman ♦ megaOne ♦ HDMI-64 ♦ HDMI-520 ♦ NewSchool
eins
Uzman
*****
Mesaj Sayısı: 1.816


A.K.A. deliMawi


Üyelik Bilgileri
« Yanıtla #8 : Haziran 19, 2016, 22:39:02 ÖS »

Kod:

MRH
PHA        ; Store A,X,Y to Stack
TXA
PHA       
TYA
PHA       

; SEI
; ASL $D019
INC BORDER
LDX CURRENTFRAME
INX
CPX #25
BNE +
LDX #$00
+
LDA RP, X
STA $D012
STX CURRENTFRAME
INC $07C0,X
DEC BORDER

LDA #$FF    ; Ack Interrupt
STA $D019
PLA ; Restore X,Y,A & Return
TAY       
PLA
TAX       
PLA 
RTI

RP
.byte 49,57,65,73,81,89,97,105,113,121,129,137,145,153,161,169,177,185,193,201,209,217,225,33,241,249

Böyle yapınca çalıştı. Giriş çıkıştaki stack işine takılma, sanırım range fonksiyonunda idi hata...
Logged

Doberman ♦ megaOne ♦ HDMI-64 ♦ HDMI-520 ♦ NewSchool
eins
Uzman
*****
Mesaj Sayısı: 1.816


A.K.A. deliMawi


Üyelik Bilgileri
« Yanıtla #9 : Haziran 19, 2016, 22:48:13 ÖS »

Hatta şöyle yapınca her ikinci raster satırında bir interrupt oluşuyor. $30 dan $F0 a kadar, en az 95 adet ...

Kod:

MRH
INC BORDER
LDX CURRENTFRAME
INX
INX
CPX #$F0
BNE +
LDX #$30
+
STX $D012
STX CURRENTFRAME
; DEC BORDER

LDA #$FF    ; Ack Interrupt
STA $D019
RTI
Logged

Doberman ♦ megaOne ♦ HDMI-64 ♦ HDMI-520 ♦ NewSchool
i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« Yanıtla #10 : Haziran 19, 2016, 22:56:52 ÖS »

Lan lan lan... diyorum... Keşke disassemble etseymişim kodu..
Range komutunu da ikinci kullanışım falan, ilkinde de belki aynı sorun vardı.

Disassemble edince şu şekle çevirdiğini gördüm,

Kod:
$0892  B5 31     LDA $31,X 
$0894  B5 39     LDA $39,X
$0896  B5 41     LDA $41,X
$0898  B5 49     LDA $49,X
$089A  B5 51     LDA $51,X
$089C  B5 59     LDA $59,X
$089E  B5 61     LDA $61,X
$08A0  B5 69     LDA $69,X
$08A2  B5 71     LDA $71,X
$08A4  B5 79     LDA $79,X
$08A6  B5 81     LDA $81,X
$08A8  B5 89     LDA $89,X
$08AA  B5 91     LDA $91,X
$08AC  B5 99     LDA $99,X
$08AE  B5 A1     LDA $A1,X
$08B0  B5 A9     LDA $A9,X
$08B2  B5 B1     LDA $B1,X
$08B4  B5 B9     LDA $B9,X
$08B6  B5 C1     LDA $C1,X
$08B8  B5 C9     LDA $C9,X
$08BA  B5 D1     LDA $D1,X
$08BC  B5 D9     LDA $D9,X
$08BE  B5 E1     LDA $E1,X
$08C0  B5 E9     LDA $E9,X

ps: Ben hardware IRQ'yu direkt devraldığım ve register kullanımını da takip ettiğim için hiç bir register'ı saklamamıştım.
Logged

Every imagination is one's self reflection but not every self reflection is imagination. <I.R.on - 2001>

twitter | blog
i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« Yanıtla #11 : Haziran 19, 2016, 23:03:57 ÖS »

Biraz tüyo vereyim bu arada IRQHack64 ile 160x96 4 renk (siyah, koyu gri, gri, beyaz) video oynatmaya çalışıyorum.

Bu alttaki videoda olanlar da muhtemelen bu range komutunun marifeti,





ps: Bu fail sonrası uydurduğum hurafe de DEN bitinin istenen satırda kullanılamıyor olduğuydu. Belki bu halen doğrudur da yine ekran açık transfer yöntemine dönerim.
Logged

Every imagination is one's self reflection but not every self reflection is imagination. <I.R.on - 2001>

twitter | blog
eins
Uzman
*****
Mesaj Sayısı: 1.816


A.K.A. deliMawi


Üyelik Bilgileri
« Yanıtla #12 : Haziran 19, 2016, 23:06:05 ÖS »

Assemblerdaki fonksiyonlar hep korkutuyor beni. Tamamen hakim olmadığım yapıları kullanmıyorum pek, işimi kolaylaştırsa bile. Excelle daha iyi dostuz...

ps: Ben hardware IRQ'yu direkt devraldığım ve register kullanımını da takip ettiğim için hiç bir register'ı saklamamıştım.

Bende de alışkanlık olmuş, giriş çıkışa hep koyarım. Hatta iki makrom var #int_begin, #int_end...
Logged

Doberman ♦ megaOne ♦ HDMI-64 ♦ HDMI-520 ♦ NewSchool
eins
Uzman
*****
Mesaj Sayısı: 1.816


A.K.A. deliMawi


Üyelik Bilgileri
« Yanıtla #13 : Haziran 19, 2016, 23:09:18 ÖS »

Çalışmalarını izliyorum. Ben bu ara biraz uzak kaldım, aletin başına geçsem rakip gelecem sana...

megaOne programlayıcı kartları postada kayboldu. Bu sayede araya 2-3 ay girince iyice uzak kaldım, ama yaz bitmeden dönücem geri. Belki ben de bir megaOne video demo yaparım...
Logged

Doberman ♦ megaOne ♦ HDMI-64 ♦ HDMI-520 ♦ NewSchool
i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« Yanıtla #14 : Haziran 19, 2016, 23:18:05 ÖS »

@delimawi : Valla şu an olaya hız odaklı yaklaştığım için mecburen nerde ne register kullanılır, hangisi hangi ara modifiye eder, hangisi açığa çıkar falan öyle gidiyorum. Stack'e basmak, geri çekmek genel kullanım için en güvenli ve en iyisi pek tabii. Benim rutinlerin nerede girdiği nerede çıktığı oldukça zamanlı olacağı için hiç girmiyorum.

Size dedim aliexpress'ten yaptırın pcb'leri diye. Bir 30 tane daha sipariş ettim, takipli bir şekilde tıpış tıpış 2 haftada geldiler Gerçi seninki de takipliydi herhalde.

Bu arada benim range kullanımımda eksiklik varmış. Üstteki videodaki çalışmada aslında komutu doğru kullanmışım.

Sağolasın bu arada, CIA Timer A üstünden oturtmaya çalışıyordum. Raster IRQ kullanmak her açıdan daha kolay olacak.

byte dizisini şu şekilde almak gerekiyormuş range tanımından sonra,

Kod:
RP		= range($31, $F1, 8)

RPP   .byte (RP)

İlk hurafem geçerliliğini koruyor şimdilik
Logged

Every imagination is one's self reflection but not every self reflection is imagination. <I.R.on - 2001>

twitter | blog
Sayfa: [1] 2   Yukarı git
Yazdır
Gitmek istediğiniz yer: