Zor bir Commodore PET onarımı: 6 1/2 bozuk talaşın izini sürmek
1977'de Commodore, işlemciyi birleştiren ilginç bir ev bilgisayarı olan PET bilgisayarını piyasaya sürdü. küçük bir klavye, depolama için bir kaset sürücüsü ve metal bir ünitede yamuk bir ekran. Commodore PET, Apple II ve Radio Shack'in TRS-80'i, çalışmaya hazır bilgisayarlarla ev bilgisayarı pazarını başlattı. Geçmişe bakıldığında çağrılan sistemler1977 Üçlü. İlk programlamalarımın çoğunu PET üzerine yaptım, bu yüzden birkaç yıl sonra birisi bana çalışmayan bir PET teklif ettiğinde Daha önce nostaljik nedenlerle almıştım.
Bir ev bilgisayarının tamirinin kolay olacağını düşünürdünüz, ancak bunun bir zorluk olduğu ortaya çıktı. İlk PET'lerdeki çipler başarısızlıkla meşhurdur ve elbette çok sayıda bozuk çip bulduk. Üstelik bu RAM ve ROM çipleri, günümüzde çoğu zaman temin edilemeyen özel tasarımlardı. Bu yazıda, başkalarına da faydası olur diye, sistemi nasıl onardığımızı özetleyeceğim.
Bilgisayarı ilk açtığımda rastgele karakterlerle dolu bir ekranla karşılaştım. Bu aslında güven vericiydi çünkü bilgisayarın büyük bir kısmının çalıştığını gösteriyordu: sadece monitörün değil, ancak video RAM'i, karakter ROM'u, sistem saati ve güç kaynağının tümü çalışır durumdaydı.
Bir osiloskopla sistem veriyolundaki sinyalleri inceledim ve saatin, adresin ve veri hatlarının faaliyetle dolu olduğunu gördüm. yani 6502 CPU çalışıyor gibi görünüyordu. Ancak bazı veri hatlarında aşağıda gösterildiği gibi üç voltaj seviyesi vardı. Bu açıkça iyi değildi ve veri yolu üzerindeki bir çipin veri sinyallerini bozduğunu gösteriyordu.
Çevrimiçi bazı yararlı siteler7PET'in ekranı temizlemeden önce sıkışması durumunda bunun en olası sebebinin şunlar olduğu öne sürüldü: sistem ROM yongasının arızalanması. Neyse ki, Marc'ın birRetro Çip Test Cihazıiçin tasarlanmış harika bir cihaz vintage IC'leri test edin: yalnızca 7400 serisi mantığı değil, aynı zamanda vintage RAM'leri ve ROM'ları da test edin. Dahası, test cihazı bir sürü eski bilgisayar için doğru ROM içeriğini bilir, böylece bir PET ROM'un olup olmadığını anlayabilir. doğru içerikler.
Retro Çip Test Cihazı, PET'in yedi ROM çipinden ikisinin arızalı olduğunu gösterdi. Bu yongalar, standart ROM'larla uyumsuz, tuhaf bir tasarıma sahip 2K × 8 ROM olan MOS Technologies MPS6540'tır. Neyse ki birçok kişi standart 2716 EPROM'un yerine geçmenize olanak tanıyan adaptör kartları üretiyor, ben de sipariş verdim iki adaptör kartını birleştirdi ve Marc, çevrimiçi veri dosyalarından 2716 EPROM'ları programladı. 2716 EPROM'un programlanması, Marc'ın programcısının desteklediğinden biraz daha fazla voltaj gerektirir, ancak çipler sanki doğru içeriğe sahip olun (öncülük).
PET'in kasası, onu bir araba kaputu gibi açık tutmak için soldaki bir kolla birlikte sallanarak açılıyor. Anakartın ön tarafındaki ilk iki sıra çip RAM çipleridir. RAM'in arkasında yedi ROM yongası bulunur; iki tane oldu ROM adaptör kartlarıyla değiştirildi. 6502 işlemci, ROM'ların arkasında, sağa doğru uzanan büyük siyah çiptir.
Adaptör kartları yerindeyken PET'i büyük bir başarı beklentisiyle çalıştırdım, ancak tam olarak başarısız oldu daha önce olduğu gibi, ekrandaki çöpleri temizleyememek. Marc, neler olup bittiğini öğrenmek için Agilent 1670G mantık analizörünü kullanma zamanının geldiğine karar verdi; (1999 yılına dayanan bu mantık analizörü, Marc'ın standartlarına göre moderndir.) Mantık analizörünü aşağıda gösterildiği gibi 6502 çipine bağladı, böylece adres veriyolunu, veri yolunu takip edebildik. ve okuma/yazma sinyali. Bu arada Ghidra'yı kullanarak ROM içeriğini parçalara ayırdım, böylece mantık analizcisini montaj koduna göre yorumlayabildim. (GıdraGarip bir şekilde NSA tarafından geliştirilen bir tersine mühendislik yazılımı programıdır.)
Mantık analizörü, 6502 işlemcisinden gelen her bellek erişiminin izini sürerek ne yürüttüğünü gösterdi. Sistem açıldıktan sonra bir süre her şey yolunda gitti: işlemci sıfırlama vektörü konumuna atladım, biraz başlatma işlemi yaptım, belleği test ettim ama sonra her şey ters gitti. Bellek testinin ilk baytta başarısız olduğunu fark ettim. Daha sonra yazılım, BASIC programını ve değişkenlerini çöp toplayarak daha fazla depolama alanı elde etmeye çalıştı. Hiç depolama alanı olmadığı için işler pek iyi gitmedi ve sistem, gelen koda ulaşamadan kilitlendi. ekranı temizler.
Bellek yongalarını Retro Chip Tester'ı kullanarak tekrar test ettik ve üç hatalı yonga bulduk. ROM yongaları gibi, RAM yongaları da sıra dışıdır: MOS Teknolojisi6550statik RAM yongası, 1K×4. Kötü talaşları çıkararak ve iyi talaşları karıştırarak 8K PET'i 6K PET'e düşürdük. Bu sefer sistem açıldı, ancak ekranın ortasına yakın bir yerde gizemli bir 2x2 dama tahtası sembolü vardı (öngörü). "Merhaba" yazdırmak için basit bir program yazdım, ancak sonuçlar çok garipti: dört kayan noktalı sayı, ardından asılarak.
Bu davranış çok kafa karıştırıcıydı. Sistem kodunun çoğunu çalıştıran bir programı bilgisayara başarıyla girebildim. (Bu, yankılanan metnin önemsiz olduğu bir terminal gibi değildir; PET, ayrıştırmak için perde arkasında birçok işlem yapar. girildiği gibi bir BASIC programı.) Ancak programın çıktısı tamamen yanlıştı; bir dize yerine kayan noktalı sayılar basıyordu.
Ayrıca bilgisayarı açtıktan sonra ara sıra ortaya çıkan bir sorunla da karşılaştık. önyükleme mesajı aşağıda gösterildiği gibi tamamen anlamsız olacaktır. "*** COMMODORE BASIC ***" banner'ı yerine rastgele karakterler ve grafikler beliriyordu.
Bilgisayar nasıl çoğunlukla iyi çalışıyor ama aynı zamanda tamamen yanlış çalışıyor olabilir? Öğrenmek için mantık analizörüne geri döndük.
Anlamsız önyükleme mesajının muhtemelen takip edilmesi en kolay şey olacağını düşündüm, çünkü bu gerçekleşti önyükleme işleminin başlarında. Koda baktığımda, yazılımın belleği test ettikten sonra, orta derecede karmaşık bir kod kullanarak bellek boyutunu bir ASCII dizisine dönüştürdüğünü keşfettim. algoritma.1 Daha sonra ekrana sistem açılış mesajını ve hafıza boyutunu yazar.
PET ekrana metin yazmak için bir alt program kullanır. Metin mesajına yönelik bir işaretçi, 0071 ve 0072 numaralı hafıza konumlarında tutulur. Aşağıdaki montaj kodu işaretçiyi (X ve Y kayıtlarında) bu hafıza konumlarına saklar. (Bu Ghidra çıktısı adresi, talimat baytlarını ve sembolik birleştirici talimatlarını gösterir.)
d5ae 86 71 STX 71 d5b0 84 72 STY 72 d5b2 60 RTS
Yukarıdaki kod için, işlemcinin 86 ve 71 numaralı talimat baytlarını okumasını ve ardından 0071 adresine yazmasını beklersiniz. Daha sonra 84 ve 72 baytlarını okumalı ve 0072 adresine yazmalıdır. Ancak aşağıdaki mantık analiz cihazı çıktısı biraz farklı bir şeyin olduğunu gösterdi. İşlemci, D5AE ve D5AF adreslerinden 86 ve 71 numaralı talimat baytlarını getirdi, daha sonra beklendiği gibi 0071 adresine 00 yazdı. Daha sonra, beklendiği gibi 84 ve 72 numaralı talimat baytlarını getirdi, ancak 0072 yerine 007A adresine 01 yazdı!
step address byte read/write'
112235 D5AE 86 1
112236 D5AF 71 1
112237 0071 00 0
112238 D5B0 84 1
112239 D5B1 72 1
112240 007A 01 0
Bu dumanı tüten bir silahtı. İşlemci bozulmuştu ve adreste bir bitlik hata vardı. Belki 6502 işlemci kötü bir sinyal verdi ya da veri yolunda sorunlara neden olan başka bir şey vardı. Bu hatanın sonucu, dize işaretçisinin istenen önyükleme yerine rastgele belleğe başvurmasıydı. mesaj, böylece ekrana rastgele karakterler yazıldı.
Daha sonra ekranın neden gizemli bir dama tahtası karakterine sahip olduğunu araştırdım. Tüm yazma işlemlerini ekran belleğine çıkarmak için mantık analizörü çıktısını tarayacak bir program yazdım. Ekran işlemlerinin çoğu mantıklıydı (başlangıçta ekranı temizlemek ve ardından önyükleme mesajını yazmak) ancak bir tane buldum ekrana beklenmeyen yazma. Aşağıdaki Assembly kodunda Y kaydı sıfır sayfa adresi 5e'ye yazılmalı, X kaydı ise BASIC yorumlayıcısının kullandığı bazı konumlar olan 66 adresine yazılmalıdır.
d3c8 84 5e STY 5e d3ca 86 66 STX 66
Ancak aşağıdaki lojik analizör çıktısı bir sorun gösterdi. İlk satır, d3c8 adresinden 84 işlem kodunu almalıdır, ancak işlemci 8c işlem kodunu ROM'dan almıştır, 16 bitlik bir adrese yazma talimatı. Sonuç olarak 6502, sıfır sayfalı bir adrese yazmak yerine 16 bitlik bir adrese yazmak için başka bir bayt getirdi. adresi. Spesifik olarak, STX talimatını (86) yakaladı ve bunu adresin bir parçası olarak kullanarak ekran belleğine FF (dama tahtası karakteri) yazdı. 865E2005E'deki BASIC veri yapısı yerine. Üstelik STX talimatı adres olarak tüketildiği için yürütülmedi. Böylece hem ekrana başıboş bir karakter yazıldı hem de hafızadaki veri yapıları güncellenemedi. BASIC yorumlayıcısının programı çalıştırmayı denediğinde kontrolden çıkması şaşırtıcı değil.
step address byte read/write' 186600 D3C8 8C 1 186601 D3C9 5E 1 186602 D3CA 86 1 186603 865E FF 0
Bir ROM'un D3C8 adresinde yanlış baytı (8C) sağladığı sonucuna vardık. Bu ROM'un bizim değiştirmelerimizden biri olduğu ortaya çıktı; Yetersiz güce sahip EPROM programcısı kesintili bir baytla sonuçlanmıştı. Marc, EPROM'u daha güçlü bir programlayıcıyla yeniden programladı. Sistem açıldı, ancak beklenenden çok daha az RAM ile. Görünüşe görebir diğerRAM çipi arızalandı.
Sonunda PET'i çalıştırmayı başardık. Animasyonlu bir grafik deseni oluşturmak için basit bir program yazdım, bir program 13 yaşlarımdayken hatırladım3ve şu çıktıyı oluşturdu:
Geriye dönüp baktığımda, başlangıçta tüm RAM ve ROM yongalarını test etmem gerekirdi ve muhtemelen hataları bulabilirdik mantık analizörü olmadan. Ancak mantık analizörü bana Ghidra ve PET'in montaj kodu hakkında daha fazla bilgi edinmem için bir bahane verdi. sonunda her şey yolunda gitti.4
Sonuçta PET'in 6 bozuk çipi vardı: iki ROM ve dört RAM. 6502 işlemcinin kendisinin iyi olduğu ortaya çıktı.5Aşağıdaki fotoğraf, PET'in minik klavyesinin üzerindeki 6 bozuk çipi gösteriyor. Her tuşun üstünde PETSCII olarak bilinen ilginç grafik karakter setini görebilirsiniz.6Başlığa gelince, kötü programlanmış ROM'u yarı kötü bir çip olarak sayıyorum. Çipin kendisi kötü değildi ama düzensiz çalışıyordu.
Daha fazlasını istiyorsanız CuriousMarc PET restorasyonunun bir videosunu hazırladı:
Beni Bluesky'de takip edin (@righto.com) or RSSgüncellemeler için. (Ben ...
⚠️ Bu konu righto.com botu tarafindan otomatik olarak ice aktarilmistir.
🔗 Kaynak Baglantisi: http://www.righto.com/2025/04/commodore-pet-repair.html







