mos technology 6502 CPU

6502 는 통상 mos technology 6502 를 부르는 단어입니다.

 

6502는 모토롤라 6800 프로젝트를 위해 일하던 팀 MOS Technology에 의해 개발되고

 

1975년도에 출시된 가정용 PC를 위한 8비트 CPU로써 인텔의 x86이전 컴퓨팅 세계를 이끌었습니다.

 

애플2, 닌텐도 패미컴(NES), 아타리, 코모도어 64에 장착되었기 때문에 한국에서도 많이 사용된 칩이죠.

 

 

 

당시 CPU라는 개념이 뭔지 모른체 그냥 '애플콤퓨타' 라고 말했던 그 기계의 안에 들어있던 CPU입니다.

 

 

현대에 볼 수 있는 가장 단순한 CPU 아키텍쳐를 가지고 있다고 합니다.

 

CPU학습이나 취미 프로젝트를 위해 아직도 많이 사용되고 있습니다.

 

아래는 MCS650X 시리즈 내부 아키텍쳐로 레지스터 3개 (X, Y, A) 로 프로그래밍을 합니다. 인텔의 x86은 명령어집합(instruction set) 만 3000개가 넘는데 6502는 명령어집합이 56개로 적습니다. 즉 심플한 구조입니다.

 

단순하지만 폰노이만 구조로 구현한 CPU이며 있을 건 다 있습니다.

 

 

코모도어 에뮬레이터 VICE 다운로드

 

코모도어 128는 코모도어 64의 후계기종으로 6502 를 사용했습니다.

 

워낙 오래전의 시스템이지만 에뮬레이터를 사용해서 재현해볼 수 있습니다.

 

VICE라는 에뮬레이터에는 코모도어 128 등 다양한 기종의 에뮬레이션이 가능합니다.

 

VICE download | SourceForge.net

 

VICE

Download VICE for free. Versatile Commodore Emulator. VICE is an emulator collection which emulates the C64, the C64-DTV, the C128, the VIC20, practically all PET models, the PLUS4 and the CBM-II (aka C610). It runs on Unix, MS-DOS, Win32, OS/2, Acorn RISC

sourceforge.net

위의 링크에서 다운로드 받을 수 있습니다.

 

간단한 예제

다운로드를 압축 풀면 bin 폴더 안에 실행파일이 여러개 있습니다. 코모도어 128은 x128 입니다.

 

에뮬레이터 화면이 나오면 간단한 예제를 실행하여 봅니다.

 

메모리 덤프

D B00

D 는 메모리를 덤프합니다. B00 부터 한페이지에 메모리를 덤프합니다.

 

 

레지스터에 로드

LDA : A레지스터에 적재합니다. A는 누산기입니다.

LDX : X레지스터에 적재합니다.

LDY : Y레지스터에 적재합니다. 

 

#숫자는 실제 레지스터에 입력하는 값을 말합니다.

A B00 LDA #5

LDX #5
LDY #2

 

처음에 LDA #5 로 시작하면 다음 명령어를 입력하도록 메모리 주소가 나옵니다.

 

주소가 2바이트 씩 올라가는 것은 LDA #5 같은 경우A9 05 라는 8바이트 2개에 대응하기 때문입니다. A9 은 16진수이고 10진수로는 169 입니다. 이진수로는 10101001 00000101 이고 이게 기계어입니다. 앞부분이 operator 연산명령이고 뒷부분이 숫자값(값이나 메모리 주소) 입니다.

 

LDA 는 니모닉이라는 어셈블리어이고 숫자로 0과1로 나열되면 기계어입니다.

 

LDA B0C

LDA 하고 숫자만 나온 경우는 메모리 주소입니다. #는 값 아무것도 없으면 메모리 주소라는 점은 헷갈릴 수 있으니 주의합니다.

 

B0C를 보면 값을 저장하는데 거꾸로라는 것을 볼 수 있습니다. 이렇게 거꾸로 저장하는 방식을 little endian 이라고 합니다.

 

BRK

BRK는 break 입니다. 명령어 코드를 보면 0000 0000 으로 되어 있습니다.

 

M 0

으로 메모리의 상태를 확인할 수도 있습니다.

 

6502의 인스트럭션 세트(명령어 세트)는 아래와 같은 표로 정리가 되어있습니다. 왼쪽 줄에서 찾고 오른쪽 줄로 매치시키면 하나의 명령어가 나옵니다.

 

 

6502 Instruction Set

  *   16-bit address words are little endian, lo(w)-byte first, followed by the hi(gh)-byte. (An assembler will use a human readable, big-endian notation as in $HHLL.) **  The available 16-bit address space is conceived as consisting of pages of 256 by

www.masswerk.at

요약

6502를 눈여겨 본건 NES 에뮬레이션 게임(닌텐도)에 관한 블로그를 읽다가 였습니다.

 

일단 6502 어셈블리는 맛만 보는 정도로 정리 해두겠습니다.

 

저도 처음이라 하나씩 정리해 나갈려면 시간이 걸릴 것 같은데요.

 

서양권에서도 이런 것을 가르치는 교육기관은 없기 때문에

 

또 워낙 오래전 CPU라 6502 에 관한 자료는 별로 없습니다.

 

어셈블리어는 x86 기준이기 때문입니다. 6502 같은걸 배울리가 없죠.

 

 

그나마 6502에 관해 최근에 업데이트된 영문자료가 좀 있어서 시간날 때 마다 하나씩 정리해볼까 합니다.

 

instruction set 이 50가지 정도기 때문에 3000개인 x86보다는 더 빨리 배우지 않을까 싶습니다.

 

스크린을 보면 뭐랄까 약간 추억돋기도 하고요. 어렸을 땐 CPU가 아니라 모니터 스크린만 봐도 재미있었는데

 

원리 같은 것은 상상도 못했죠.

 

그런데 코딩을 계속하다 보면 호기심이 생기는 것도 사실입니다.

 

Retro 레트로라고 하죠. 과거의 기술을 수집하는 재미도 나름 있습니다.

 

6502와 코모도어 128은 Retro 테크 콜렉션에 추가입니다.

공유하기

facebook twitter kakaoTalk kakaostory naver band