SIMONS' (21
Hoşbulduk... Geçen bölümümüzde grafik komutlarını bitirmiştik. Bu sefer biraz daldan dala atlayacağız. Önce Commodore 64'ün müzik yeteneklerini kullanan komutları tanıyacağız. Daha sonra sıra, sprite tanımlama ve hareket ettirme konusunda karşılaşılan güçlükleri yok eden emirlere gelecek. Hemen buna bağlı olarak, karakter setini nasıl değiştirebileceğimizi göreceğiz. Ve son olarak da, PASCAL, MODULA-2 ve bunlar gibi yüksek dillerde varolan ve son zamanlarda Basic'in de bir parçası olmaya başlayan yapısal kontrol komutlarını
Simons' Basic ile nasıl kullanacağımızı inceleyeceğiz.
Önce Müzik Komutları
Commodore 64'ün SID (Sound Interface Device) ünitesi, benzerleri arasında tartışılmaz bir üstünlüğe sahiptir. Ancak programlanması POKE komutları ile oldukça zor olmakta. Bu nedenle Simons' Basic, yepyeni müzik komutları oluşturmuş. Önce bilgisayarın ses yüksekliğini ayarlamamız lazım. VOL n komutu ile bunu yapabilirsiniz. Burada 'n' parametresi 0-15 arası bir sayı olmalı. 0 ile ses kapalı kalırken, 15 ile de ses en yüksek volümüne ulaşmaktadır. Sıra geldi, parçayı çalacak sesin tanımına. Ses iki biçimde tanımlanır. Önce o sesin nasıl üretileceği, yani hangi dalga türünde olacağı saptanmalıdır. Sonra da sesin zaman içindeki dalgalanmasının nasıl olacağı belirtilir. Bunlardan birincisi için WAVE n,xxxxxxxx komutu kullanılmalı. Burada n ile Commodore 64'ün ses üreteçlerinden hangisini kullanmak istediğimizi belirtiyoruz. 1-3 arası bir sayı olmalı bu. 'xxxxxxxx' ise o sesi kontrol eden yazmacın (registerin) sahip olması gereken değeri ikili sayı sisteminde gösterir. Bunun nedeni, bu yazmacın sahip olduğu her bir bit'in
(herhalde bu bit'in bir byte'ı oluşturan 8 bit'ten biri olduğunu biliyorsunuz) ayrı bir öneminin oluşu. Böylece sesi çok değişik şekillerde etkilemeniz mümkün. Bu parametre, örneğin 00010000 olabilir. Dikkat etmeniz gereken şey, bu parametrenin mutlaka 8 basamaktan oluşması ve 0 ile 1'den başka karaktere sahip olmaması gerektiği. Bu bit'lerin en soldakine yedinci bit, en sağdakine de sıfırıncı bit denir. Buna göre her bir bit'in anlamı kısaca aşağıdaki gibidir. Daha ayrıntılı bilgi için ya bu konuda kitaplara ya da “Programcının elkitabı'na başvurmalısınız.
7: Ses açık/kapalı 6: Senkronizasyon 5: Halka modülasyonu 4: Test
3: Üçgen karakteristik 2: Testere karakteristik
1: Dikdörtgen karakteristik 0: Beyaz gürültü
— Cc
Sesin zaman içindeki dalgalanmasını, ENVELOPE n, a, d, s, r komutu belirler. 'n' parametresi ile demin olduğu gibi, hangi ses üreticinden bahsettiğimizi belirtiyoruz. 'a', 'd', 's' ve 'r' parametreleri, o sesin dalgalanma sürelerini ayarlar. İngilizcede attack, decay, sustain ve release kelimelerinin baş harfleri ile adlandırılan
ADSR eğrisi bu sayılarla belirlenir. 'a' ile, sesin ilk başladığı an ile en yüksek seviyesine ulaşacağı an arasında kalan zaman ayarlanır. 'd' parametresi ise, bu en yüksek noktadan, biraz sonra belirteceğimiz ortalama değere düşüş için geçecek süreyi verecektir. İşte bu ortalama değeri ise 's' belirleyecektir. 'r' ile, ses üretici, çıkan sesi üretmeyi bıraktığında, sesin daha ne kadar zaman yankılanması (tınlama) gerektiğini belirlersiniz. Tüm bu parametreler 0-15 arasında olacaktır. 0 'a' ve 'r' için hızlı, 15 en yavaş demektir. 0-24 saniye arasında değişen zaman dilimlerine karşılık gelirler. 's' ise, ortalama ses yüksekliğinin o anda VOL ile belirlenmiş olan yüksekliğin kaçta kaçı olacağını belirtir. Şimdi sıra geldi notaları ve çalma sürelerini tanımlamaya. MUSIC hız, tanım ile bu işlemi yapabilirsiniz. 'hız' için 0-255 arası sayılar geçerlidir. 0 en hızlısı iken 255 en yavaşıdır. Tabii buradaki en önemli kısım 'tanım' kısmı. Burası aslında bir karakter değişkeni. Bu değişkenin içindeki karakterler müziğimizi tanımlayacaklar. Bunu en iyi, verdiğimiz örnek programda görebilirsiniz. Tanımın ilk karakteri (CLR) tuşu olmalıdır. Hemen arkasından hangi ses ile çalınacağı gelir. 1-3 arası bir sayı olmalı bu. Sonra gelen iki karakter ise 2 ve tuşu. Artık notaları tanımlamaya başlayabiliriz. Ne yazık ki notaları do, re,.. si olarak tanımlayamıyoruz. Bunların
Amerikan standardında olan karşılıklarını kullanmalısınız:
C:Do D:Re E:Mi G: Sol A:La B: Si
F: Fa
Notaları tanımlarken her nota için üç karakter kullanacağız. İlk karakter C-B arası notayı belirten bir harf olacak. İkincisi ise, o notanın hangi oktavda olduğunu belirtecek. 0 ile en kalın, 7 ile de en ince oktav elde edilir. Ve son olarak da o notanın çalınma süresini belirlemeliyiz. Bunu, klavyenin sağ tarafındaki fonksiyon tuşları ile yapıyoruz. Her bir tuş başka bir uzunluğu belirtiyor. Şöyle ki:
F1: 1/16'lık nota F3: 1/8'lik nota F5: 1/4'lük nota F7: 1/2'lik nota F2: 1'lik nota F6: 4'lük nota F8: 8'lik nota
Örneğin C6(F1) ile, bilgisayar altıncı oktavdan ince bir 1/16'lık DO notası oluşturacaktır.
Bütün notaları böylece belirledikten sonra, tanımın en sonunda (CLR)G koymalısınız. Böylece parça bitince ses duracaktır. Eğer koymazsanız, en son nota devamlı çalacaktır. Artık gerekli hazırlıkları yaptığımıza göre parçamızı çalabiliriz. PLAY
1 komutunu verdiğimiz anda parçamız çalmaya başlayacaktır. Bu sırada da program, parçanın bitmesini bekler. Eğer PLAY 2 kullanırsanız, parça arka planda çalmaya devam ederken, programınız da işlemlerine devam edecektir. Bu sırada PLAY 0 vererek o anda çalınan parçayı durdurabilirsiniz. Ancak, PLAY komutunu sadece program içinde kullanabilirsiniz, program dışında bir işe yaramaz. Müzik ile ilgili komutların sonuncusu SOUND. A=SOUND yapıldığında, A'nın içeriği 54272 olur. Bu,
SID yazmaçlarının başlangıç adresidir. Tıpkı GRAPHICS'de olduğu gibi POKE SOUND 4, nnnn yaparak, bu yazmaçlara sayılar yerleştirebilirsiniz.
Sprite Komutları
Önce işe sprite tanımlamasıyla başlayalım. Bu iş için DESIGN komutunu kullanacağız. DESIGN kod, adres olarak kullanılan bu komut, verilen 'kod'a göre değişik işlemler yapar. Eğer sıfırsa, normal (24x21) boyutlarda tek renkli bir sprite tanımlaması yapacağız demektir. Eğer 1 ise, bu sefer 12x21 boyutlarında ve çok renkli sprite tanımlaması geliyor anlamını verir. 'Adres' ile bu tanımın nereye yerleşeceği belirleniyor. Bu adresi, (blok * 64) formülü ile bulabilirsiniz. Geçerli olan blok sayıları 13-15, 32-63 ve 128-255 arasıdır. Bunun dışındaki bloklar Simons' Basic'e zarar verebilir. DESIGN komutunun hemen altındaki satırdan başlayarak 21 satırlık tanımlama gelir. Bunun nasıl olduğunu en iyi örnek programda görebilirsiniz. Tek renkli sprite için genişlik 24 nokta, çok renkli içinse 12 nokta olacaktır. Tanımlama sırasında kullanacağınız karakterler '.', 'B', 'C' ve 'D' olacaktır. Anlamları da şöyle olacaktır:
.: Boşluk B: (Normalde) Çizgi rengi (Çok renkli) 1 numaralı renk C: (Çok renkli) 2 numaralı renk D: (Çok renkli) 3 numaralı renk
Her tanımlama satırının başındaki özel işarete dikkat edin! Ayrıca, C ve D renklerini sadece çok renkli sprite'ler için kullanabilirsiniz. Tanımlama bitti, sıra geldi özelliklerini belirtip, renklerini verip hareket ettirmeye. Önce MOB SET no, blokno, renk, öncelik, mod komutunu görelim. no ile belirtilen sprite'ın (0-7)
hangi blokta olduğu (13-15, 32-63, 128-255), rengi (tanımlama sırasında C ile belirlenen), ekrandaki karakterlere göre önceliği (0: sprite önde, 1: sprite arkada) ve çok renkli olup olmadığı (0: normal, 1: çok renkli) burada belirlenir. MOB ve SET arasında boşluk var!! Sprite'ın diğer iki rengi de, CMOB b, d ile belirlenir. Her parametre adıyla aynı harfle tanımlanmış olan noktaların rengini verir. Sıra geldi onları hareket ettirmeye. Bunun için iki komutumuz var. Birincisi MMOB no, x1, y1, x2, y2, büyüklük, hız biçiminde kullanılıyor. Belirtilen no'ya sahip sprite, (x1, y1) koordinatlarından (x2, y2) koordinatlarına doğru verilen hızla ilerler. 'hız' için verilecek değerler 0-255 arasında olmalı (0: hızlı, 255: yavaş). 'büyüklük' ile de, Commodore 64'ün sprite'ı değişik yönlerde büyütebilme özelliğinden faydalanırsınız (0: normal, 1: yatay büyüme, 2: dikey büyüme, 3: hem yatay hem dikey büyüme). Diğer komut, RLOCMOB no, x, y, büyüklük, hız şeklindedir. Belirtilen sprite'ı o anda bulunduğu noktadan belirtilen koordinatlara doğru hareket ettirir. Diğer parametreler deminki gibidir. Peki, gösterdiğimiz bir sprite'ı kapatmak için ne yapacağız? MOB OFF no ile her sprite'ı görünmez yapabilirsiniz. Bir daha belirtelim, no 0-7 arasında olmalıdır. Ayrıca MOB ile OFF arasında boşluk var. Şimdi gelelim başka bir konuya... Sprite'ların birbirleriyle ve ekran karakterleriyle çarpışmasının anlaşılması sorunu. Basic için bu çok kolay. Önce sprite-sprite çarpışmasını görelim. Aşağıdaki komuta bir bakın:
DETECT 0: IF.CHECK (nol,no2) - 0
THEN çarpışma olmuş...
Yukarıdaki satırın sonunda 'no1' ve
'no2' numaralı sprite'lar arasında çarpışma olup olmadığı belirlenmekte.
Şimdi de aşağıdaki satıra bir göz atın:
DETECT 1: IF CHECK(no) = 0 THEN çarpışma olmuş...
Bu sefer de, 'no' numaralı sprite'ın ekranla bir çarpışma geçirip geçirmediği anlaşılmakta. Eğer yukarıdaki komutlarda çarpışma bulunamamışsa, cevap 0 değil 1 olacaktır. Sprite komutları bu kadar...
a
Karakter Seti Değiştirme
Commodore 64'ün klavyesindeki harf, rakam ve grafik işaretlerini değiştirebilirsiniz. Bu iş için önce MEM komutunu vermeniz gerekecek. Böylece bilgisayar çeşitli hafıza bölümlerini ayarlayacaktır. Hemen arkasından DESIGN komutu gelir. Bu sefer 'kod' yerine 2 veya 3 kullanacağız. 2 ile normal karakterler, 3 ile de çok renkli karakterler tanımlanmaya başlanacağı haber verilir. Ayrıca hesaplaması da değişecek. Artık
($E000 + ekran kodu * 8) formülü ile bulunacaktır. Ekran kodları 0-255 arasıdır. Ancak bunlar sadece büyük harflere ve negatif büyük harflere karşılık gelirler. Bu sayılara 256 ekleyerek küçük harflerin kodlarını da elde edebilirsiniz. Dolayısıyla 'ekran kodu' yerine 0-511 arası sayılar konacaktır. Hemen arkasından, 8 satırlık bir tanımlama gelecek. Burası tıpkı sprite tanımlaması gibidir. Sadece genişlik normal karakter için 8, çok renkliler içinse 4 noktadır. Tekrar eski karakter setine dönmek için NRM komutunu kullanmanız lazım.
Yapısal Kontrol
Komutları
Programın akışını etkileyen komutlara yapısal kontrol komutları denir. Örneğin, GOTO, GOSUB, IF..THEN gibi. Modern programlama dillerinde ve yeni Basic türlerinde daha başka kontrol komutları standart hale gelmiştir. Bunların çoğunluğu Simons' Basic'te de vardır. Bunlardan en basiti, CGOTO komutu. Bilindiği gibi, normal GOTO komutunun arkasından sadece satır numarası gelebilir. CGOTO komutunun arkasına ise herhangi bir işlem koyabilirsiniz. Örneğin A = 50: CGOTO 2*A işlemi GOTO 100 ile eşdeğerdir. Bir başka ilerletme de IF..THEN komutuna getirilmiş. Öncelikle :ELSE: komutu var. Önündeki ve arkasındaki iki noktalara dikkat!! Bu komutla IF ve THEN arasındaki şart doğru değilse ne yapılması gerektiği belirtilebilmekte. RCOMP ile de, bir önceki IF..THEN komutunun sonucu kullanılarak işlemler birden fazla satıra yayılabilecektir. Çok genel bir örnek verelim:
10 IF art THEN xxxxxx
20 RCOMP:
30 RCOMP: xxxx:ELSE:yyy
40 RCOMP: :ELSE:YYYYYYYYy
50 RCOMP:
Yukarıdaki kullanımda, eğer şart doğru ise x'lerle belirtilen bölgedeki işlemler yapılacaktır. Şartın doğru çıkmaması durumunda ise y ile gösterilen komutlar işleme girecektir. Hepiniz FOR..TO..STEP..NEXT komutunu bilirsiniz. Buna benzer iki komut daha gelmiştir. Birincisi REPEAT...UNTIL komutu. Aşağıya bir bakın:
10 REPEAT
20 XXXXANAX
A0 XXXXXAXA
50 UNTİL şart
EEE
50 numaralı satırdaki şart doğru oluncaya kadar 20-40 arası satırlar tekrarlanacaktır. Birkaç REPEAT...UNTIL döngüsü iç içe konabilir. Buna benzer bir de, LOOP...EXIT IF...END LOOP komutu vardır. Örneğin:
20
3Ü
40 EXİT IF şart
SÜ XNXANANAXA
BÜ XANAXANAN
70 END LOOP
LOOP ile END LOOP arasındaki satırlar devamlı tekrar edilir. Çıkışı sağlayacak tek olay, EXIT IF'ın arkasındaki şartın doğru hale gelmesidir. Bir LOOP..END LOOP arasında boşluk bırakmanız gerekir.
Basic için tamamen yeni komutlar, alt program tanımlamaya ve bunları işlemleriyle çağırmaya olanak tanıyan PROC...ENDPROC ve buna ilişkin diğer komutlardır. Örneğin:
1000 PROC altprogram adı
1100 XXXXAXANA
1200
1300
1400
1500 ENDPROC
EA PROGRAM ADI : S.ELSE
#0005 FOR Izi TO 5
80018 INPUT "3 SAYI VERİN
IF Asi THEN PRİNT Az2 THE
N PRINT VE A<)e"
20030 RCOMP " AMA Az"A"SLEFT>
» Cz"0
NEXT
EA PROGRAM ADI : S.REPEAT
INPUT "KAC TANE SAYI":5SS
REPEAT
ağo20 INPUT "SAYI";S
60030
:
00650 : PRİNT I
: Is1*i
00080 : UNTIL 1:5
K-K*İ
90093 UNTIL K-5S
PROGRAM ADI : S.LOCAL
PRİNT A,C,AS,B$
GÜSÜB
PRİNT A,C,AS,B$
A8050 END
LOCAL
DOLİO
PRINT A,C,AS,B$
20138 GLOBAL
RETURN
Bu
Böylece bir altprogram tanımlanmış altprogramı CALL veya EXEC komutlarını kullanacaksınız. CALL isim ile, belirtiçağırırken bilgisayar ENDPROC'a rastlarsa ortaya hata çıkacaktır. Bu konuda dikkatli olmanız gerekir. Altprogram isimleri birden fazla kelimeden oluşalen altprograma GOTO ile atlanmış bilir, ancak o satırda başka bir BAolur. EXEC isim ile de, o altprograma GOSUB yapılmış olur. Bu durumda ENDPROC, RETURN gibi davranacaktır ve program altprogramı çagıran komuttan sonra devam edecektir. Ancak CALL ile çağırdıktan sonra
SIC komutu bulunamaz.
Bu arada bir konu daha var. BASIC'te bir değişkenin değeri programın neresinde değiştirilirse değiştirilsin, o değişken tüm program için değişmiş olacaktır. Ancak, bir alt programda kullanılan değişkende yapılacak değişikliklerin ana program kısmını etkilemesi istenmeyebilir. Bu durum için de kullanılacak iki komut var. Alt programın hemen ilk satırında LOCAL a,b,c,... ile çeşitli değişkenlerin isimlerini o alt program için ayırabilirsiniz. Dikkat edin, LOCAL komutunun olduğu satırda başka bir BASIC komutu olmasın. Artık o değişkenleri gönül rahatlığı ile kullanabilirsiniz. Ana programa geri dönmeden önce GLOBAL komutunu verdiğinizde, o değişkenler alt programa gelmeden önce sahip oldukları değerleri geri alacaklardır ve böylece de ana programın, o değişkenlerde olan değişikliklerden haberi olmayacak. Bu aylık da bu kadar, gelecek aya iyi günler..
EA PROGRAM ADI : S.LOOP
00011
20035
000399
99018
20240
00100
680118
001530
| 00148
INPUT "KAC TANE SAYI";SS
LOOP
INPUT
Isi
LÜÜP
: PRİNT I
: EKİT IF 175
END
EKİT IF
END LO0OP
“"SAYI";S
HER PROGRAM ADI : S.MUZİK
VOL 10
WAVE BE 1 e a
ENVELOPE 1,8,8,8,8
ABE
MUSİC
PLAY 2
FLASH A,10:BFLASH
FOR Izi TO 275:CENTRE MUZİK *
*xx MUZİK kkkk MUZİK :N
EXT
&
PROGRAM ADI
20026
BAde7
208030
00033
90835
20036
2,$E00041124x8
C..BBBB..
O la
DO
ira)
.*BB....
DESİGN
OBB....-BB
0B..BB..B
CB..BBBBB
CB..BBBBB
OBB....BB
OBBB..BBB
CBB..BEBBB
PRINT
ÜFF>"
EREN PROGRAM ADI : S.PROC
204150
20318
A0338
90418
00420
00438
EXEC EKRAN SIL
EXEC CERCEVE
FOR Gzi TO Bü
EXKEC YAZI YAZ
FOR TO 200:NEXT
EKEC YAZI SIL
NEKT
EXEC EKRAN SIL
END
PROC CERCEVE
PRINT "<HOME><CTRL-E6>";
FOR Izi TO
FOR TO
NEKT
FOR Izi TÜ 48:PRINT
END PROC
PROC YAZI YAZ
PRİNT
PRİNT
|
END PROC
PROC YAZI SIL
PRİNT "<HOME><DONN><CTRL-E>"?
FOR Izi TO "F"DUP<"
END PROC
PROC EKRAN SIL
PRINT "<HOME>";
FOR Izi TO 24:PRIİNT
R Tsi TO
END PROC
"
",40)7:F0
PROGRAM ADI
göğez
20023
BdA25
28023
20031
20233
090055
00036
60038
08039
280062
00063
0908078
S.SPRITES
PRİNT "<CLR>"
MOB ÜFF2
DESİĞN 13. BLOK
CBBBBBBBEBBBEBBBBBBBBBBBB
EBRB
GEB.EB BB.BB
sss RR BB..BB
CBB BB...BB
CBB .BB .BB
BBb...... BB.....BB
©OBB.. BB
OBB....... BB
BBBE. BB
OBB. BB
OBB. n114 BB
BB..BB....... BB
OBB. BB
OBB..... BB
BB....BB
.BB...BB
BB..BB
BB.BB
OBEBB. * «.BBBB
DESİĞN 14. BLÜKTA MULTI
COLÜR
OBCBCBCBCBCBC
&DC...CB...DB
©B.D..ÜB..D.C
©C..D.CB.D..B
OB...DCBD, ..0C
€B..D.CB.D..C
©0.D..CB..D.B
OBD. . «CB. ..DC
00.D..CB..D.B
©B..D.CB.D..C
CC...DCBD...B
OCCCCCDDOBBBBB
©OB...DCBD...C
EBCBCBCBCBCBC
CMOB 8,3:M0B SET SET
MMOB 2,1
FOR TÜ 14:CMOB T
O :NEKT :CMÜB 8,393
RLOCMOB
RLOCMOB
RLOCMOB
MOB OFF2
CP/M İşletim S
Seyfettin ÇANKAYA
istemi
Mikrobilgisayarların ve CP/M'nin Doğuşu
Bilgisayar tarihinin dönüm noktalarından biri olan mikroişlemcilerin üretilmeye başlanması ile birlikte amatörler, bu yeni ve büyük potansiyele sahip parçayı çeşitli işlerde kullanmaya başladılar. Bu aşamada pek çok profesyonel, mikroişlemcilerin alışılagelmiş bilgisayar işlemleri için yetersiz kalacağını düşünerek, bu konuda oldukça karamsar davrandı. Fakat makineler oldukça yüksek fiyatlarına rağmen amatörler tarafından alındı ve denendi. Bir fikir vermek için 8080 mikroişlemcisinin 1975'teki fiyatının 360 ABD doları, 256 Byte'lık bir belleğin 1280 ABD doları olduğunu hatırlatalım (Bkz. Byte, Sayı 9, 1985). Fakat bilgili mühendisler ve hevesli amatörler, çok sevdikleri bu yeni oyuncaklarına kontrol dışında yeni kullanım alanları bulmakta gecikmediler. 1975'te Popular Electronics dergisi Altair 8800 ismini verdikleri ve minicomputer olarak tanımladıkları 8080 kullanan basit bir mikrobilgisayarın yapılışını tefrika halinde yayınlamaya başladı. Kit halinde 395 dolara satılan bu bilgisayar, anahtarlar ve ışıklarla programlanıyordu ve 256 byte hafızası vardı. 8080'in o zamanki fiyatı düşünülürse bu bilgisayarın ne kadar ucuz olduğu anlaşılabiliyor. MITS tarafından tasarlanan ve satılan bu kit, şirketin kurucusu Ed Roberts tarafından kendi elektronik deneylerini gerçekleştirmek üzere düşünülmüştü. Bu basit makine bir çığır açtı. Artık, programcılar bir mikroişlemci için program yazmaya hazırdılar. Altair'in başarısı onun için yapılmış pek çok program ve çevre birimlerinin ortaya çıkmasını sağladı. Bu çevre birimlerinden biri de 2500 dolarlık bir disket sürücüsüydü. Disket sürücüsünün varlığı bu bilgisayara yeni bir gözle bakılmasını sağladı. Artık oldukça ciddi programlar da yazılabiliyordu.
EE
|
Bu programlardan biri de Deniz Kuvvetleri'nin lisansüstü okulunda hoca olan Gary Kildall tarafından yazılan ve 70 dolara satılan CP/M işletim sistemiydi. O zamana kadar bu denli kısıtlı bir makine için, işletim sistemi yazılmasının zor ve saçma olacağı düşünülüyordu. Ancak Gary, bu işi kendi garajında gerçekleştirerek hem bu tabuyu yıktı hem de oldukça iyi para kazandı. Şimdi ise Gary, Digital Research Inc. sahiplerinden biridir. Asıl önemli olan nokta, amatör ruhla çalışanların, mikrobilgisayar çağına ne kadar büyük bir katkıda bulunduğu olmuştur. CP/M (Control Program for Microcomp), 8080 mikroişlemcisi için pek çok program yazılmasını teşvik etti. Bunun bir sonucu olarak Intel (8080'in yapımcısı), şimdiki mikroişlemcilerinde bile 8080'in kütük setini muhafaza etmektedir.
Z-80'in Doğuşu
Bugün C-128'in içinde de CP/M sisteminin mikroişlemcisi olarak kullanılan ve 8080'in daha gelişmiş özelliklerine sahip Z-80, 1976 yılının başında Intel'den ayrılan tümdevre tasarımcısı Federico Faggin ve Masutoshi Shima tarafından kurulan Zilog Inc. tarafından tasarlandı. Süper bir Z-80 yaratmak amacıyla hareket eden tasarımcılar 1976'da Z-80'i tanıttılar. Tek besleme kaynağı olan Z-80, 8080'in bütün komutlarını kullandığı gibi, çok hızlı çalışan kendi komutlarını da içermekteydi. Toplam 176 komutu olan Z-80, pek çok yeniliği de beraberinde getirdi. Daha büyük bellek yaygınlığı sağlayan dinamik RAM'leri, problemsiz bir şekilde kullanılabiliyordu. 8080'in dışarıdan bağlantısı gereken pek çok yan birimi, tek tümdevre üstünde birleştirilmişti. Bütün bu özelliklerine hızı da eklenince, uzun yıllar pek çok tasarımcının tercih ettiği bir mikroişlemci olarak
Tüm bayilerde