Gönderen Konu: 6502 makine diline meraklı olan?  (Okunma sayısı 29634 defa)

0 Üye ve 3 Ziyaretçi konuyu incelemekte.

Çevrimdışı Pe@ceR

  • RAAT
  • Tedavideki Retromanik
  • *
  • İleti: 321
6502 makine diline meraklı olan?
« : 05 Temmuz 2013, 16:47:21 »
80'lerde basic hantal ve kaplumbağa hızında takılırken makine dilini keşfettik ve ucundan köşesinden de olsa 6502 makine dili ile programlar yazmaya başlamıştık.

Bunu yaparken makine dilini anlayıp kodlara çeviren programlar olmadığından direkt matrix filmindeki gibi bilgisayarla sayılar aracılığı ile haberleşmeyi öğrendim. LDA STA DEX DEY gibi komutlar yerine doğrudan doğruya hex kodlarını hafızaya #A9 #AA #85 #00 #C8 #D0 gibisinden yazarak programlar ve oyunlar üretirdik.

Yıllar geçince yaş da 40 lara yaklaştıkça bu hazır kodlar hafızadan uçup gitmiş.

Şimdi yeniden ufak ufak makina dilinde yeniden kodlar yazmaya çalışıyorum. Tabi Oric üzerinde.

Yabancı kaynaklardan ufak ufak yeniden hatırlamaya çalışıyorum kavramları ama kaplumbağa hızında ilerliyorum.

Özellikle adresleme meselesi devreye girince kafalar karışıyor.

Absolute, indirect , indexed indirect, indirect indexed v.b. derken hangisi neydi karışıp gidiyor.

Nette elbette çok sayıda kaynak var ama hepsi başka bir yerinden konuya dalıp çorbaya çeviriyor.

6502(6510) assembly dilini ve komutlarını küçük örneklerle açıklayan kaynak var mı bildiğiniz?

Mesela basit toplama çıkarma işlemleri, blok hafıza kaydırma, ekranda byte ve bit olarak scroll kodları gibi  şeyler olabilir.



Çevrimdışı hades

  • RAAT
  • Retro Meraklısı
  • *
  • İleti: 179
Ynt: 6502 makine diline meraklı olan?
« Yanıtla #1 : 05 Temmuz 2013, 22:17:54 »
LDX #$00
LOOP   LDA KAYNAKADRES,X
STA HEDEFADRES,X
INX
BNE LOOP
RTS

Kaynak adresten, hedef adrese 256 baytlık veriyi taşır ve RTS ile programdan çıkılır.

Z80 karşılığı ise;

LD HL,KAYNAK
LD DE,HEDEF
LD BC,VERİ MİKTARI
LDIR
RET

6502 (6510)'da tek döngüde max. 256 bayt taşınırken, Z80'de 65536 bayt taşınabilir.

Çevrimdışı Ragnor

  • RAAT
  • Retro Meraklısı
  • *
  • İleti: 187
Ynt: 6502 makine diline meraklı olan?
« Yanıtla #2 : 06 Temmuz 2013, 01:13:54 »

Çevrimdışı Pe@ceR

  • RAAT
  • Tedavideki Retromanik
  • *
  • İleti: 321
Ynt: 6502 makine diline meraklı olan?
« Yanıtla #3 : 06 Temmuz 2013, 01:19:02 »
Hmm güzel bir kaynakmış teşekkürler !

Malesef tam değil. Birçok bölümün eksiği var. Birkaç kelime yazılıp bitirilmiş. Keşke tamamı olsaydı..

Çevrimdışı ozayturay

  • Retroman
  • ***
  • İleti: 76
  • Commodore Forever
Ynt: 6502 makine diline meraklı olan?
« Yanıtla #4 : 06 Temmuz 2013, 18:45:49 »
C64 Türkiye'de de var. Her ne kadar C64 baz alınarak anlatılmış olsa da faydalı olabilir.

Not: Retrojen e-Kütüphane'den download edebilirsin.
http://www.retrodergi.com - http://www.e-turay.com

* Commodore 64C, 1541-II
* Amiga 500, Cortex Floppy Emu

* XBox (TSOP Flash, XBMC)
* Wii (SoftMod, USB Loader GX)
* PS3 Slim (Rogero Cobra, webMAN + mmCM)
* PS2 (FHDB, OPS2L)
* PS1 (ModChip)
* XBox360 (JTAG, Aurora)

Çevrimdışı Pe@ceR

  • RAAT
  • Tedavideki Retromanik
  • *
  • İleti: 321
Ynt: 6502 makine diline meraklı olan?
« Yanıtla #5 : 06 Temmuz 2013, 20:05:53 »
İnceliyorum, teşekkürler.

Çevrimdışı Ref

  • Yönetici
  • Özgür Retrocu
  • *
  • İleti: 2882
  • Advanced User Simulator
    • ae unutmadan
Ynt: 6502 makine diline meraklı olan?
« Yanıtla #6 : 08 Temmuz 2013, 20:41:41 »
İnceliyorum, teşekkürler.

ingilizce sorunu yoksa,

http://6502.org/tutorials/

Yalnız 6502 öğrenmek yetmiyor, oric'i yalayıp yutmak lazım bu işlere girişirken. Örnek, Zx Spectrum Ula'sını çalışırken z80 bilgimi hızla ilerlettiğimi farkettim. Bu tür bir deneme/yanılma süreci güzel öğretiyor.

Çevrimdışı Pe@ceR

  • RAAT
  • Tedavideki Retromanik
  • *
  • İleti: 321
Ynt: 6502 makine diline meraklı olan?
« Yanıtla #7 : 08 Temmuz 2013, 20:42:55 »
Yok 6502.org u baya bir karıştırdım. Çok fayda göremedim.

Çevrimdışı witchdoktor

  • RAAT
  • Normalleşmiş Retroman
  • *
  • İleti: 757
Ynt: 6502 makine diline meraklı olan?
« Yanıtla #8 : 09 Temmuz 2013, 12:49:25 »
Nightlord'un dokümanlarına göz attın mı?

http://nightnetwork.org/writings_tr/6502_makine_dili/chunk/index.html

6502 makine dilini deneysel düzeyde mi kullanacaksın, ciddi bir proje mi amaçlıyorsun?

Çevrimdışı Alco

  • Yönetici
  • Özgür Retrocu
  • *
  • İleti: 2133
  • "Kahraman olmak, dürüst olmaktan kolaydır" Luigi P
    • Sizin Amstrad
Ynt: 6502 makine diline meraklı olan?
« Yanıtla #9 : 12 Ocak 2014, 13:50:15 »
Bundan iyisi, Şam'da kayısı: Easy 6502

Çevrimdışı Pe@ceR

  • RAAT
  • Tedavideki Retromanik
  • *
  • İleti: 321
Ynt: 6502 makine diline meraklı olan?
« Yanıtla #10 : 12 Ocak 2014, 14:47:08 »
Attım bookmarks'a :)

Çevrimdışı ozayturay

  • Retroman
  • ***
  • İleti: 76
  • Commodore Forever
Ynt: 6502 makine diline meraklı olan?
« Yanıtla #11 : 12 Ocak 2014, 15:38:19 »
Nightlord'un dokümanlarına göz attın mı?

http://nightnetwork.org/writings_tr/6502_makine_dili/chunk/index.html

Bunu hatim ettikten sonra http://nightnetwork.org/writings_tr/c64_grafik_programlama/chunk/index.html adresindeki VIC programlamadan devam edersen baya bir ufkun açılacaktır. Garantili. :)
http://www.retrodergi.com - http://www.e-turay.com

* Commodore 64C, 1541-II
* Amiga 500, Cortex Floppy Emu

* XBox (TSOP Flash, XBMC)
* Wii (SoftMod, USB Loader GX)
* PS3 Slim (Rogero Cobra, webMAN + mmCM)
* PS2 (FHDB, OPS2L)
* PS1 (ModChip)
* XBox360 (JTAG, Aurora)

Çevrimdışı Pe@ceR

  • RAAT
  • Tedavideki Retromanik
  • *
  • İleti: 321
Ynt: 6502 makine diline meraklı olan?
« Yanıtla #12 : 12 Ocak 2014, 17:08:27 »
Teşekkür ederim ama benim amacım Oric üzerinde makine dili ile işleri hızlandırmak. Haliyle c64 grafik programlama beni biraz aşıyor..

Çevrimdışı wizofwor

  • RAAT
  • Tedavideki Retromanik
  • *
  • İleti: 398
Ynt: 6502 makine diline meraklı olan?
« Yanıtla #13 : 13 Ocak 2014, 10:53:17 »
Başlık gözünü korkutmasın. Sprite haricinde VIC'in diğer sistemlerde olmayan yaptığı çok da bir şey yok aslında. Nightlord'un grafik derslerini Oric'e uyarlaman çok da zor değil. İhtiyacın olan Oric hakkında bir referans dökümanı edinmek. Sanıyorum zaten vardır sende böyle bir şey. Gerisi tercüme yeteneğine kalıyor.

Mesela ilk ders hatırladığım kadarıyla raster'ı yakalamak üzerine. Önce her çalıştığında border rengini değiştiren bir irq rutini yazıyor. Raster IRQ için VIC'te bir register var, onu set ediyor. CIA'da ikinci bir register var IRQ'ları tetikleyen onu set ediyor. Program iki kere  VIC'e, bir kere de CIA'ya başvuruyor. Bir de IRQ ile işimiz bittikten sonra rutin işleri halleden kernel rutinine dallanıyor program. Bunun Oric karşılığını bulman lazım.

Update:

Hay bin kunduz! Dehşet içinde farkettim ki Oric'te Raster IRQ yokmuş! Bu durumda her satırda 64 cyle zaman harcayan bir kodla bekleme yaparak ekranın aynı noktaya gelmesini beklemek gerekiyor.

Alıntı
In theory, yes. Unfortunately, the Oric lacks any way to sync to
the horizontal or vertical retrace (no vertical blanking IRQ).
You would have to tweak your routine so that it executes in
exactly the same number of cycles it takes for the ULA to output
a scan line. That's 64, if I recall correctly.
Gosub ile gidilen yerden goto ile dönen adam

Çevrimdışı Pe@ceR

  • RAAT
  • Tedavideki Retromanik
  • *
  • İleti: 321
Ynt: 6502 makine diline meraklı olan?
« Yanıtla #14 : 13 Ocak 2014, 16:11:54 »
Siteyi zaten makine dili üzerine googllarken görmüştüm ancak birçok bölümn sadece başlığı atılmış ve devamı getirilmemiş. örneğin scroll mevzusu v.b.

evet Oric'in şahsına münhasır bir grafik mevzusu var :)  Örnein c64'deki renk kodlamasını ayrı yaptığımız 1000 byte'lık hafızası çok özendirici bir durum :)