C programı ile Sonsuz Bölme

Bu program ile 2 sayının bölümünü virgülden sonra istediğiniz kadar hesaplatabilirsiniz. Aşağıdaki programı devC++ ile çalıştırabilirsiniz. Program virgülden sonra 1000 basamak hesaplamaktadır, istediğiniz taktirde programdan yapacağınız değişiklikle basamak sayısını arttırabilirsiniz.

#include 
	int main(){
	int bnn,bln,sayac=0;
	printf("-HESAP MAKINESI-\n");
	printf("Bolunen Giriniz: ");
	scanf("%d",&bnn);
	printf("Bolen Giriniz: ");
	scanf("%d",&bln);

		
	float temp;
	printf("\n %d.",bnn/bln);
	bnn=bnn%bln;
	while(sayacbln){
			
			printf("%d",bnn/bln);
			bnn=bnn%bln;
			//printf(" -%d- ",bnn);
		}
		else{
			bnn*=10;
			if(bnn<bln){
				if(bnn%bln!=0){
					printf("0");
				}
			}
			//printf(" +%d+ ",bnn);
			if(bnn%bln==0 && !(bnn/bln!=0)){
				printf("0");
			}
		}
			
	}
}

Buradaki bağlantıdan Full Precision Calculator’a erişebilirsiniz https://www.mathsisfun.com/calculator-precision.html.

Full Precision Calculator ile 1000 basamak hesaplatılmıştır. C programı ile karşılaştırmayı yapabilirsiniz.

Amstrad CPC ‘ler ile büyük sayıların çarpımı.

Amstrad CPC’ ler 8 bit olan Z80 mikroişlemcisi ile çalışmaktadır. Z80 nin keni içinde donanımsal çarpma işlemi yapan birime sahip değildir. Z80 8 biraz zorlarsak 16 bit toplama çıkarma 8 bit sağa sola kaydırma işlemleri yapabilmektedir. Tüm çarpma bölme algoritması yazılımsal olarak gerçekleştirilmektedir. Amstradların kendi ROM’ undaki ve Locomotif basic’ in kullandığı çarpa işlemininde sınırları vardır. Belli büyüklükte sayıların çarpımını artık tam sayı olarak değilde üstel olarak vermektedir. Amstrad ile çok büyük sayıların çarpımı yapacak BASiC dilinde yazılmış bir program buldum ve az bir düzenlmeyle Amtradlarda çalışır hale getirdim.

Aşağıda BASiC programı gerçek bir Amtsrad’ da veya herhangi bir Amstrad emülatörde deneyebilirsiniz.

100 REM DEFDBL A-H 
110 REM
120 DIM A(1,31),B(63):H=100000000
130 CLS:
131 FOR I=0 TO 1:M=N:INPUT"* ";P$
132 L=LEN(P$):N= INT(L/8):A(I,N)=VAL(LEFT$(P$,(L MOD 8)))
140 FOR J=1 TO N:A(I,J-1)=VAL(MID$(P$,L-8*J+1,8)): NEXT J:NEXT I 
150 FOR I=0 TO M:E=A(0,I):FOR J=I TO I+N:F=B(J)+E* A(1,J-I)
160 G=INT(F/H):B(J+1)=B(J+1)+G:B(J)=F-G*H:NEXT J:NEXT I
180 PRINT:PRINT:L=M+N+(G=0):PRINT USING"**######";B(L+1);:FOR I=0 TO L 
200 PRINT SPC(-((I MOD 9)<8));RIGHT$(STR$(B(L-I)+H ),8);:NEXT I:END

AMTRAD CPC6128 RAM ’lerinde hata var !

Tekrar yeni bir CPC6128 Tamiratı daha
detaylar gelecek…Şimdilik resimleri paylaşıyorum

20201010-001156

Osiloskopta yapılan ölçümlerde z80 gate array 6845 normal çalışıyor görünüyor. Ancak güç kaynağından fazla akım çektiği gözlendi, ve ram bankları aşırı ısınıyordu. Evdeki çalışmaya son verip iş yerindeki laboratuvarda incelmeye devam ettim.


Continue reading AMTRAD CPC6128 RAM ’lerinde hata var !

Bir CPC6128′ i tekrar hayata kazandırmak

Elimde Bozuk iki Amstrad 6128 var, birini tamir edebildim (portları konnektörlü Fransız modeli), diğerinde sorun biraz büyük görünüyor.Resimdeki Amstrad’ ı tekrar hayata döndürdüm, 5 sene önce aldığım bir makineydi geldiği gibi kutusunda duruyordu. Çalışıyor diye almıştım kutuyu açınca sürpriz oldu klavye rengi sararmış ve maalesef hurdaymış.

Continue reading Bir CPC6128′ i tekrar hayata kazandırmak

Retro merakımın uyanışı

Birkaç aydır retro merakım uyandı. Çocukluğumda oynadığım eski 8 bit bilgisayarlara tekrar merak sarmaya başladım. Neden diye düşünüyordum… sonunda nedenini buldum geçmişte eksik bıraktığım şeyler vardı. O eski oyun konsollarında yeterinde oyun oynamıştım, eksik olan o makinelerin donanımları ile birşeyler yapmamıştım ve yeterince program yazamamıştım. Düşündükçe aklıma geçmişin rövanşını neden almayayım engel olacak bir şeyde yoktu. Hemen kendimi google satılık Commodore 64 ve Amstrad cpc leri araştır yaparken buldum. Budan 10 sene önce ara ara araştırırdım, o zamanlar karşıma epey satılar çıkardı. Yıl olmuş 2020 ve bu makinelerin artık soyu tükenme noktasına geldiğinin farkına vardım ve bir an önce bir iki farklı makineye sahip olmalıydım. Neyse ki bugün bir adet Commodore 64 ve Amstrad CPC128 satın aldım, fiyatları altın değerinde neredeyse. yakında elimde olurlar gelsinler bakalım neler yapabileceğimizi bir görelim rövanşımı alabilecek miyim acaba.

Eski teknolojiler eski chipler

Geçmişe yolculuğa başlamışken bugünden 25 sene önce mühendislik okurken 8085 mikro işlemcisi üzerine eğitim görmüştük teorik ve laboratuvar deneyleri zihnimde sanki dün o dersleri almışım  sanki biraz önce  makine dilimde kod  (assembly ) ‘ de yazmışım gibi berraklığında hatırlıyorum. Bitirme projemi de 80’lerin ve 90’ların ortalarına kadar efsane işlemcisi olan 8 bit olarak çalışan muhteşem Z80 kullanarak  sınıf arkadaşımla beraber yapmıştık. Projemiz kablosuz (wirelless) çalışan bir printer yapmaktı. Projeyi merak edenler Hacettepe Üniversitesi elektronik bölümünün kütüphanesinde belki bulabilirler, he şeyin arşivini tutmama rağmen proje bitirme tezinin bir kopyasını almayı unutmuşum ne olduğunu da tam hatırlamıyorum belki de kayboldu mezun olma heyecanı öne de çıkmış olabilir bilemiyorum. O günler mikroişlemciler ile bir uygulama geliştirmek çok zordu, imkanlar sonuna kadar zorlanıyordu pes neredeyse ettirecek derecede. O yıllarda 2 haftada kat ettiğiniz yolu şu anki mevcut mikrokontrolörler ile hadi bilemediniz 15 dk da kat ede biliyorsunuz. Hele şu Arduino mühendisliği çıkalı ne kadar büyük zulümler görmüşüz diye yanarım. Şu da bir gerçek bizler ateşin har, çekicin ağır olduğu dönemlerde dövüldük daha sabırlı mühendisler olarak yetiştik. Bu tür muhabbetleri her gün duyuyorsunuzdur fazlada uzatmayacağım.

Gelelim retrochiplere ve eski çağ elektroniğine . Bugün siparişini vermiş olduğum chipler elime geçti, aşağıda sipariş listesini görebilirsiniz. Bu listeye daha epey eklenecekler var . Daha önceki bloğumda da bahsettiğim gibi eski bilgisayar ve chiplerini bulmak epey zorlaştı. Yeni sipariş listemin tedarikini mouser, digikey ve aliexpress’ ten yapacağım. Bir Z80 mikroişlemcinin fiyatı İstanbul Karaköy elektronikçilerde 40 ila 200 TL arasında değişebiliyor.

Yukarıda gördüğünüz listedeki malzemeler ile kendi 8 bit bilgisayarımı yapmaya çalışacağım. Görünen o ki rövanş çok çetin geçecek

AMSTRAD CPC464 BASIC ile Parabolik ayna yansıma simülasyonu

Bu programın ortaya çıkma hikayesi de biraz ilginç. Lise 2 de okuduğum zamanlardı. Fizik dersinde optik konusu altında küresel aynaları görüyorduk. O dönemlerde paraboller konusu Lise 2 matematikte işleniyordu. Fizik dersinde hocamız sürekli küresel aynalar şöyle küresel aynaların özellikleri böyledir diye anlatırdı. Tahtaya küresel aynalar çizilir gelen ışınlar yansıtılır. bir de en önemli nokta ki benim zihnime işlemişti küresel aynanın bir odak noktası olduğu söyleniyordu. Halbuki matematik dersinde daireler işlenirken dairenin odağı olduğundan bahsedilmemişti. Eğer o sırada işlediğimiz koniklerden odağı varsa parabollerin, hiperbollerin ve elipslerin vardı. Bu blogda bahsettiğim BASIC programını ancak Lise 3’te yaza bilmiştim özellikle fonksiyonların türevleri konusu işlendikten sonra. Dersteki aynalara benzetebilmek için parabolün matematik dersinde gördüğümüz yukarı ve aşağı bakan kolları olan parabol değilde sağa bakan bir parabol tasarlamıştım. Gelelim Lise 2 deki küresel ayna meselesine. Benim kafa iki dersteki çelişkiye obsesif konpülsif bir şekilde takılmış kalmıştı. Bir gün elime pergel cetvel kağıt ve kalemi aldım ( pergel cetvel Öklid geometrisidir bu arada hatırlamakta fayda var) . Daireyi pergelle çizdim cetvel yardımıyla da ışınları optiğin yansıma kurallarına olabildiğince uymaya çalışarak küresel aynadan yansıtmaya çalışıyordum. Sonuç tahmin ettiğim gibiydi küresel aynanın bir odak noktası yoktu. Keşfettiğim şey ise Küresel aynanın odakları veya odak kümesi ayna merkez yüzeyinden r/2 (r burada dairenin yarı çapı) arasında yoğunlaşıyordu. Arşimed’in kaldırma kuvvetini bulmuş kadar sevinmiştim. Fizik hocasına gol atma pozisyonu yakalamıştım. Derste bu olaya ne kadar girmeye çalışmış olsam da fırsat bulamadım top elimde kalmıştı. Lise 3 yıllarımda üniversite sınavına hazırlanırken bir tekrar esnasında küresel aynalar karşıma yeniden çıkmıştı . Bu programı yazmamı tetiklemişti. O sıralarda programı aslında küresel aynadaki ışın yansımasını simüle ediyordu. Bu programın iki versiyonunu yazmıştım küresel ayna ve parabol aynadan yansımalarını simüle eden programlar. Böylece iki geometriyi de bilgisayar ortamında karşılaştır bilmiştim. Böylece beynimde saplanıp kalan sorunun cevabını bulmuştum. Ancak elimde parabol aynanın simülasyon programının kopyası kalmış. İlk fırsatta küresel ayna algoritmasını tekrar yazıp burada yayınlayacağım.

Epey uzun oldu sanırım bura da kesiyorum Hoşçakalın

Continue reading AMSTRAD CPC464 BASIC ile Parabolik ayna yansıma simülasyonu