제대로 된 패미컴 게임 개발을 위해선 짧은 튜토리얼이나 개발 위키에 나온 것만으론 정보가 부족하다 느껴졌다.
그래서 오늘 찾은건 인터넷 아카이브 사이트에서 찾은
6502 assembly language programming이란 책이다.
https://archive.org/details/6502_Assembly_Language_Programming/page/n7/mode/2up
패미컴은 이 mos사에서 만든 6502 프로세서에서 십진수 모드만 빠진 형태라고 하니 이 책으로 기반을 다지고
패미컴 위키를 보며 참고 하면 될거 같다.
2일차에서 배운 내용은 6502 프로세서의 특징이다.
1.6502 프로세서 특징
6502는 마이크로프로세서로서 여러 논리 회로와 레지스터 메인 스토리지로 구성 돼 있다
레지스터는 3가지 범용 레지스터가 있고 몇개의 특별한 레지스터가 있다 프로그램 카운터를 제외하면 모두 1바이트다(프로그램 카운터는 2바이트)
2.레지스터 종류
2-1.범용 레지스터
accumulator
x 인덱스 레지스터
y 인덱스 레지스터
2-2.특수 레지스터
스택 포인터(후입선출 개념의 저장 공간으로 01로 시작하는 메모리의 한 부분이다)
프로그램 카운터(다음 명령이 무엇인지 저장하고 있는 메모리다)
스테이터스 레지스터(일곱가지의 on off 플래그를 가지고 있다) 등이 있다.
스테이터스 플래그
1.carry flag - carry인지 borrow인지(연산에 따른 올림 내림) 보여준다.
2.zero flag - 결과가 0인지 아닌지 알려준다.
3.sign flag - 최상위 8번째 비트를 보여준다(부호를 사용하는 값을 판단할때 용이하다.)
4.overfllow flag - 7번째 비트의 결과를 보여준다(7번째 비트가 넘어가서 오버플로우가 났는지 확인할때 사용함)
5.interrupt disable flag - 프로세서에게 인터럽트를 허용할지 말지 알려준다. 인터럽트에 대한 개념은 뒷챕터에서 나오는 듯 하다.
6.break flag - 브레이크 상태를 알려준다는데 뒷챕터에서 나온다고 한다.
7.decimal flag - 프로세서에게 어떤 종류의 진법을 사용하는지 보여준다. (2진수인지 10진수인지)
원서를 보면서까지 해야하나 싶으면서도 조금씩 배우는 맛이 있는거 같다. 복리의 법칙이라고 또 꾸준히 하면 태산처럼 내 스킬도 늘어날 테니 포기하지만 말자는 마인드로 열심히 해봐야겠다.
오늘도 화이팅!