C64'ü minimum değişiklikle uzaktan kullanabilmek RS232 ile mümkün:
BASIC'te ve komut satırında CMD ile ekran çıktısını başka cihazlara, dosyalara yönlendirebildiğimizi biliyoruz. Örneğin OPEN1,2,0,CHR$(10):CMD1:LIST komutları RS232 kanalını açar, çıktıyı bu kanala yönlendirir ve LIST komutunun çıktısı RS232 ile bağlı cihaza (modem, terminal vb.) gider. Ancak, doğrudan modda (sanıyorum normal yolla başlangıç ayarları yapamadığımızdan) girişi yönlendiremiyoruz.
Ama, doğrudan modda olmasa da herhangi bir BASIC programını RS232 üzerinden çalışacak hale getirmek kolay. Yani BASIC içinde modemden gelen girdileri alıp, çıktıyı yine modeme gönderebiliyoruz.
Önce, programın en başlarına (değişkenlerden önce) RS232 ayarını koyuyoruz ve ilk ayarlar için rastgele bir okuma yapıyoruz:
1 OPEN 129,2,0,CHR$(10)+CHR$(0):GET#129,A$
Ardından giriş çıkışı klavye ve ekran yerine RS232 cihazına yönlendiriyoruz:
2 POKE 153,2:POKE 154,2
hepsi bu.
Programdan çıkarken ise
32767 POKE 153,0:POKE 154,3:CLOSE 129:END
ile giriş çıkışı eski haline getirebiliriz.
OPEN komutunun RS232 ile kullanımı için ayrıntılar C64 Programcının El Kitabında var, ben de oradan baktım. Ayarlar kısaca:
Open'daki 129= dosya no (127'den büyük olunca CR yerine CRLF karakterleri gönderiyor). 2= RS232 cihazı. CHR$(10) 2048bps için. 10 yerine 6 girilirse 300, 8 girilirse 1200bps oluyor. Default olarak en yüksek hız C64'te 2400bps ne yazık ki.
Örnek program:
50 REM BASIT GIRDI CIKTI ORNEK PROGRAMI 100 GOSUB 1000:REM EKRANI SIL 110 PRINT "==== MENU ====" 120 PRINT "1) SECENEK 1" 130 PRINT "2) SECENEK 2" 140 PRINT "0) CIKIS" 200 GET A$:IF A$="" GOTO 200 210 A=1+ASC(A$)AND7 220 ON A GOTO 500,300,400 290 GOTO 200 300 GOSUB 1000 310 PRINT "=== MENU 1 ===" 320 PRINT "..." 330 REM 390 GOTO 110 400 GOSUB 1000 410 PRINT "=== MENU 2 ===" 420 PRINT "..." 430 REM 490 GOTO 110 500 END 1000 FORI=1TO25:PRINT:NEXT:RETURN 1010 REM BASIT TERMINALLERI DE DUSUNEREK EKRAN TEMIZLEME 1020 REM
Şimdi bu örnekteki gibi basit bir BASIC programını RS232 ile uzaktan kullanılır hale getirmek için sadece şu değişiklikleri yapıyoruz:
0 OPEN 129,2,0,CHR$(10)+CHR$(0):GET#129,A$:POKE 153,2:POKE 154,2 500 POKE 153,0:POKE 154,3:CLOSE 129:END
Programın yeni hali:
0 OPEN 129,2,0,CHR$(10)+CHR$(0):GET#129,A$:POKE 153,2:POKE 154,2 50 REM BASIT GIRDI CIKTI ORNEK PROGRAMI 100 GOSUB 1000:REM EKRANI SIL 110 PRINT "==== MENU ====" 120 PRINT "1) SECENEK 1" 130 PRINT "2) SECENEK 2" 140 PRINT "0) CIKIS" 200 GET A$:IF A$="" GOTO 200 210 A=1+ASC(A$)AND7 220 ON A GOTO 500,300,400 290 GOTO 200 300 GOSUB 1000 310 PRINT "=== MENU 1 ===" 320 PRINT "..." 330 REM 390 GOTO 110 400 GOSUB 1000 410 PRINT "=== MENU 2 ===" 420 PRINT "..." 430 REM 490 GOTO 110 500 POKE 153,0:POKE 154,3:CLOSE 129:END 1000 FORI=1TO25:PRINT:NEXT:RETURN 1010 REM BASIT TERMINALLERI DE DUSUNEREK EKRAN TEMIZLEME 1020 REM 20000 REM =============== 21000 REM ILKER FICICILAR 22000 REM 17.07.2014 23000 REM ===============
Peki bu ne işe yarar?
Örneğin evdeki C64'ünüzü modeme ve telefon hattına bağlarsınız. Modeminiz otomatik yanıta ayarlanır. Ve işten ev telinizi laptopunuzun modemiyle arar ve C64'teki sevdiğiniz filanca programınıza bağlanırsınız.
Ya da benim gibi masada monitör fazlalığı istemiyorsanız Commodore'u bir NULL-MODEM kablosuyla bilgisayarınıza bağlar öyle kullanırsınız.
Bu arada bu yöntemin verimli kullanımı için PETSCII destekli bir terminal emülatörü programı kullanmak daha iyi olacaktır.
Yöntemin amacıysa mevcut BASIC programlarından basitlerini sadece 2 satır ekle RS232 ile uzaktan kullanılır hale getirmek.
İlker Fıçıcılar
20.07.2014
Keywords: Commodore, RS232, remote desktop