반응형


예전 Apple 의 경우는 그냥 부팅하면 베이직으로 부팅되었고, 디스크 드라이브를 쓰려면 DOS 로 부팅해서 써야 했습니다.

IBM-PC 계열은 사용하려면 DOS 부팅디스크로 부팅해서 사용해야 했지요.


코모도어의 경우는 베이직에서 기본적으로 디스크 제어 명령을 사용할 수 있는 것 같습니다.(제대로 된 표현인지 모르겠네요. OS 가 내장되어 있다고 하는게 맞는 말인건지....)


뭐...어쨌던 디스크 제어 명령에 대해 아주 간략하게 정리합니다. 모든 명령은 당연히 베이직 상태에서 사용하는 것입니다.

그리고 저도 자세히는 모르는 것도 있어서 나중에 자세히 알게되면 보강해 넣을 것들도 있습니다. 위키 같이 생각해 주시길 바랍니다.




LOAD"$",8:
LIST


플로피 디스크(이하 그냥 디스크 라고 합니다)의 파일명들을 보여줍니다.


이게 참 특이한데....베이직 메모리 영역에 디스크의 파일명들을 저장해서 보여줍니다. 그래서 베이직 소스를 보는 LIST 명령을 주면 디스크의 파일들을 볼 수 있습니다. 이런 특이한 방식으로 인해....만일 베이직 프로그램을 작성하고 저장을 하지 않은 상태에서 위의 명령을 사용하면 베이직 소스가 지워져 버리니 주의해야 합니다.

그리고 디스켓의 파일명들을 베이직 메모리 영역으로 복사해 오는 개념인지라....디스크의 내용을 변화 시킨 후에는(파일삭제등등) 위의 명령을 사용해 디스크의 내용을 다시 읽어들여야 변화된 내용이 반영됩니다.


LOAD 뒤의 숫자 8은 디스크 드라이브 번호입니다. 코모도어 64 는 첫번째 디스크 드라이브가 8번입니다. 두번째 디스크 드라이브는 당연히 9번 이겠죠. ^^;




LOAD"*",8,1:


디스크의 내용을 전부(?)로드 합니다.


바로 실행되는 경우도 있고 RUN 명령을 줘야 하는 경우도 있습니다.


LOAD"FILENAME",8,1:


당연히 특정파일의 이름으로 로드할 수도 있습니다.




OPEN1,8,15,"N:DISK_NAME,ID":CLOSE1


디스켓을 포맷합니다.


만일 에물레이터를 쓴다면 일반적으론 쓸 일은 없습니다. vice 에뮬에 빈디스크를 만드는 기능을 사용하면 되거든요.

파일명이야 알겠는데 ID 는 뭐에 쓰는건지 솔직히 모르겠습니다. 2개의 글자로 구성되야 한다고 합니다. 1a, 2a 이런식으로요.


눈치로 보시면 아시겠지만 "OPEN1,8,15"  부분에서 8은 드라이브 번호입니다. 만일 두번째 디스크 드라이브를 포맷한다면 8 대신 9를 쓰면 됩니다.




OPEN1,8,15,"R0:NEW_NAME=OLD_NAME":CLOSE1


파일의 이름변경 합니다.


기존 파일명을 오른쪽, 새로운 파일명을 왼쪽에 쓰는걸 주의 하세요. 참고로...명령에 R0 라고 되어 있는 부분이 있는데 사실 이런 경우엔 그냥 R 로 써도 무방합니다. 눈치 빠른 분은 아시겠지만 R 뒤의 숫자는 디스크 드라이브가 여러대일때 쓸 일이 있습니다. 나중에 copy 부분에 나옵니다.




OPEN1,8,15,"S0:FILENAME":CLOSE1


파일을 삭제합니다.




OPEN1,8,15,"C0:NEW_FILE=OLD_FILE":CLOSE1
OPEN1,8,15,"C0:NEW_FILE=1:OLD_FILE":CLOSE1


파일을 복사합니다.


디스크 드라이브 하나로 파일을 다른 디스크에 복사하는건 별도의 어플리케이션을 써야 하고요. 디스크 드라이브가 2대 이상일 경우는 위 명령으로 파일 복사가 가능합니다.


첫번째 명령은 기존 파일을 새로운 이름으로 같은 디스크에 복사하는 경우입니다.

두번째 명령은 두번째 디스크의 내용을 첫번째 디스크로 복사하는 것입니다. C0 로 첫번째 디스크 드라이브, 1 으로 두번째 디스크 드라이브를 표시해 줬습니다.


OPEN1,8,15,"C1:NEW_FILE=0:OLD_FILE":CLOSE1


제가 혹시나 하고 위와 같이 해 봤지만 제 경우는 이렇게는 복사가 안되더군요. 제가 뭘 실수 한 건지도 모르겠습니다만.....




좀 보니 생각보다 복잡한것 같기도 하고 아닌거 같기도 하고....


디스크의 파일명들을 보는 방법은 좀 불편하다는 생각이 듭니다. 물론 이를 극복하는 방법도 있긴 한데...그건 언제 소개할 일이 있으면 소개해 보도록 하겠습니다.

디스크 제어 명령이 좀 더 있기는 한데 일반적으로 쓰기엔 위의 명령이면 충분할 것 같습니다.


이 글은 https://www.c64-wiki.com/wiki/Commodore_1541 사이트의 내용을 참고 했습니다. 더 자세한 내용을 보고 싶으시면 링크의 위키를 이용하시면 되겠습니다.




마지막으로 하나 제가 만난 버그가 있는데요.


어셈블러를 이용해서 프로그램을 작성후 파일로 저장하려고 했는데 파일로 저장 되지 않는 증상이 있었습니다.

일반 베이직 상태에서는 파일이 잘 저장되는데 말이죠.


검색후에 해결 방법중 하나는 "설정 --> 드라이브 셋팅 --> 트루드라이브 에뮬레이터"  의 체크를 해제해 주는 것입니다. 그렇게 하니 저장이 잘 되더군요. 이게 에뮬의 버그인지 아니면 뭔가 다른 설정으로 해결 해야 하는 문제인지 확실치는 않습니다. 어쨌던 이렇게 해주면 일단은 저장이 됩니다.


단, 소수 몇몇 프로그램에선 이 기능을 이용하지 않으면 실행이 제대로 안되는 경우도 있다고 하니 참고하시고요.



+ Recent posts