Vintage Basic [Tanıtım]

Bu konuyu okuyanlar

kmurat

Müdavim
Katılım
8 Şubat 2014
Mesajlar
8,486
Çözümler
3
Reaksiyon puanı
3,709
Puanları
113
Vintage Basic

Vintage Basic, bir Retro derleyici. Programalama'nın ve kişisel bilgisayarların ilk günlerini bize günümüzde de yaşatan
bir taklit derleyici. Tam tanımlanması gerekirse, bir yorumlayıcı.

Buradan edinebilirsiniz : http://vintage-basic.net/download.html

Kurulum için Setup dosyasını indirdikten sonra, Lisans sözleşmesini ve varsayılan kurulum dosya yolunu kabul için onaylamanız yeterli.

Programlar menü'sünde aradığınızda, Vintage basic konsolu ve yardım bölümü ve web bağlantısı alt menü'lerini görebilirsiniz. Bir kullanım arayüzü bulamazsınız. Vintage Basic, 1980 li yılların başlarında piyasaya sürülen 8 bit'lik
bilgisayarların ortamını, günümüzün teknolojisine oldukça otantik bir şekilde aktarmayı hedefleyen bir derleyici.

Programlarımızı, Notdefter veya isteğe bağlı olarak Notepad++ ile yazabiliriz. ben Notdefteri'ne göre anlatayım.

İlk kodlarımızı yazalım:
Kod:
10 PRINT "Merhaba SDN Dunyasi"

Dikkat ederseniz, kod satırımızın altına bir boş satır ekledim. İmleç bir alt satıda olmalı. Aksi durumda ilk hata bildirimizi alırsınız.

Bir de Türkçe karakterleri kullanmadım. Bunlar "Ç ç Ş ş İ ı Ğ ğ Ü ü Ö ö" harfleri. Çünkü bu harfleri Derleyici, orijinalinde de olduğu gibi, tanımayacak. Ve ilk satırın başına da bir satır numarası ekledim. Eksik olduğunda, yine hata alacağız. Ve Basic kod'ları orijinalide büyük harfler kullanılarak yazılırlar. Daha sonraki derleyicilerde, kolyık olsun diye bu zorunluk değiştirilmişti.

Şimdi dosyamızı kayıt edelim:

Önce Notdefteri'nin alt bölümünde bulunan ve dosya türlerini belirten panelden *.txt yazan kısmı, "Tüm dosyalar" olarak değiştirelim. Bunu yapmazsak, programımızı çalıştıramayız. Ve ardından üst panelden "Dosya" seçip, "Farklı kaydet" seçerek, merhaba.bas adını vererek kayıt edelim. Not defteri'ni ise şimdilik kapatmayalım, çünkü dosyamız üzerinde bazı değişiklikler yapmak isteyebiliriz. Dosyamız varsayılan olarak (farklı bir yer seçmemişseniz)
"Belgelerim" klasörüne kayıt edilmşiş olacak. "Belgelerim" klasörüne baktığımızda "Merhaba" isimli ve bir kırmızı "V" harfi resimi ile tanımlamış bir dosya bulacağız. ".bas" dosya eki (uzantısı) ise görünmez.

Şimdi programımızı çalıştıralım : Anlık bir belirti çıkacak ve kapanacak. işte o bizim programımız. Ama bir programımızın ne işlem yaptığını algılayamadık bile. Bu nedenle Notdefteri isimli editörümüzü kapatmadık ki, ek düzenlemeler yapabilelim.

Şimdi kod'larımıza bir ilave yapalım.

Kod:
10 PRINT "Merhaba SDN Duyasi"
20 INPUT A$

şimdi ikinci bir kod satırı daha eklemiş olduk ve yine yeni satırımızda da bir (daha yüksek) satır numarası kullandık. Ve yine son satırın altına bir numarasız boş satır ekledik. Değişiklileri kayıt etmek için yine üst panelden "Dsya" bölümünden, bu sefer yeni bir isim girmeden ve sadece "Kaydet" seçerek kayıt ediyoruz. yine Notdefteri'ni kapatmayalım. Ek düzenlemeler yapmamız gerekebilir.

Bu sefer "merhaba" isimli ve kırmızı bir "V" ile tanımlanmış dosyamıza çift tıkladığımızda, "Merhaba SDN Dunyasi" yazısı ile komutsatırı açılacaktır. Ve bizden bir işlem yapmamızı bekleyecektir. bu beklemeyi, yeni eklediğimiz satırdaki kod sağlıyor. herhangi bir tuşa bastığımızda, komutsatırı kapanacak.

Şimdi programımıza Türkçe karakterleri tanımasını öğretelim. Kapatmadığımız Notdefteri üzerinde yine bir düzenleme yapalım

Kod:
10 PRINT "Merhaba SDN Dünyası"
20 INPUT A$

Yaptığımız düzenleme sadece türkçe karakterler eklemek oldu. programızı bu şekilde kayıt edip, çalıştırırsak, bazı bozuk karakteler göreceğiz. Bunu önlemek için, kayıt etmeden önce, yine Notdefter'nin alt panelindeki kodlama türü seçeneğindeki varsayılan olan "ASCII" seçimini "UTF-8" olarak değiştirelim. Ve ardından yine "Dosya", "Kaydet" seçerek, programımızı kayıt edelim. Şimdi programımıza çift tıladığımızda, artık Türkçe karakterler de düzgün olarak görünecektir. Artık Notdefteri'ni kapatabiliriz.

Bütün Vintage basic programları komutsatır üzerinden çalışırlar.

Buradan, çok eski basik oyunlarının, Vintage Basic için biraz düzeltilmiş, kaynak kodlarına erişebilirsiniz : http://vintage-basic.net/games.html

Eskiden bilgisayar oyunları nasılmış, merak edenler için, iyi bir kaynak. oyunları kopyalayıp, Notdefterine yapıştırıp kayıt edebilirsiniz. Son satırlarına birer boş satır eklemeyi unutmayın. Yine değişmemiş orijinal hallerine de aynı sayfadan ulaşabilirsiniz. Oyunlar metin tabanlıdır ve İngilizce. Bir de çoğu oyunda büyük harf'ler kullanılark oynamak gerekiyormuş. O zamanın oyunları öyleymiş.

Bir de kendi yaptığım bir programı ekleyeyim. Program bir hesap makinesi, ve tabii son satıra bir boş satır daha eklemeyi unutmayın. Boş satır, kopyalamada çıkmıyor. Bir de program, karışık hesaplarda (çarpma, bölme, çıkartma karışık olarak ard arda kullanıldığında) hatalı sonuçlar veriyor. Tüm işlemler aynı türden olduğu sürece, hatasız hesaplıyor.

Kod:
100 PRINT "::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"
110 PRINT "::                                                                            ::"
120 PRINT "::                               Hesapmatik                                   ::"
130 PRINT "::                                                                            ::"
140 PRINT "::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"
150 PRINT
160 PRINT "                            Müthiş bir hesplayıcı                               "
170 PRINT 
180 PRINT
190 PRINT
200 PRINT
210 PRINT
220 PRINT
230 PRINT
240 PRINT
250 PRINT
260 PRINT
270 INPUT "                                  DEVAM";A$
280 PRINT
290 PRINT
300 PRINT
310 PRINT
320 PRINT
330 PRINT
340 PRINT
350 PRINT
360 INPUT "  İlk Rakam          :";R1
370 PRINT
380 INPUT "  İŞLEMLER + - x / = :";I$
390 IF I$ = "=" THEN PRINT : PRINT "  TOPLAM            = ";R1 : GOTO 630
400 PRINT
410 INPUT "  Yeni Rakam         :";R2
420 PRINT
440 IF I$ = "+" THEN R1 = (R1 + R2)
450 IF I$ = "-" THEN R1 = (R1 - R2)
455 PRINT
460 IF I$ = "/" THEN R1 = (R1 / R2)
470 IF I$ = "x" THEN R1 = (R1 * R2)
480 R3 = R1
490 INPUT "  İŞLEMLER + - x / = :";I2$
500 IF I2$ = "=" THEN GOTO 610
510 IF I2$ = "+" THEN R3 = (R1 + R2)
520 IF I2$ = "-" THEN R3 = (R1 - R2)
530 IF I2$ = "/" THEN R3 = (R1 / R2)
540 IF I2$ = "x" THEN R3 = (R1 * R2)
550 PRINT
600 GOTO 410
610 PRINT
620 PRINT "  TOPLAM            = ";R3
630 PRINT
640 INPUT "  Sonlandır           ";A$
650 END

"merhaba" isimli dosyamıza çift tılayalım.
 

kmurat

Müdavim
Katılım
8 Şubat 2014
Mesajlar
8,486
Çözümler
3
Reaksiyon puanı
3,709
Puanları
113
Animasyon

Bir de Animasyon yazdım, sizlerle paylaşayım. Önceki iletimde anlattığım gibi, kopyala yapıştır, veya kendiniz kodları yazdıktan sonra, son satırdan sonra bir boş satır eklemeyi unutmayın. Ve dosyayı kayıt ederken, dosya türü olarak "Tüm dosyalar" ve, karakter kodlaması olarak "UFT-8" seçmelisiniz. Sonra dosyayı (Örnek=) SDN.bas adı altında kayıt edebilirsiniz. Çalıştırmak için de, kırmızı ve büyük "V" simgesi üzerine (dosyanın kendisidir) çift tıklamanız gerekiyor.

Kod:
110 FOR A = 1 TO 80: PRINT "="; : NEXT A
115 PRINT "||"; : FOR B = 2 TO 77: PRINT " "; : NEXT B: PRINT "||"
120 PRINT "||"; :PRINT TAB(34)"Merhaba"; :PRINT TAB(78)"||"
125 PRINT "||"; : FOR B = 2 TO 77: PRINT " "; : NEXT B: PRINT "||"
130 FOR C = 1 TO 80: PRINT ":"; : NEXT C
135 PRINT " "; : FOR D = 1 TO 78 : PRINT "_"; : NEXT D : PRINT
140 FOR E = 1 TO 6 : PRINT "|" + TAB(78)"|" : NEXT E
145 PRINT "|" + TAB(23)"Sizin için bir Animasyon yazdım."; TAB(81)"|"
150 PRINT "|" + TAB(27)"Görmek istermisiniz ?"; TAB(80)"|"
155 FOR E = 1 TO 7 : PRINT "|" + TAB(78)"|" : NEXT E
160 PRINT " "; : FOR D = 1 TO 78 : PRINT "_"; : NEXT D
165 PRINT
170 INPUT "                                 Evet/Hayır :";A$
175 IF A$ = "h" OR A$ = "H" THEN GOTO 296
176 IF A$ = "hayır" OR A$ = "Hayır" THEN GOTO 296
180 FOR A = 70 TO 0 STEP -1
185    FOR B = 1 TO 12
186       PRINT ""
187    NEXT B
188    PRINT TAB(A)"SDN Forum"
189    FOR C = 1 TO 11
190       PRINT ""
191    NEXT C
192    FOR D = 1 TO 20000
193    NEXT D
194 NEXT A
280 FOR E = 1 TO 70
285    FOR F = 1 TO 12
286       PRINT ""
287    NEXT F
288    PRINT TAB(E)"SDN Forum"
289    FOR G = 1 TO 11
290       PRINT ""
291    NEXT G
292    FOR H = 1 TO 20000
293    NEXT H
294 NEXT E
295 GOTO 180
296 END
 

kmurat

Müdavim
Katılım
8 Şubat 2014
Mesajlar
8,486
Çözümler
3
Reaksiyon puanı
3,709
Puanları
113
Vintage Basic ile de mutlaka daha iyi grafikler mümkündür diye düşünüyorum. Ben şimdilik bu kadarını becerebildim.

Kod:
100 PRINT TAB(28)"//////////////\\\\\\"
110 PRINT TAB(27)"/////////////////\\\\\\\"
120 PRINT TAB(25)"////////////////////\\\\\\\\"
130 PRINT TAB(24)"///////////               \\\\\"
140 PRINT TAB(23)"//////////                 ||||||"
150 PRINT TAB(22)"///_____\\\"
160 PRINT TAB(22)"//|     |\\  <<O>>     <<O>>  |||"
170 PRINT TAB(22)"//|      \\         \\        |||"
180 PRINT TAB(22)"//|                  \\       |||"
190 PRINT TAB(22)"//|     |           | \\|     |||"
200 PRINT TAB(23)"\\-----      -            -  |"
210 PRINT TAB(23)"\\\           \          /   |"
220 PRINT TAB(24)"\              ----------   |"
230 PRINT TAB(25)" \                        |"
240 PRINT TAB(26)"   \                    |"
250 PRINT TAB(27)"     \           ||   |"
260 PRINT TAB(28)"       \_____________/"
 

kmurat

Müdavim
Katılım
8 Şubat 2014
Mesajlar
8,486
Çözümler
3
Reaksiyon puanı
3,709
Puanları
113
Oyun

Bir de oyun yazdım. Bir zamanlar (ilk zamanlarda) bilgisayar oyunlarının nasıl olduğunu ve nasıl oynandığını merak edenler için.

Kod:
100 REM -------------------------------------------------------------------
101 REM Bilbakalım.bas bir tahmin oyunu
105 REM Oyuna giriş
106 REM -------------------------------------------------------------------
110 FOR A = 1 TO 80
120 PRINT "=";
130 NEXT A
140 PRINT
150 PRINT "||"; SPC(76)"||"
160 PRINT "||"; SPC(30)" BİL BAKALIM"; SPC(34)"||"
170 PRINT "||"; SPC(76)"||"
180 PRINT "||"; SPC(30)"Tahmin  Oyunu"; SPC(33)"||"
185 PRINT "||"; SPC(76)"||"
190 FOR A = 1 TO 80
200 PRINT "=";
210 NEXT A
220 FOR A = 1 TO 3
230 PRINT
240 NEXT A
250 PRINT SPC(10)"Bilgisayar belirli bir aralıkta bir rakam aklında tutar"
255 PRINT
260 PRINT SPC(10)"Bu rakamı tahmin ederseniz, bir sonraki aşamaya geçersiniz"
265 PRINT
270 PRINT SPC(10)"Her aşama biraz daha zorlaşır. Bilgisayar size yön verecek"
280 FOR A = 1 TO 8
290 PRINT
300 NEXT A
310 PRINT SPC(60); : INPUT "Devam : ";A$
400 FOR ISLEM = 1 TO 10
405 D = ISLEM * ISLEM * 10
406 C = (D+1) - (ISLEM * 10)
410 GO SUB 1000
420 NEXT ISLEM
999 REM -------------------------------------------------------------------
1000 REM Oyun ana işlemleri
1001 REM ------------------------------------------------------------------
1005 TAH = C + INT(RND(1)*(D-C))
1010 FOR A1 = 1 TO 10 : PRINT : NEXT A1
1020 PRINT SPC(10)"Aklımda ";C;" ve ";D;" arası bir sayı var !"
1030 PRINT
1050 FOR A2 = 1 TO 12 : PRINT : NEXT A2
1070 FOR SAY = 1 TO 11
1071 PRINT
1075 PRINT SPC(10)SAY;" ";
1080 INPUT "Bil bakalım hangi sayı : "; E
1100 IF E > TAH THEN PRINT SPC(15)"Daha düşük"
1110 IF E < TAH THEN PRINT SPC(15)"Daha yüksek"
1120 IF E = TAH THEN GOTO 1200
1130 IF SAY > 10 THEN GOTO 3000
1140 NEXT SAY
1200 FOR A3 = 1 TO 10 : PRINT : NEXT A3
1210 PRINT SPC(15)"Bildiniz"
1215 PRINT : INPUT"               Devam :";A$
1230 RETURN
2999 REM ------------------------------------------------------------------
3000 REM Oyun sonu
3001 REM ------------------------------------------------------------------
3010 FOR A = 1 TO 11 : PRINT : NEXT A
3020 PRINT SPC(30)"Oyun Sonlandı"
3030 FOR A = 1 TO 12 : PRINT : NEXT A
3040 INPUT A$
3050 END
 
Üst