Retro Game & PC/매뉴얼 팁 작업

Commodore 64 프로그래밍 연습 팁

smores 2013. 4. 17. 05:51

막상 거저 얻은 C64 를 돌려놓고 보니 디스켓 한장도 없고 할 수 있는 것이 별로 없다. 그래도 나름 코모도어 베이식 자료 보면서 조금 테스트해 보니 예전 Apple ][ 에 비해서는 엄청나게 뛰어난 사운드 기능이 눈에 띈다. 정말 간단한 코드로 나오는 사운드 효과가 역시 별도의 사운드 칩이 있다는 것이 얼마나 대단하다는 것을 느끼게 해 준다. 그리고 왜 C64 관련 음악 사이트들이 아직도 많이 활동하는지 알 것도 같다.

 

http://www.remix64.com/

 

앞의 포스팅에서 언급한 케이블 종류들을 마련하기 전까지는 실기에서 뭔가를 할 일이 별로 없다. 그래서 간단한 프로그래밍 연습을 에뮬레이터로 해 보았다. 사용하는 에뮬레이터는 일단 두가지로 압축했는데 하나는 CCS64 V3.9 를 사용해 보았고 또 하나는 WinVICE 2.2 x86 이다. 둘 다 Win7 X86/64 에서 모두 인스톨 없이도 그냥 돌아간다. 

 

 

CCS64 V3.9.zip
다운로드

 

WinVICE-2.2-x86.zip
다운로드

 

 

자세한 비교는 안해 보았지만 몇가지 인터페이스 면에서 본인에게는 CCS64 가 약간 더 낫게 느껴졌다. 하지만 둘 다의 문제점으로 베이식 프로그램을 작성하다 보면 키보드가 오리지널 C64 자판배열로 되어 있어서 기호문자들을 입력하기가 매우 힘들다 (외우지 않는 이상...) 

 

 

 

고민하다가 알게 된 방법으로 일단 기호문자나 특수키(C64 키, 커서키 등)을 포함한 문자열 부분만 그냥 비워두든지 해 놓고 나머지는 윈도우즈에서 텍스트 에디터 상에 소문자로 코딩 후 select all - copy 한 다음 WinVICE 에서 ALT+INS 로 paste 하면 알아서 대문자로 바뀌면서 입력이 된다. 이후 필요한 특수 기호 및 특수 키 부분만 C64 에뮬레이터에서 추가로 입력/수정해 주면 아주 편하다.

 

참고로 C64 Basic 연습을 위한 강좌로 다음의 사이트에 가 보면 기초적인 부분이 아주 간략하게 잘 정리되어 있다.

 

 

http://www.lemon64.com/manual/

 

 

다음은 위의 사이트에서 복사해서 대소문자만 바꾸어준 (editplus로 간단히 처리할 수 있다) 사운드 예제 및 입력/실행 화면이다.

 

 

2 for l=54272 to 54296: poke l,0: next

5 s=54272

10 poke s+24,15: poke s+5,88: poke s+3,15: poke s+2,15: poke s+6,89

20 read h: if h=-1 then end

30 read l

40 read d

60 poke s+1,h: poke s,l: poke s+4,65

80 for t=1 to d: next: poke s+4,64

85 for t=1 to 50: next

90 goto 20

100 data 33,135,250,42,62,250,50,60,250,42,62,125,50,60,250

105 data 56,99,250

110 data 50,60,500,0,0,125,42,62,250,50,60,250,56,99

115 data 1000,50,60,500

120 data -1

 

 

 

 

코딩을 마치고 나면 혹시 나중에 사용할 때를 대비해서 디스켓 이미지 파일에 저장해 놓는다. 이런 용도를 목적으로 미리 빈 디스켓 이미지를 하나 준비한다. WinVICE 에서는 이 부분이 무척 간단히 된다. 

 

본인의 경우 이미 몇가지 베이식 프로그램들이 들어 있는 디스켓 이미지를 하나 복사해서 blank.d64 라고 이름을 바꾸어 놓고 WinVICE에서 File - Attach disk image 에서 디스크 8번으로 마운트 해 놓고 다음의 명령어로 디스켓이 초기화 할 수 있다. 

 

 

OPEN [file number],[device#],15,"N:[disk name],[id]":CLOSE[file number]

 

예를 들어서

 

OPEN 1,8,15, "N:BASIC DISK,01":CLOSE 1

 

 

이렇게 준비된 디스켓을 그대로 마운트 해 놓은 상태에서 위의 예제와 같은 연습 프로그램을 작성하고 나면 다음의 한 줄의 명령으로 저장이 가능하다.

 

SAVE "[filename]",8

 

예를 들면

 

SAVE "MUSIC1",8

 

디스켓에 있는 내용을 보려면

 

LOAD "$",8

LIST 

 

로 볼 수 있다.

 

나중에 에뮬레이터 다시 실행한 후 저장해 놓았던 프로그램을 실행하려면 다음과 같은 식으로...

 

LOAD "MUSIC1",8

RUN

 

다음은 이런식의 몇가지 테스트 프로그램 코드들이다. 프로그램 수행 도중에 멈추려면 ESC 키를 누르면 된다.

 

 

maze1.bas

===============

10 print chr$(205.5+rnd(1)); : goto 10

 

noise1.bas

===============

10 poke 54272+int(rnd(1)*25),int(rnd(1)*256) : goto 10

 

kaleidoscope.bas - need to debug

===============

10 print chr$(147)

20 ca=1024:cp=54272:row=25:col=40

30 poke 53280,0:poke 53281,0

40 forw=3to50:fori=1to12:forj=0to12:k=i+j

50 c=j+j+j/(i+3)+i*2/12

60 k1=ca+i+(col*k):i1=ca+k+(col*i):c1=cp+k1:c2=cp+i1

70 k2=ca+(col-i)+(col*(row-k)):i2=ca+(col-k)+(col*(row-i)):c3=cp+k2:c4=cp+i2

80 k3=ca+(col-i)+(col*k):c5=cp+k3:i3=ca+k+(col*(row-i)):c6=cp+i3

90 k4=ca+(col-k)+(col*i):c7=cp+k4:i4=ca+i+(col*(row-k)):c8=cp+i4

100 pokek1,81:pokec1,c:pokei1,81:pokec2,c

110 pokek2,81:pokec3,c:pokei2,81:pokec4,c

110 pokek3,81:pokec5,c:pokei3,81:pokec6,c

110 pokek4,81:pokec7,c:pokei4,81:pokec8,c

1000 next j,i,w

1100 goto 10

 

 

 

위의 예제들을 포함한 디스켓 이미지

 

blank.d64
다운로드