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.trGenel KategoriProjeTexas Instruments'a hürmetlerimizle
Sayfa: 1 2 [3]   Aşağı git
Yazdır
Gönderen Konu: Texas Instruments'a hürmetlerimizle  (Okunma Sayısı 18840 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
i_r_on
Uzman
*****
Mesaj Sayısı: 2.865



Üyelik Bilgileri WWW
« Yanıtla #30 : Aralık 20, 2015, 19:47:09 ÖS »

Bu arada transistör katını inşa ettim. Döndüm devreye bağlayacağım. Baktım görüntü aldığım kabloya olan bağlantı çıkmış. Lan acaba deyip bağladım ve görüntü aldım

Yukarıdan aşağı epey çizgileri olan simsiyah bir görüntü.
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.865



Üyelik Bilgileri WWW
« Yanıtla #31 : Aralık 20, 2015, 21:02:00 ÖS »

Arduino ile interface te çalıştı bu arada. Ancak görüntü felaket
Analog dünyasında felaketim o yüzden delimawi'nin görüntü almasını bekleyeceğiz artık.




ps: B-Y ve R-Y'yi de bağladım sonra, renkli görüntü de aldım.
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 #32 : Aralık 20, 2015, 22:27:56 ÖS »

Goruntu aldim derken? Saka bir yana tebrikler... ben en az bir hafta ilerleme kaydedemem herhalde. Ctesi bos gunde ben de deneyecegim PIC ile goruntu almayi. Analog kisimla da ilgilenecegim ister istemez. Bir adum sonrasi ne olacak? MSX icin yazilmis hazir bir oyunu mu port etmek mantikli olir acab. Open source herhangi bir oyun var mi TMS kullanan acab...
Logged

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



Üyelik Bilgileri WWW
« Yanıtla #33 : Aralık 20, 2015, 23:30:41 ÖS »

Aslında bu çipi kullanmaktan vazcayabilirim. Okudukça, öğrendikçe kısıtlı imkanları olan bir çip olduğunu iyice anladım. Beri yandan çok fazla alternatif de yok. MSX2+'ta kullanılan V9958'e mi geçsek acaba diyorum ancak onun da programlanması çok kompleks.

https://en.wikipedia.org/wiki/Yamaha_V9958

- Video RAM: 128 KB + 64 KB of expanded VRAM
- Text modes: 80 x 24 and 32 x 24
- Resolution: 512 x 212 (4 or 16 colours out of 512) and 256 x 212 (16, 256, 12499 or 19268 colours)
- Sprites: 32, 16 colours, max 8 per horizontal line
- Hardware acceleration for copy, line, fill, etc.
- Interlacing to double vertical resolution
- Horizontal and vertical scroll registers

Benim için bir adım sonrası şöyle,
Öncelikle benim sid player'daki hazır 6502 setup'ta deneyeceğim çipi programlayı. Paralelinde WDC 65c02 sipariş edeceğim, 5mhz'e kadar çıkıyor bu çipler. Gerçi TMS'nin 2'den 8 mikrosaniyeye kadar olan vram erişim süreleri ile bu hızlar ne işe yarar bilmiyorum ya

ps: Şöyle bir şey de var, kenara not edelim : http://atariage.com/forums/topic/168968-f18a/
« Son Düzenleme: Aralık 21, 2015, 00:05:47 ÖÖ Gönderen: i_r_on » Logged

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

twitter | blog
wizofwor
Genel Yönetici
*****
Mesaj Sayısı: 4.436


Gosub ile gidilen yerden goto ile dönen adam


Üyelik Bilgileri WWW
« Yanıtla #34 : Aralık 21, 2015, 10:41:14 ÖÖ »

TMS9929'in bus'a müdahele etmemesi, kendi belleği olması, veri alış verişinin yazmaçlar
üzerinden yapılması aslında hem programcının, hem donanım üzerinde çalışan mühendislerin  işini çok kolaylaştırıyor. Bu yüzden arcade oyunlarında da bol bol kullanılan bir chip. Sen yetersiz kaldığını söyleyince aynı prensiple çalışan Sega Master System Video Display Chip'ini önereyeim dedim. Ancak o da TMS9929 türeviymiş.

Sega Mage Drive VDP (Sega 315-5313) kullanmayı düşünür müsün? Yalnız bu çipin iki falsosu var. Birincisi Sega üretim custom bir çip olması. Ancak internette indirilebilir fpga core'ları falan var. Mega Drive çok yaygın bir sistem olduğu için yedek parça olarak da temin edilebilir. İkincisi de 16-bit bir çip olması. Dolayısıyla bunu kullanırsan tasarladığın cihaz cross genereration olacak.
Logged

i_r_on
Uzman
*****
Mesaj Sayısı: 2.865



Üyelik Bilgileri WWW
« Yanıtla #35 : Aralık 21, 2015, 11:10:16 ÖÖ »

Kristalde sorun yaşadığımı düşündüğümde elimin ilk uzandığı sistem master system oldu Yavuzg'den aldığım konsolu açtım baktım TMS 99XX bulma ümidi ile ancak onun yerine 50 küsür mhz bir ana osilatör ve bir sürü custom sega chip vardı. TMS'nin tasarımını alıp bir sürü iyileştirme yapmışlar, sesi de dahil edip yeni bir custom chip yapmışlar. Temin edilebilirse aslında kullanılabilir.

Fpga'ya çok sıcak bakmıyorum, mümkün mertebe oldschool komponentler olsun istiyorum.
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 #36 : Aralık 21, 2015, 11:25:15 ÖÖ »

i_r_on: Diğer başlık altında TMS'den bahsettiğinde hiç düşünmeden atladım. Çünkü ilk bilgisayarım bir MSX tabanlı bir SVI-728'di. O bilgisayar içinde de TMS kullanılıyor. Hatta o bilgisayar üzerinde basic ile yazdığım ilk programlarda bol bol grafik üzerine çalışmalarım olmuştu. TMS tabiki bir yamaha yada VIC-II kadar kabileyetli değil. Eğer chip'i değiştirecek isek sanırım ben başka bir chip için vakit ayıramayacağım. Ama TMS ile de yapabildiğim ne ise yaparım bu hali ile...

Şu ara doberman pcbleri henüz meydanda yok, diğer FPGA tabanlı projelere de başlayamadım bu sebeple. Aradaki boşluğu doldurmak adına iyi geldi TMS şimdilik... Kahkaha

Logged

Doberman ♦ megaOne ♦ HDMI-64 ♦ HDMI-520 ♦ NewSchool
wizofwor
Genel Yönetici
*****
Mesaj Sayısı: 4.436


Gosub ile gidilen yerden goto ile dönen adam


Üyelik Bilgileri WWW
« Yanıtla #37 : Aralık 21, 2015, 12:26:21 ÖS »

Ufak bir güncelleme ile yukarıdaki bilgi eksiğini düzelteyim. Mega Drive VDP çipi her ne kadar Sega üretimi olsa da Yamaha YM7101 ile birebir uyumluymuş. Genesislerde YM7101 kullanmışlar. YM7101'e de bir bakın isterseniz.
Logged

cdemir
Uzman
*****
Mesaj Sayısı: 3.325



Üyelik Bilgileri
« Yanıtla #38 : Aralık 21, 2015, 12:34:54 ÖS »

Yine anlayamadığım. Ama merakla takip ettiğim bir konu daha Kahkaha

Bakalım sonunda ne olacak
Logged

i_r_on
Uzman
*****
Mesaj Sayısı: 2.865



Üyelik Bilgileri WWW
« Yanıtla #39 : Aralık 21, 2015, 14:00:43 ÖS »

Ufak bir güncelleme ile yukarıdaki bilgi eksiğini düzelteyim. Mega Drive VDP çipi her ne kadar Sega üretimi olsa da Yamaha YM7101 ile birebir uyumluymuş. Genesislerde YM7101 kullanmışlar. YM7101'e de bir bakın isterseniz.

YM7101 ne aliexpress'te ne de ebay'de sonuç vermedi Her ne kadar geçmişte vukuatlarımız olsa da sağlam makineden çip sökmek te bizim gibi retrocuya yakışmaz

i_r_on: Diğer başlık altında TMS'den bahsettiğinde hiç düşünmeden atladım. Çünkü ilk bilgisayarım bir MSX tabanlı bir SVI-728'di. O bilgisayar içinde de TMS kullanılıyor. Hatta o bilgisayar üzerinde basic ile yazdığım ilk programlarda bol bol grafik üzerine çalışmalarım olmuştu. TMS tabiki bir yamaha yada VIC-II kadar kabileyetli değil. Eğer chip'i değiştirecek isek sanırım ben başka bir chip için vakit ayıramayacağım. Ama TMS ile de yapabildiğim ne ise yaparım bu hali ile...

Şu ara doberman pcbleri henüz meydanda yok, diğer FPGA tabanlı projelere de başlayamadım bu sebeple. Aradaki boşluğu doldurmak adına iyi geldi TMS şimdilik... Kahkaha

Bakma benim de burun kıvırdığıma, sanki her gün bir video chip interface'i yapıyormuşum yahut çok baba oyunlar yazabilecekmişim gibi oldu biraz Ben de iliğini kemiğini sömürmeye çalışacağım tabii bu TMS çiplerin
Logged

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

twitter | blog
imgqtr
Üye
***
Mesaj Sayısı: 207



Üyelik Bilgileri
« Yanıtla #40 : Aralık 21, 2015, 15:15:21 ÖS »

Yine anlayamadığım. Ama merakla takip ettiğim bir konu daha Kahkaha

Bakalım sonunda ne olacak

Ben de zırnık anlamıyorum ama okurken keyif alıyorum
Logged

"Çalışmadan, öğrenmeden, yorulmadan rahat yaşamanın yollarını alışkanlık haline getirmiş milletler, evvela haysiyetlerini, sonra hürriyetlerini ve daha sonra da istikballerini kaybetmeye mahkumdurlar"
M.Kemal ATATÜRK
i_r_on
Uzman
*****
Mesaj Sayısı: 2.865



Üyelik Bilgileri WWW
« Yanıtla #41 : Aralık 22, 2015, 22:48:51 ÖS »

Referans olması açısından, test için yazdığım arduino kodu aşağıdaki şekilde. Register erişimlerinde sıkıntı yok yalnız VRAM'de sıkıntım var. Muhtemelen bağlantılarda bir nanik var. İlk tur düzeltme geçtim, 256 byte yazıp okuma başarılı oldu. Ancak sonra tekrar afalladı. Artık ekranda garip garip şekiller görmeye başladım
Kod:
#define MODE 2
#define CSW 3
#define CSR 8
#define RESET 9
 
 
#define PORT_MANIPULATION

int bytePins[8] =   { 14, 15 , 16, 17, 4, 5, 6, 7 };

void setDBReadMode() {
  #ifdef PORT_MANIPULATION
  DDRD = DDRD & B00001111; // Set Pin 4..7 as inputs. High nibble of databus.
  DDRC = DDRC & B11110000; // Set Analog pin 0..3 as inputs     
  #else
  for (int i=0;i<8;i++) {
    pinMode(bytePins[i], INPUT);
  }
  #endif
}

void setDBWriteMode() {
  #ifdef PORT_MANIPULATION 
  DDRD = DDRD | B11110000; // Set Pin 4..7 as outputs. High nibble of databus.
  DDRC = DDRC | B00001111; // Set Analog pin 0..3 as outputs
  #else
  for (int i=0;i<8;i++) {
    pinMode(bytePins[i], OUTPUT);
  } 
  #endif
}

void reset() {
  Serial.println("Resetting");
  digitalWrite(RESET, HIGH);
  delayMicroseconds(100);
  digitalWrite(RESET, LOW);
  delayMicroseconds(5); 
  digitalWrite(RESET, HIGH);
}

inline void setPort(unsigned char value) {
    #ifdef PORT_MANIPULATION
    PORTD = (PIND & 0x0F) | (value & 0xF0);
    PORTC = (PINC & 0xF0) | (value & 0x0F);
    #else
    unsigned char mask = 1;
    for (int i=0;i<8;i++) {
      digitalWrite(bytePins[i], value & mask);
      mask = mask<<1;
    }   
    #endif   
}

inline unsigned char readPort() {
    unsigned char memByte = 0;   
    #ifdef PORT_MANIPULATION
    memByte  = (PIND & 0xF0) | (PINC & 0x0F);
    #else
    unsigned char mask = 1;
    for (int i=0;i<8;i++) {
      if (digitalRead(bytePins[i])) {
        memByte = memByte | mask;
      }
      mask = mask<<1;
    }       
    #endif 
   
    return memByte;
}

//Writes a byte to databus for register access
void writeByte( unsigned char value) { 
    setDBWriteMode();
    setPort(value);
    digitalWrite(MODE, HIGH);       
    digitalWrite(CSW, LOW);           
    delayMicroseconds(10);
    digitalWrite(CSW, HIGH);
    setDBReadMode();
}

//Reads a byte from databus for register access
unsigned char  readByte( ) {
    unsigned char memByte = 0;
    digitalWrite(MODE, HIGH);           
    digitalWrite(CSR, LOW);       
    delayMicroseconds(10);
    memByte = readPort();
    digitalWrite(CSR, HIGH);
    return memByte;
}

//Writes a byte to databus for vram access
void writeByteToVRAM( unsigned char value) { 
    setDBWriteMode();
    setPort(value);
    digitalWrite(MODE, LOW);       
    digitalWrite(CSW, LOW);           
    delayMicroseconds(10);
    digitalWrite(CSW, HIGH);
    setDBReadMode();
}

//Reads a byte from databus for vram access
unsigned char  readByteFromVRAM( ) {
    unsigned char memByte = 0;
    digitalWrite(MODE, LOW);           
    digitalWrite(CSR, LOW);       
    delayMicroseconds(8);
    memByte = readPort();
    digitalWrite(CSR, HIGH);
    return memByte;
}

void setRegister(unsigned char registerIndex, unsigned char value) {
  writeByte(value);
  writeByte(0x80 | registerIndex); 
}

void setWriteAddress( unsigned int address) {
  writeByte((address & 0xFFC0)>>6);
  writeByte(0x40 | (address & 0x3F)); 
}

void setReadAddress( unsigned int address) {
  writeByte((address & 0xFFC0)>>6);
  writeByte((address & 0x3F)); 
}

void setup() {
  setDBReadMode();
  Serial.begin(9600);
  pinMode(MODE, OUTPUT);
  pinMode(RESET, OUTPUT);
  pinMode(CSW, OUTPUT);
  pinMode(CSR, OUTPUT); 
 
  digitalWrite(RESET, HIGH);
  digitalWrite(MODE, HIGH); 
  digitalWrite(CSW, HIGH);   
  digitalWrite(CSR, HIGH); 

  reset();
  delay(2000);

  setRegister(0, 0);
  setRegister(1, 0xD0);
  setRegister(7, 0x56); 
 
  Serial.println("Clearing RAM");
  setWriteAddress(0);
  for (int i = 0;i<16384;i++) {
    writeByteToVRAM(0);
  }
  Serial.println("RAM Cleared, testing"); 
  setWriteAddress(0);
  for (int i = 0;i<256;i++) {
    writeByteToVRAM(i);
  }
  setReadAddress(0);
  for (int i = 0;i<256;i++) {
    unsigned char value = readByteFromVRAM();
    Serial.println(value);
  }
}


void loop() {
 

}
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.865



Üyelik Bilgileri WWW
« Yanıtla #42 : Aralık 24, 2015, 22:35:47 ÖS »

SRAM Interface'in kablolamasını debug etmeye epey üşeniyorum

Elimde eskiden kalma bir adet 1MB simm bellek var. Üzerindeki çiplerin (UPD421000) datasheet'ine baktım data pin'leri bidirectional değil yani bu açıdan TMS'ye uyuyorlar. 16KB için 1MB (64 misli) biraz overkill ancak belki bank switching tadında bir şeyler yapılıp ta kullanılabilir. Avantajı şu simm memory modülü içinde hali hazırda çipler organize edildiği için 23 doğrudan bağlantı ile işi kurtarıyorum. Diğer türlü 2 misli bağlantı var. Güzel tarafı elimde simm soket de var. (Sıcak hava tabancası ile board'dan sökmem şartıyla )

Simm belleğin pinout'u aşağıdaki şekilde. (A0..A6 arası kullanılacak adres hatlarından, parity kullanılmayacak)


*1 VCC +5 VDC
*2 /CAS Column Address Strobe
*3 DQ0 Data 0
*4 A0 Address 0
*5 A1 Address 1
*6 DQ1 Data 1
*7 A2 Address 2
*8 A3 Address 3
*9 VSS Ground
*10 DQ2 Data 2
*11 A4 Address 4
*12 A5 Address 5
*13 DQ3 Data 3
*14 A6 Address 6
 15 A7 Address 7
*16 DQ4 Data 4
17 A8 Address 8
18 A9 Address 9
19 A10 Address 10
*20 DQ5 Data 5
*21 /WE Write Enable
*22 VSS Ground
*23 DQ6 Data 6
*24 A11 Address 11
*25 DQ7 Data 7
26 QP* Data parity out
*27 /RAS Row Address Strobe
28 /CASP* Parity Column Address Strobe
29 DP* Data parity in
*30 VCC +5 VDC
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.865



Üyelik Bilgileri WWW
« Yanıtla #43 : Aralık 24, 2015, 22:40:40 ÖS »

Derken... çiplerin datasheet'leri ile simm standardı arasında fark olduğunu görüyoruz Simm standardında input ve output aynı hatta indirilmiş durumda Elimdeki simm modülünün üstünde de 8 yerine 9 çip var zaten. Ucuz da olsa parite koymuşlar diyordum ama işin rengi farklı demekki.

ps: Din ve Dout'ları birbirine bağlamış olmalılar bu arada.. Örnek devrede 74245 ve R/W sinyali ile ayrılmış.
« Son Düzenleme: Aralık 24, 2015, 22:48:24 ÖS Gönderen: i_r_on » Logged

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

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