Bu sayfadaki yazılar
Sayfanın metni
Sayfa 23
LDA#A JSR OPEN LDX#A JSR CHKOUT ; çıktıyı birinci kanala gönder BCC PRTOK ; carry sönük, hata yok LDA #1 ; hatayı hallet printer için açılan kanalı kapat JSR CLRCHN LDA # (MSG; printer hata mesajı LDY #)MSG JSR STROUT JSR GETİN CMP #32
; printer kanalını aç
BEKLE boşluk tuşu için bekle ; boşluk tuşunun kodu 32'dir BNE BEKLE JMP PRTKON ; boşluk tuşuna basıldı, tekrar dene ; printer açık JSR CLOSE
JMP CLRCHN
MSG *ASC “PRİNTER'İ KONTROL ET, TEKRAR DENEMEK İÇİN BOŞLUK TUŞUNA BASIN” 13.0
OYUNLAR İÇİN KOLAYLIKLAR (4)
Burada sözü oyunlar için çeşitli kolaylıklar gönderen arkadaşlarımıza bırakıyoruz. Barış İntepe arkadaşımız bize aşağıdaki ip ucunu göndermiş. Kendisine teşekkür ediyoruz. Paperboy Oyunda baştan beşinci eve gelince posta kutusuna gazete atmak yerine gazete ile camını kırıp sonradan sınav yolunu bitirmeyi başarırsanız 100000 puan alabilirsiniz. Ankara'dan A. Erdem Ertan arkadaşımız bize aşağıdaki ip uçlarını göndermiş. Kendisine teşekkür ediyoruz. Test Drive (C-64) V tuşuna basarsanız hız ekranın üstünde dijital olarak gösterilir.
Bombjack II POKE 7053,200:SYS 39712
Gink POKE SYS 16384
Future Night
BUG87 tuşlarına aynı anda basarsanız sonsuz hakkınız olacak.
Sentinel 1348 no.lu Landscape'in kodu: 58896035
Championship Wrestling Eğer rakibiniz sizi yere atarsa, Joystick'i mümkün olduğunca çabuk ileri iterek ateş tuşuna basın. Enerjiniz artacak ve rakibiniz geriye doğru fırlayacaktır.
Knight Mare
Kapının yanına (en üst sağ köşeye) gidip kapıya dönüp “OPEN DOOR” komutunu verince normal olarak kapının açılması lazım. Fakat bunu yapmadan önce zindandaki taşları ve yiyeceği alın.
Erdem arkadaşımız aşağıdaki soruları soruyor:
(4) Makine dilinde hafızadaki bir programı başka bir adrese göndermek için (program içinde) ne yapmam gerekir? Bu soruyu ikiye bölelim: (a) Bir programı normalde olduğu yerden başka bir yere nasıl taşıyıp çalışır halde kalmasını sağlayabiliriz? (b) Programın gereği olarak belirli bir hafıza bölgesini başka bir bölgeye nasıl taşıyabiliriz? a) Programı başka bir yere taşıdığımızda çalışma-
- sını istiyorsak elimizde assembler ile yazılmış listesi olması gerekir. Programın JMP veya JSR gibi komutlarında $FFC3 gibi direkt adres kullanmak yerine CLOSE gibi label'lar kullanılmış olması gerekir. Aksi takdirde tüm adresleri yeni başlangıç yerine göre yeni baştan hesaplayıp düzeltmeniz gerekir. Eğer Label kullanıldı ise yapılması gereken bütün şey program listesinin başında yer alan başlangıç adresini yeni olmasını istediğimiz adrese çevirmektir. (b) Hafızanın belirli bir bölümünü başka bir yere taşımak için monitördeki komutları kullanabilirsiniz. Ancak bu işlemi programınızın çalışması sırasında yapmak istiyorsanız; LDA $0804 STA $C000 komutlarını istediğiniz sınırlara göre döngü içine alarak taşıma işlemini gerçekleştirebilirsiniz. Bu işlem sırasında LDA komutunu indeksli olarak kullanmayı unutmayın. (2) Makine dilinde PRINT komutunun karşılığı nedir? (8) Makine dilinde INPUT komutunun karşılığı nedir? Bu iki sorunuzun karşılığını da bu yazının Makine Dili bölümünde bu ay ve önümüzdeki aylarda bulabilirsiniz.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 22
Burak KİPER
Kusursuz çalışacak bir program yaptınız. Programa önemli bilgiler gireceksiniz ve bu bilgiler program sonunda veya belirli aralıklarla saklanacak. Bir de programınızı ticari amaçla hazırladığınızı düşünün. Böyle bir programın çalışma sırasında bir hata vererek durmaması gerekir. Çünkü program hata mesajını verip durduğunda o ana kadar yazılmış olan veriler kaybolur. Programı yüzde yüz hatasız hale getirseniz bile bir printer'ın kapalı olması DEVICE NOT PRESENT hatasına yol açıp verilerin kaybolmasına neden olur. Bir printer'ın kapalı mı açık mı olduğunu nasıl anlayabiliriz? Aşağıdaki yedi satırı programınıza ekleyerek printer'ın durumunu programdan kontrol edebilirsiniz.
100 GOSUB 900:END 900 OPEN 4,4,0: # 4, CHRS(0) 910 IF STz0 THEN PRİNT “PRİNTER ACIK“:CLOSE it 4: RETURN 920 PRİNT “LUTFEN PRİNTER'İ AÇIN”: CLOSE # 4 930 PRİNT “TEKRAR DENEMEK İÇİN BİR TUŞA BASIN” 940 GET A$: İF THEN 940 950 GOTO 900
Eğer makine dili ile bir program hazırlıyorsanız, rutinini kullanarak printer'ı kontrol edebilirsiniz. CHKOUT kullanımdaki çıktı gösterir. CHROUT kullanılmadan evvel CHKOUT rutininin çağrılması gerekir. Bu sırada, eğer printer kapalıysa Carry biti yanar. Aşağıdaki makina dili programımız çıktıyı printer'a gönderiyor ve printer'ın açık olup olmadığını kontrol ediyor.
SETLES — — $FFBA SETNAM — $FFBD CLOSE — $FFC3 OPEN — $FFCO CLRCHN — $FFCC CHKOUT — $FFC9 STROUT — GETİN — — SFFE4 PRTKON LDA # 4 ; bir numaralı kanalı kullan LDX#4 : yazıcı alet numarası dört LDY #O : İkincil adres JSR SETLES LDA#O : dosya İsminin uzunluğu JSR SETNAM