HARDWARE DERSANESİ

Bu ayki devremiz ile kendinizi bootblock virüslerinin etkilerinden koruyabilirsiniz. Lütfen devrenin basitliğine bakıp imkansız demeyiniz. Sizin de göstereceğiniz gayret ile boot virüslerini, kendilerini diskete yazmadan önce tanıyabilir ve elinizdeki virüs killer programlarıyla onları temizleyebilirsiniz. Devremizin çalışma prensibi basit bir mantığa dayanıyor. Varsayalım hain bir boot virüsü, dış mihraklı bir disketten sizin bilgisayarınızın hafızasına girdi. Şu anda hafızada sinsi sinsi beklemekte ve kendine kurban aramaktadır. İşte bu sırada siz onun varlığından habersiz olarak, en güzel oyun disketinizi drive'a yerleştiriyorsunuz. Inınının!!! Artık o disketin virüsün elinden kurtulması mucize demektir. Virüsümüz sinsice bootblock'a yaklaşıyor ve tam kendini yazacakken, O da nel!!! her yerde alarmlar çalmaya başlıyor. Bu onun için bir son demek. Artık yakayı ele verdi. Şimdi yapacağı tek birşey kalıyor, genetik kodunun doğrultusunda, son bir hamleyle kendini boot'a yazması gerekmektedir. İşte bu sırada siz devreye giriyor ve bilgisayarı resetleyip, kaynağı kapatıyor ve bir teröristi daha Cehenneme yolluyorsunuz. Devremizi film gibi değil de, elektronik olarak anlatmaya çalışalım. Erken Uyarı Sistemimiz, external drive portundan alacağımız DKWE, SIDEB ve TK0 bilgilerinin kontrolüne dayanmaktadır. Bir boot

Erkek 23 pin DSUB

VİRUS ERKEN UYARI SİSTEMİ

DERSHANESİ

İşte yine güzel bir şafak, hepsi aynı model olan Karadeniz yapımı beton yığınlarının ardından doğuyor. Bu, belki dünyadaki en güzel görüntü olmayabilir. Ama anlayabilen ve yaşamı her nefes alışında hissedebilen insanlar için dünyadaki milyonlarca güzellikten birisidir. Lisedeyken tanışmış olduğum birinin çok güzel bir felsefesi vardı. O, Cennet'in ve Cehennem'in insanın hayatında var olduğunu söylerdi. Ona göre, boğazı gören bir ağaçaltında, sevgilinle kol kola oturup denizi seyretmek, bir annenin doğumdan sonra çocuğunu kucağına aldığındaki gözyaşları, bir babanın askerden dönen oğluna sarılması, yazın akşam güneşinde, upuzun Patara kumsallarında, dalgalarla yarışırcasına koşmak, işten yorgun argın geldikten sonra, demlenmiş, sıcacık, mis kokulu çaydan bir yudum almak... İşte bu anlarda geçen saniyeler, saliseler onun için gerçek Cennet'e eşdeğerdi. Ama işin bir de Cehennem yönü vardı. Bu kısmını hepimiz kendi anılarımızdan biliriz. Örneğin insanın bir yakınını kaybetmesi veya kaybedeceğini bilmesi. Cehennem her zaman olduğu gibi bahsedilmesi hoş olmayan (normal olarak..) bir konu. Bu sebepten lafı fazla uzatmak istemiyorum. Sonuçta, ona göre, Cennet anlarından hayatın zevkini, Cehennem anlarından ise ders ve olgunluğu alırız. Güzel bir özsözümüz vardır. "Tanrı sevindireceği kulunun, önce eşeğini kaybettirir, sonra da buldururmuş". Sanıyorum şu anda Tanrı bana kaybettiğim bir şeyi buldurdu. Beş saattir Cehennem'indeydim (Dergi argosunda: Bir yazıyı zamanında bitirmek). Ama şu anda şafağın söküşünü yani Cennet'i yaşıyorum. Siz hiç, son iki veya üç ay içinde (ya da daha fazla) şafağın doğuşunu seyrettiniz mi? Evet, tabii ki hala Doğudan doğuyor. Ancak mühim olan hissetmek. Lütfen bir sabah erkenden kalkın ve seyredin. Seyredin ki, doğanın beton yapılara karşı hala direndiğini görüp, mutlu olun. Bu onun sağlam iradesinin bir kanıtı olmalı. İrade ve sabır, birçok alanda geçerlidir. Ama benim ve birçok bilgisayar kullanıcısının artık sabrı kalmadı. Bundan böyle Cehennem hayatı yaşamak istemiyoruz. Bilgisayarlarımıza ve bilgi dosyalarımıza yapılan hain saldırılara bir son verilmesi gerekmiyor mu? Eğer yetkililer buna el koymazlarsa biz, Amiga Dünyası olarak bu konuyu ele alacağız. Yeter artık!! İki virüs imha edilen disket, işin yoksa hepsini baştan yaz. Bunların hepsi, derginin sonundaki o VİRÜS ve onun mahdumlarının başı altından çıkıyor. Ama bundan böyle hiçbir boot virüsü Hardware Dersanesi Müridlerine bulaşamayacak.. Kahrolsun virüs ve onun cemaati!... Sloganımızı attıktan sonra, bu ayki devremize geçiyor ve virüsler için erken uyarı sistemimizi kuruyoruz.

Uyarı Sistemi)

virüsü kendini yazacağı zaman drive'ı 0 nolu Track'e getirir. Burada, 16 nolu bacaktan aldığımız TKO sinyali aktif olur. İkinci olarak, Boot sektörlerinin $0000 ve $0400 arasına ayarlanması gerekir. Bu sektörler disketin alt yüzünde (LOWER SIDE) olduğundan, SIDEB datamız da aktif olur ve ilk piezoelektrik vızıldaktan ilk sinyalimizi alırız. Şimdi virüs, dataları ayarlamış olduğundan yazma işlemine geçecektir. Bu işlem sırasında DKWE aktif olur. Burada ikinci alarm sesini duyarız ve virüs kendini diskete yazar. Sonuç olarak bizim, ilk alarm sesinden sonra bilgisayarı resetlememiz gerekir, yoksa virüs hain planlarını yineleyerek yaşamına ve zararlarına devam eder. Devremiz için gerekli malzeme, her elektronik dükkanında bulabileceğiniz türden: MALZEME LİSTESİ 2 adet 1N4148 Diyot 1 adet Direnç 1 adet BC307 Transistör 1 adet Piezo Vızıldak 1 adet 23 pin DSUB erkek konnektör Geçenlerde, oyun yazan bir arkadaşım, Amiga'nın disk işletim sistemi üzerine programlarını denerken şans eseri bir imha programı yakaladı. Bu program, bir virüsün genetik kodunu oluşturacak kadar kısa ve şu ana kadar yapılmış bütün virüs programlarından daha fazla tahrip gücüne sahip. Bu kodu, bir virüs programı olarak programlamam için bana verebileceğini söyledi. Aslında ben de bunu alıp bir virüs programı yapmayı çok isterdim. Ancak işin sonuçlarını düşününce, kendi kendime kızdım. Bu programın yaptığı iş, disketiniz Write Protect'li olsa dahi onu imha edebilmesi ve disketi bir daha yazılamaz ve okunamaz hale getirmesidir. Tahmin ediyorum ilerde bu tip virüsler mutlaka keşfedilecek ve ülkemize gelecektir. Yapabileceğimiz tek şey, bu tip bir virüsün yazılmaması için dua etmek olabilir. Arkadaşıma bu kodu kimseye vermediği için burada bir kere daha teşekkür ediyorum. Virüs yazmak o kadar zor bir iş değil. Mühim olan bunları yazmak değil, ne yaptığının farkında olmaktır. Programcının kendini kanıtlamak için ürettiği bu mikroplar, belki onarılamayacak birçok probleme yol açacaktır. Lütfen bunları düşünün ve zararlı programlar yazmayın.

CHIP REGISTER'LARI

Geçen ay eksik kalan küçücük bir bölümümüz var. Anlattıklarımız haricinde COPPER üzerinden de chip registerlara ulaşılır. Bu işlemi DMA halleder. Toplam olarak altı DMA kanalı vardır. Bunlar; Bitplane DMA: Bu DMA kanalı ekran datasını devamlı olarak hafızadan okur ve gerekli data register'larına yazar. Sprite DMA: Sprite datayı RAM'den sprite register'larına transfer eder. Disk DMA: Disk'ten RAM'a veya RAM'dan Disk'e data transferi yapar. Audio DMA: RAM'den dijital ton datayı okur ve bunu uygun audio register'lara yazar. Copper DMA: Coprocessor (COPPER) komutları bu kanal üzerinden alır. Blitter DMA: Blitter'e veya blitter'den RAM'a datayı bu DMA kanalı verir. Bu DMA kanalları DMACON, DMA Kontrol Register'ı vasıtasıyla enable veya disable yapılır.

adres $096(yaz) ve $002(oku)

BİT ADI İŞLEVİ (SET iken) 15 SET/CLR SET/CLEAR BİTİ 14 BBUSY BLİTTER MEŞGUL (SADECE OKU) 13 BZERO BLİTTER İŞLEVLERİNİN SONUCU 0 (SADECE OKU) 12 KULLANILMIYOR 11 KULLANILMIYOR 10 BLTPRI BLİTTER DMA, 68000'e GÖRE ÖNCELİKLİ 9 DMAEN BÜTÜN DMA'LARI ENABLE ET (BİT 0-8) 8 BPLEN BİTPLANE DMA ENABLE 7 COPEN COPPER DMA ENABLE 6 BLTEN BLİTTER DMA ENABLE 5 SPREN SPRİTE DMA ENABLE 4 DSKEN DİSK DMA ENABLE 3 AUD3EN 3 NO'LU SES KANALI İÇİN AUDİO DMA ENABLE 2 AUD2EN 2 NO'LU SES KANALI İÇİN AUDİO DMA ENABLE 1 AUD1EN 1 NO'LU SES KANALI İÇİN AUDİO DMA ENABLE 0 AUD0EN 0 NO'LU SES KANALI İÇİN AUDİO DMA ENABLE

DMA kontrol register'ı, normal bir register gibi yazılmaz. Yazılırken seçilen bitler set veya clear olur. Bu, yazılacak data içindeki 15 nolu bitin durumuna göre belirlenir. Eğer bu bit 1 ise, yazılacak datadaki SET bitler DMACON register'ında da SET olur. Eğer 15 nolu bit 0 ise yazılacak datadaki SET bitler DMACON register'ında CLEAR olur. Yazılacak datadaki CLEAR bitlerin bir işlevi yoktur. DMAEN olarak dizayn edilmiş olan 9 nolu bit, bir cins ana anahtardır. Eğer bu 0 ise, bütün DMA kanalları kapanır (0'dan 8'e). Eğer bu bit 1 ise 0'dan 8'e tüm DMA kanalları aktif olur. Herhangi bir DMA kanalının aktif olması durumunda bu bitin de aktif olması gerekmektedir. Bir örnek verelim: Varsayalım DMACON register'ımızda sadece Bitplane DMA aktif geri kalanlar CLEAR. DMACON'un değeri $0100. Biz disk DMA'yı aktif yapmak istiyoruz. Bunun için DSKEN ve DMAEN SET ve BPLEN CLEAR olacak.

MOVE.W #$0100,$DFFO96 ;BPLEN biti CLEAR
MOVE.W #$8210,$DFFO96 ;DSKEN ve DMAEN SET olur.(SET/CLR<-1)

DMACON register'ı şimdi $0210 değerine sahiptir. 13 ve 14 nolu bitler sadece okunabilir. Bunlar blitter'in çeşitli bilgilerini içerirler. Bu ilerde blitter bölümünde incelenecek. 10 nolu bit blitter'in 68000'e göre önceliğini belirler. Eğer bit SET ise 68000, blitter chip RAM üzerindeki operasyonlarını bitirinceye kadar, chip RAM'a ulaşım yapamaz. Bit 0 ise, 68000, blitter'den her 14 çift bus cycle'ını alır. Şimdi biraz da Elektron ışınının yatay düşey konumunu ve önemini, Amiga'nın interrupt'larını ve Copper'ı inceleyelim. Ekrandaki elektron ışınının o andaki pozisyonu nasıl okunur? Amiga'da DMA işlevinin zamanlaması, elektron ışınının her ekran satırı başında bulunma pozisyonuyla, senkron olacak şekilde ayarlanmıştır. Bazı zamanlar bu ışının ekran üzerindeki yerini bilmeye ihtiyaç duyarız. Agnus, kendi içinde ekranın o andaki yatay ve düşey bilgilerini içeren iki sayıcı bulundurmaktadır. Bu sayıcılara iki adet register vasıtasıyla ulaşabiliriz.

VHPOS $006 (Read VHPOSR) $02c (write VHPOSW) Bitno: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Fonksiyonu: V7 V6 V5 V4 V3 V2 V1 V0 H8 H7 H6 H5 H4 H3 H2 H1

VPOS $004 (Read VPOSR) $02a (Write VPOSW) Bit no: 15 1413 121110987 6543210 Fonksiyonu:LOF - - - - - 2 v8

H1'den H8'e kadar sıralanmış olan bitler, yatay elektron ışınının o anki yerini içerirler. Aynı zamanda bu bitler Amiga'nın bus'ını tayin ederler. Vertikal pozisyon için geçerli olan satır, iki register'a bölünmüştür. Bunlardan V0-V7 bitleri VHPOS register'ında, V8 biti ise VPOS register'ında bulunmaktadır. LOF biti (LOng Frame) o sırada ekranda bulunan resmin, uzun veya kısa frame'li olup olmadığını belirtir. Bu bit sadece Interlace mod için lazımdır. Normal konumda değeri 1'dir. Elektron ışınının ekran üzerindeki yeri istendiği takdirde, kullanıcı tarafından da yazılabilir. Ancak bu çok nadir kullanılan bir yöntemdir. POS pozisyon register'ları, ayrıca başka bir fonksiyon olarak Lightpen'le çalışılmasına da olanak sağlar. Agnus'un lightpen girişi aktif olduğunda ve lightpen ekran üzerinde bir noktaya pozisyonlandığında, Agnus'a lightpen'le ilgili bilgi gelir. Gelen bilgi bu register'lara iletilir ve işlem tekrarlanır. Interruptlar... Genelde giriş ve çıkışa sahip tüm Custom chipler ve iki adet CIA entegresi interrupt kaynağıdır. Paula içindeki özel bir devre, bunlardan gelen kaynak interrupt sinyallerini toplar, değerlendirir ve uygun olacak şekilde 68000 için interrupt sinyalleri üretir. İşlemcinin kullanılan otovektör dereceleri LEVEL 0-6'dır. LEVEL 7, Non Maskable Interrupt kullanılmaz. Interrupt'la ilgili istek ve maskeleme işlemlerini iki register üstlenmiştir. Bunlar Interrupt Request Register (INTREQ) ve Interrupt Mask Register'larıdır (INTENA, INTerrupt ENAble). Bu iki register'ın da bit dizilişleri ve anlamları birbirinin aynıdır.

$01E HNTENA $09A (WRITE) $01C(READ) İT İSİ İL FONKSİYONU WRİTE/READ (DMACON REGİSTER'INA BAKINIZ) TÜM İNTERRUPTLARI ENABLE ET CİA-B VEYA EXPANSION PORTTAN İNTERRUPT

12 DSKSYN DİSK SENKRON DEĞERİ BELİRLENMESİ 11 RBF SERİAL RECEİVE BUFFER'İ DOLU 10 AUD3 SES ÇIKIŞ BİLGİ KANALI 3 9 AUD2 SES ÇIKIŞ BİLGİ KANALI 2 8 AUD1 SES ÇIKIŞ BİLGİ KANALI 1 7 AUD0 SES ÇIKIŞ BİLGİ KANALI 0 6 BLIT BLİTTER HAZIR 5 VERTB VERTİKAL BLANKING GAP BAŞINA ULAŞILDI 4 COPER COPPER İNTERRUPT İÇİN REZERVEDİR 3 PORTS CIA-A VEYA EXPANSION PORTTAN İNTERRUPT 2 SOFT SOFTWARE İNTERRUPTLARI İÇİN REZERVEDİR 1 DSKSYNC TRANSFERİ TAMAM 0 TBE SERİAL TRANSMİT BUFFER'İ DOLU

İlk 0-13 bitleri çeşitli interrupt bilgilerini işlemek için kullanılırlar. CIA interruptları, tek interrupt olacak şekilde birleştirilmiştir. INTREQ register'ı içindeki bitler, hangi interrupt isteğinin oluştuğunu içerirler. Eğer herhangi bir interrupt oluşursa, bununla ilgili bit high olur. Bir işlemci interrupt'ı yaratmak için, DMAENA ve INTENA register'ı içindeki ilgili bit SET olmalıdır. INTEN biti, ana interrupt bitidir. Bunun sayesinde 14 interrupt kaynağı da on veya off yapılabilir. COPPER Coprocessor... Copper, basit bir yardımcı işlemcidir. Bir task olarak çalışır ve bazı değerleri, bazı custom register'lara yazar. Daha başka bir işlev olarak belirli ekran pozisyonlarındaki bazı register'ların içeriklerini değiştirir. Ekranı çeşitli parçalara bölebilir. Bu bölgeleri değişik renklerde ve değişik çözünürlüklerde gösterebilir. Bu özellik, birçok ekranın aynı anda açılmasını sağlayabilir. Copper, bir coprocessor olarak dizayn edilmiştir. Hafızadaki bir program vasıtasıyla onu programlayabilir ve bu programı komut-komut işletebilirsiniz. Copper üç ayrı komut içermektedir. Bunlar; WAIT, MOVE ve SKIP'tir. Bu komutlar bundan iki sayı önce dergimizde açıklandığı için bunlar üzerinde durmayacağım. CopperList, tek başına copper'ı işletemez; bunun için Copper register'larını incelememiz lazımdır.

COP1LC $080 BU İKİ REGİSTER, İLK COPPER COP1LCH $080 LIST'İN ADRESİNİ İÇERİR. COP1LCL $082 BU İKİ REGİSTER, İKİNCİ COP- COP2LCH $084 PERLIST'İN ADRESİNİ İÇERİR. COP2LCL $086 COPJMP1 $088 COPPER PROGRAM SAYACINA, İLK COPPERLIST'in ADRESİNİ YÜKLER. COPJMP2 $08A COPPER PROGRAM SAYACINA, İKİNCİ COPPERLIST'in ADRESİNİ YÜKLER. COPCON $02E BU REGİSTER SADECE BİR BİT İÇERİR (BİT 0).

EĞER BU BİT SET OLURSA COP-PER $040 İLE $07E ARASINDAKİ BLİTTER REGİSTER'LARINA DA ULAŞABİLİR.

İki COPxLC register'ı CopperList'in adresini içerirler. Bu copperlist'in işleme başlayabilmesi için, ilgili COPJMPx register'ına herhangi bir değer yazılması yeterlidir. COPJMPx bir strop adresidir ve buraya herhangi bir değer yazılmak istenmesi copper'ı uyarır. Bu uyarı sonucu, copper program sayaçları sıfırlanır ve ilgili copperlist adresi bu sayaçlara yüklenerek copper işletime geçer. Aşağıda yeni copperlist'in, copper'a yüklenmesi için gerekli programı veriyorum.

LEA a5 ;BASE adresi a5 registerina yükle
'Copper DMA off
MOVE.L  #copperlist.COP1LCH(a5) ; Copperlist adresini belirle
MOVE.W ;bu adresi copper program
; sayacına transfer et
#$8080,DMACON(a5) DMA on

Program, Copper'ın nasıl yükleneceğini gösteren genel bir programdır. Şimdi bir de aşağıda verdiğimiz programı deneyiniz. Bunun konusu, ekrana siyah, kırmızı ve sarı barlar çıkarmasıdır. Copperlist'in kullanımını gösteren basit fakat çok iyi bir Copper programıdır. Basit bir CopperList için örnek

;Custom Chip Registerlar
IİNTENA —$9a ;İnterrupt-Enable-Register (write)
DMACON $96 ;DMA -kontrol Register (write)
COLOR00 —$180  ;Color palet register O
;Copper registerları
COPİLC adres registeri
COP2LC .copperlistin adres registeri
COPJMP1 atla
COPJMP2 ;2.copperliste atla
;CIA-A port register'ı (Mouse tuşu için)
CIAAPRA — $BFE001
;Exec Library Base Ofsetleri
OpenLibrary1 ;Libİsmi, Version/a1,dO
Forbid
Petmit
AllocMem ;Byte uzunluğu,istek/dO,d1
FreeMem ;Hafıza adresi,byte
;Graphics Base
StartList —38
;Diğer Labellar
Ex&cbase s4
Chip —2  ;Chip Ramisteği
Programın Başlangıcı
için hafıza ayrılması isteği
Start:
move.l ExecBase,a6
moveg #CLuzunluğu,d0 ;AllocMem için parametre düzenle
moveg #chip,dl ;chip ram sor
AllocMem(a6)  ;hafıza isteği
move.l d0,CLadr ;Bulunan hafızanın adresi
beg.s Son ;hata-->Son
;CopperListi CLadr (copperlist adres) kopyala.
lea CLbaşla,a0
move.| CLadr,al
moveg #CLsize-1,d0
CLcopy:
move.b (a0)4,(al1)4
dbf d0,CLcopy

;Döngü değeri

;Copperlisti byte byte kopyala

Ana program
İsr forbid(a6)
lea $dff0000,a5
move.w #$03a0,dmacon(a5)
move.l CLadr,coplle(a5)
;Taskları kapat
;Base adresi a5'e koy
;DMA'yı kapa
;Copperlistin adresini
;COPİLC'ye yaz
;Copperlisti program sayacına
;yükle
move.w #$8280,dmacon(a5) ;DMA'yı aç
clr.wcopjmp 1 (a5)

;sol mouse tuşu için bekle

Bekle:
btst #6,ciaapra — ;Bit Test
bne.s — bekle ;ok? devam et
Sonu
;Eski CopperListi yerine koy
move.l #GRisim ;OpenLibrary için parametreleri düzenle
cir.l dO
jsr OpenLibrary(a6) ;Graphics Libraryi aç
move.l
move.l Startlist(a4),coplle(a5) ;StartList adresini yükle
cirw —
move.w #$83e0,dmacon(a5)
jsr permit(a5)
;Bütün DMA kanallarını aç
;Taskları aç
;Copperlist için ayrılmış olan hafızayı serbest bırak
| move.l CLadr,al
moveg #CLuzunluğu,d0
;FreeMem için parametreleri düzenle
| jsr FreeMem(a6) — ;hafızayı serbest bırak
|Son:
d0 ;Hata flag'ini sil
;Programın sonu
|
Değişkenler
|
CLadr: “del O
| ;Sabitler
GRisim: dc.b "graphics.library",0
EVEN ;çift adrese geç. (Bazı assemblerlar ALIGN
;kullanır)
;İşte COPPERLİST
CLbaşla:
de.w color00,$0000  ;Arkaplan rengi siyah
de.w $640f,$fffe ;100.satırda değiştir
de.w color00,$0f00 — ;şimdi arkaplan rangi kırmızı
de.w $be0f,$fffe ;190.satırda değiştir
de.w color00,$0fb0 tık altın rengi
de.w nkansız pozisyon.Copperlistin
;sonu
CLson:
CLuzunluğu - CLson - CLbaşla
Programın sonu

Bu program copperlist'i yerleştiriyor ve sol mouse tuşu basılana kadar bekliyor. İlk etapta copperlist'i yerleştirmek için hafızaya ihtiyacımız var. Bütün Custom register'larda olduğu gibi bu hafıza bölgesinin de Chip RAM'de bulunması gerekiyor. Amiga gibi MultiTask çalışan bilgisayarlarda, istediğiniz bilgiyi hafızanın istediğiniz yerine yazabilirsiniz. Bu AllocMem rutiniyle hallediliyor. Siz bu rutine, kullanmak istediğiniz hafıza miktarını ve bu hafızanın CHIP, FAST ya da (her ikisi de) hafıza bölümünde olması gerektiğini söylüyorsunuz, o da size gerekli hafızanın adresini d0 register'ında size veriyor. Daha sonra Copper list'imizi chip ram'daki bu adrese kopyalıyoruz. Daha sonra Forbid programı vasıtasıyla tüm task'ları kapatıyoruz. Bu sayede programımızın diğer task'lar tarafından rahatsız edilmeden çalışmasını garantiye alıyoruz. Son olarak, copper list parametrelerini girip, copper'ı çalıştırıyoruz. Bundan sonra program sol mouse tuşunun basılıp basılmadığını kontrol ediyor. Eğer tuş basılıysa, işlemci bekleme döngüsünden çıkıyor. Eski görüntüyü tekrar geri almak için, özel bir copperlist'i yüklüyoruz ve başlatıyoruz. Bu execbase içinde bulunan Startup Copperlist'tir ve ekranı yeniden tanımlamaya yarar. Permit fonksiyonuyla task'ları yeniden açıyor ve işgal ettiğimiz hafızayı FreeMem rutiniyle serbest bırakıyoruz. — Program üzerinde renkleri ve WAIT komutlarını kendinize göre değiştirebilir ve yeni komutlar ekleyebilirsiniz.

Tüm mutlulukların sizin olması dileğiyle, en derin saygılarımı sunuyorum.

DİLLER