Bu sayfadaki yazılar
Sayfanın metni
Sayfa 23
Iny Bne Tsave 3 Inc SAÇ Tsave 3 $2D Lda $2C Sbe $2E Bec Tsavloop
Programın tamamının kaydedilmesi burada yapılıyor.
Lda $FB İsr WrtByt WirtByt
Kontrol toplamını da yazalım ve son biti de kapatalım.
Lda —#$1B Sta $D811 Lda —#$37 Sta $01 Ch Pla Sta $2C Pla Sta $2B Jsr $FF84 ; V/D'u toparla Jmp SA474
bozduğumuz her şeyi toparlayıp, teybi durdurup BASIC'e dönüyoruz.
WrtHdr Lda # $06 ; Basic ROM'u kaldır Sta $01 ; ve teybi çalış- tır Lda #$0B ; ekranı kapat sta Headri Dex ; Teyp tam Bne Headrl ; hızına Dey ; ulaşana kadar Sel Lda ; Bekleme için Sta $DDO4 ; başlangıç Lda #$0A ; timer Sta $DDOS ; değerleri Lda #$19 Sta $DDOE ; Timer'i başlat
Buraya kadar teype yazabilmek için gerekli olan adreslerin değerlerini ayarladık.
Ldy #$40 ; Tekrar sayısı Headr2 Lda ; Senkronizas- yonbaytı İsr WrtByt ;01000000'u yaz Dey Bne Headr 2
teybe 64 defa $40 yaz.
Lda İsr
#$SA HrtByt
; Güvenlik baytı
Güvenlik baytını unutma.
WriByt Sta
Sta Lda
Sta Rol İsr Deo Bne Rts
Wbyte |
$BD ; baytı sakla $EB ; kontro! tepla- mini : hesapla ve sakla # $00 ; yazılacak bit sayısı $A3 $BD WrtBit SA3 Whytel
Teybe bir bayt yazmanın yolu budur işte.
WrtBit Lda Ldx Stx Lda Lta Bit
Wbit 1
Wbit
Beg Lda Bor Sta Inc
Lda Sta Lda Bit Beg Lda EOR - Sta Lda Sta Rts
Wbit 2
#$70 ; bit değeri O kabul et Wbit 1 ; gerçekten de 0 # $FF ; değer 1'miş $DD84 ; Timer'ı ayarla $DDO5S #$01 $DDOD ; Timer'ın bit- 2 mesini Wbit 2 ; bekle $01 ; teybe yazılan # $08 ; voltajı ters $01 ; çevir $DO20 ; Çalıştığını gös- ter #S$DI9 ; Timer'ı gene $DDOE ; çalıştır #$01 $DDOD 3 $01 # $00 $01 #$19 $DDOE
İşte teybe kayıt yapmanın can alıcı kısmı. Eğer yazılacak olan bit 1 ise $FF'den, 0 ise $70'den geriye sayıyoruz (iki kere) ve her sıfırlanışta teybe yollanan voltajın yönünü değiştiriyoruz. Bu sayede değişik boylarda dalgalar yaratabiliyoruz. Rutini terk etmeden hemen önce Timer'ı tekrar çalıştırıyoruz ki arada beklemeden dolayı zaman kaybımız olmasın. Loader de buradan başlıyor. Size önerim, $C13F'de bulunan bu programı incelemeden önce $02AB'ye taşımanızdır, çünkü bu program orada çalışmak üzere tasarlanmış:
Ldy Lda Sta
Loader Biloop
Dey Sel Lda
# $05 # $02 $0450,Y ; Ekranda artan READY'ı ; siliyoruz Biloop $01 ; teyp de çalış-
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 22
dosya adı temizleniyor.
Birinci üniteye kayıt yapılacağı ve dosyanın detayları bilgisayara bildiriliyor.
Ldy $B7 #$0F Lda # $BB Bec Loop 2 Ldx #< Flname Ldy $OE Ldy # > Flname Loor 2 Dey IJsr $FFBD Bmı Tsavel Lda ($BB),Y Burada ufak bir bile kullanılıyor. Yani programın adiy- Sta Flname 4 2,Y la birlikte uzunca bir de program parçası ($BB bayt) kay- Jmp — Loop2 dediliyor kasede, Bu kadar satır yalnızca $B7 adresinden dosya adı uzun- Lda # $80 luğunu alıp. $BB'nin gösterdiği adreste bulunan dosya Sta $9D ismini gereken adrese taşımaya yarıyor. Lda # $02 ; Kayıt başlan- Tsavel Ldy — # $50 Sta Tsave 2 Lda — Loader,Y Lda ; Sta $O2AB,Y Sta $EB ; Dey Ldx ; Bitiş Bpl - Tsave 2 Ldy ; adres İsr $FFDO
Hızlı yükleyicinin (LOADER) bir parçası gerekli yere
taşınıyor. Loader kısmı kasede normal ve Autostart olarak kay- dediliyor. Lda #$01 Tax Lda — #$03 Tay Sta $0302 Jsr $FEFBA Lda #$A4 Sta $0303 Lda Sta $9D Ldx — #$00 Ldy # $00
Autostart yapmak için bozduğumuz değerleri normale çeviriyoruz.
Seveil Jsr WrtHdr
İlk olarak senkronizasyon ve güvenlik baytlarını yaz.
Lda — $2B PHa İsr WrtByt Lda — $2C Pha Jsr WrtByt Lda — $2D Jsr WrtByt Lda — $2E Jsr WrtByt
Değeriyle oynanacak değişkenleri stack'e atarken, başlangıç ve bitiş adreslerini kasede yaz. Sty $FB
Kontrol toplamını sıfırla
Ldy $2B. Lda # $00 Sta $2B Tsavloop Lda ($2B),Y
Jrs WrtByt