Bu sayfadaki yazılar
Sayfanın metni
Sayfa 22
ADRES 0003-0004 = 3-4
Atlama vektörü: Floating Point sayıları bilgisayarın anlayacağı integer (ikili) sayılara dönüştürür.
ADRES 0004-0006 = 4-6
Atlama vektörü: Integer sayıları floating-point sayılara dönüştürür.
CHARAC 0007 — 7
İngilizce CHARAC olarak da bilinen bu adres karakter bulma işini yüklenmiştir. Adres tırnak işaretinin ASCII değerini taşır (34).
ENDCHR 0008 — 8
Bu adres bir flag'dır. Yazı karakterlerinin sonundaki tırnak işaretini gösterir.
TRMPOS 0009 — 9
Son TAB'dan itibaren ekran sütunu.
VERCK 000A — 10
Flag: 0 - Load, 1 - Verify. Bu adres son yapılan disk veya teyp işlemine göre bir değer alır.
COUNT 000B — 11
Semboller için Input Buffer'ın pointer'ı.
DIMFLG — 12 Flag: DIM matrisi. Bu adres DIM komutuyla en son açılan matris dizisinin ilk harf veri değerini saklar.
VALTYP 000D — 13
Bu okunan data'nın durumunu gösterir ve eğer data yazı karakterinden oluşuyorsa 255, sayı ise 0 değerini alır.
INTFLG 000E — 14
Sayıların data olarak durumunu gösterir. Integer ise 128 ve floating point ise 0 olur.
GARBFL 000F — 15
Flag: LIST komutu ve garbage collection için data tarama. Normal değeri 4'tür.
SUBFLG 0010 — 16
Flag: Sembol referansı ve kullanıcı çağrısı. Bu iki fonksiyon için adresin değeri, flag sicili olarak katlanarak artar.
INPFLG 0011 — 17
Flag: BASIC veri giriş tipleri. 0-INPUT, 64- GET, 152- READ. Bilgisayarı açtığınızda bu değer 0'dır. Giriş tipi değiştikçe değer de değişir.
TANSGN 0012 — 18
Flag: TAN sonuçları. Bu flag TAN işaretini gerçeklemek için SIN/COS bölümünün sonuçlarını kontrol eder. Normal değer 0'dır. TAN argümanı 259.1'den büyük olduğunda 255 haline gelir.
0013 — 19
Flag: INPUT komutunun soru işareti.
LINNUM 0014-0015 — 20-21
Integer değerin geçici olarak saklanması. BASIC burada hesaplamalarda kullanılan integer verilerini saklar. 3-4 ve 5-6 adreslerindeki rutinler burada saklanan sayıyı kullanırlar.
TEMPPT 0016 — 22
Pointer: geçici yazı karakteri yığını. Normal olarak TEMPST (25) adresini gösterir.
LASTPT 0017-0018 — 23-24
En son geçici yazı karakteri yığını.
TEMPST 0019-0021 — 25-33
Geçici yazı karakterleri için yığın.
INDEX 0022-0025 — 34-37
Buradaki adresler BASIC ROM'da saklanan makine dili altrutinlerinin pointer'larıdır.
RESHO 0026-002A — 38-42
Floating-point çarpımlarının sonuçlarını saklayan bu adresler çok büyük pozitif veya negatif sayıların çarpımı için Sistem ROM çarpım rutinleri tarafından kullanılırlar.
TXITAB 002B-002C — 43-44
Pointer: BASIC text'in başlangıcı. Normal değeri: $0801 (2049)
Bu iki adres BASIC programlarınızı belleğin neresinde sakladığınızı belirtir. Bu adreslerin içeriklerini değiştirerek değişik işler yapabilirsiniz. Örneğin arka arkaya değişik programlar yükleyebilir, bunları bellekte arka arkaya saklayabilirsiniz. Hazır söylemişken bunu yapalım bari. Üstelik çok işinize yarayacağına da eminim. Nasıl mı? Örneğin yazdığınız her programda belli bir rutini örneğin joystick rutini kullanıyor ve her seferinde tekrar yazmak zorunda kalıyorsanız, aşağıdaki kısa programla bu dertten kurtulabilirsiniz. Bunun için örnekte olduğu gibi joystick rutini bir kere için yazın, fakat rutinin satır numaralarını 20000 veya 30000 gibi büyük sayılar olarak alın. Böylelikle rutin ana programın üzerinde bir yere yerleşecek ve geriye kalan iş sadece ana programdaki joystick rutini için GOTO ve GOSUB komutlarının arkasına gelecek sayıları yazmak olacak. Eğer teyp kullanıyorsanız; 1. Aşağıdaki programı BDE ile yazın. (PROGRAM 1) 2. Teybe içinde birinci program olan kaseti yerleştirin. 3. Ekleme programını çalıştırın ve ekranda gösterilen yolları izleyin. “READY” yazısı ekrana geldiğinde LIST yazarsanız ikinci programın 6. satırdan itibaren bellekte yer aldığını göreceksiniz. Buna başka bir program eklemek için yeni programın kasetini teybe koyun ve ekleme programını RUN edin. İstediğiniz bütün
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 23
PROGRAM ADI : PRG-İ 00001 <a2a> PRİNT "<CTRL-7 10D OLİN ><4LEF ," 00003 FOR 15631 TO 636:POKE 1,13:NEXT <187> POKE 198,6 09005 IF PEEK(45)<2 THEN POKE 43,PEEK(45) 44,PEEK(46)-1:END <a55> 00006 POKE 43,PEEK(45)-2:POKE 44 ,PEEK(46) <ası>
programları veya rutinleri eklediğinizde 1'den 6'ya kadar olan satırları silin. Eğer 1541 disket sürücünüz varsa aşağıdaki programı yazın.
v
Programı RUN ile çalıştırıp ekranda belirtilenleri yapın. Yukarıdaki programda olduğu gibi işlemleri bitirdiğinizde 1'den 7'ye kadar olan satırları silin.
PROGRAM ADI : PRG-2
80001 INPUT "HANGI PROGRAMI EKLİYEYİM" * <isa> ) 80003 PRİNT "<CTRL-7><CLR)<3DOWN LORD" 7 <a55> 200904 FOR 15631 TO 640:POKE 1,13:NEXT <154> ©0005 POKE 198,10 00006 IF PEEK(45)<2 THEN POKE 43,PEEK(45) -2*255:POKE 44 <ana> 90007 POKE 43,PEEK(45)-2:POKE PROGRAM ADI : PRG-3 63000 REM — ** */2- LİST kk 63001 SAZPEEK (44) *256*PEEK(43)-1 63002 LN-PEEK (SA*3) KESE 63003 PRİNT T 63004 POKE 631,19:POKE 632,17:POKE 633,5: POKE 634,13:POKE 635,19:POKE 636,13 63005 POKE <e36> 63010 IF PEEKC197)543 THEN "-" TUSUNU KONTROL <253> 63020 IF PEEKC197)-40 THEN "4" TUSUNU KONTROL 63030 GOTO 63108 IF THEN 63180 <a34> 63110 SA-SA*5IGOTO 53002 <a26> 63200 AND )<>8 AND PEEK<SA-3)<>0 THEN <124> 63216 GOT0 Esada
Eğer bu programlarınızdan satır numaraları aynı olanlar varsa bunları değiştirmelisiniz. Şimdi programın nasıl çalıştığına bakalım. İlk önce 43 ve 46 adreslerinde bazı değişiklikler yaparak programın kendisini yüklenecek programın uzağına taşıyoruz. Sonra 3. satırda önce LOAD komutu sonra da uzaklaştırdığınız programınızı tekrar bulmanızı sağlayacak POKE komutları ekrana yazılıyor. 4. satırda klavye buffer'ını (643-640 adresleri) taşıyıcı return ile doldurup 198 adresine oraya kaç tane return koyduğumuzu söylüyoruz. 6. ve 7. satırlar bellekteki programı bilgisayardan gizleyerek yeni bir tane yüklediğinizde kaybolmasını önlüyorlar. Program biterken bilgisayar daha önce taşıyıcı return'lerle (CHR$(13)) uygun biçimde hazırladığımız input buffer'da ne varsa bunları aktif hale getirir. Yani program gerekli komutları kendisi yazar ve bunları taşıyıcı return'lerle sizin yerinize kendisi girer. Aşağıdaki kayma rutini aynı kavramlara göre çalışmaktadır. Bu rutin bir defada tek bir program satırı görmenize imkân tanımaktadır.
Bu programı kullanmak için şunları yapın: 1) Kaydırmak istediğiniz programı yükleyin. 2) BASIC'ten satır numarası kullanmadan direkt modda şu satırı girin: CLR: POKE 43,PEEK(45)-2: POKE 44, PEEK(46) Böylece bilgisayar sonraki adım için gerekli belleğin uçtuğunu sanacak. 3) Kaydırma programını yükleyin. 4) Aşağıdaki satırı direkt modda girin. POKE 43,1:POKE 44,8 5) RUN yazıp return'e basın. 6) Eksi (-) tuşuna basarak programı bir sonraki satıra kaydırın. Artı (+) tuşuyla önceki satıra dönebilirsiniz, ancak en başta en az bir kere aşağıya kaydırma yapmalısınız, yoksa program duracaktır. Gelecek ay alt adresleri incelemeye devam edeceğiz. Şimdilik hoşça kalın.