Z80는 자일로그 사에서 개발한 마이크로 프로세서입니다.

 

1976년에 발표되었으니 45년이 되었습니다. 인텔출신 8080 개발자가 설계했기 때문에 8080과 바이너리 수준에서 호환되는 마이크로프로세서 입니다.

 

NEC의  PC와 MSX 컴퓨터, 세가의 게임기, 닌텐도 게임보이 등에 탑재되었습니다. 일본을 중심으로 한 아시아쪽 게임기에 많이 사용된 것이네요.

 

또 닌텐도의 NES는 6502 를 사용한 반면 세가가 택한 CPU는 Z80이었다는 점도 눈여겨 볼 수 있습니다. 당시 닌텐도와 세가는 콘솔 시장에서 가장 뜨거운 라이벌 관계였습니다. 지금은 소니와 엑스박스 닌텐도가 각각의 영역이 있고 PC게임 온라인 게임들도 다 수십억의 유저를 보유하고 있지만 PS1이 등장하기 전까지 콘솔은 닌텐도와 세가가 양분했었습니다.

 

일본도 버블시대라 돈을 무리하게 투자하다 보니 16비트 까지는 시대를 앞선 기술과 그래픽을 보여준 것은 사실입니다. 또 제대로된 게임을 만들 수 있는 서드파티가 막강했죠.

 

많은 회사들이 태동기이기도 하고 지금까지 온갖 시절을 겪고 인수합병하여 살아남은 게임 소프트웨어 회사들은 별이 되었죠. 한때 작은회사들이 많이 넘어갔는데 이제는 잘 안망하는 것 같더군요.

 

스퀘어에닉스나 반다이남코의 인수합병은 게임 유저들에게는 가장 충격적인 사건중의 하나였습니다.

 

당시에는 회사마다 가진 개성이 확실했기 때문이죠.

지난번에 코모도어 에뮬레이터로 6502 를 다루어 봤으니 이번엔 아시아에서 많이 사용한 머신에 사용한 Z80 어셈블리어에 대하여 알아보겠습니다.

 

Z80 에뮬레이터 WinApe

 

암스트래드 마이크로컴퓨터 (암스트래드 CPC) 의 에뮬레이터인 WinApe를 사용해보겠습니다.

 

베이식, 어셈블러, 디버거가 함께 있기 때문에 사용하기에 편리합니다.

 

Z80 명령어 셋은 Z80이 탑재된 어떤 컴퓨터에서도 어셈블리어를 통해 사용할 수 있는 것 입니다.

 

그래서 어셈블리어를 사용해서 프로그램을 합니다.

 

기종이 다르다는 것은 MSX, NEC, 세가게임기 등 Z80 마이크로프로세서에 각자의 하드웨어를 부착하여 다른 이름을 붙여놨기 때문입니다.

 

Z80 어셈블리어는 바이너리 코드(1와 0의 기계어) 전단계이기 때문에 한CPU에 대한 어셈블리어를 알면 다른 호환 기종으로도 변환이 가능합니다. 그 기종의 운영체제에 맞는 컴파일러와 링커만 있으면 됩니다.

 

Z80 을 배우고 싶다면 어떤 에뮬레이터로 시작해도 상관이 없다는 말입니다.

 

처음에는 편리한 툴을 제공하는 WinApe 도 좋습니다. 이 좋은 프로그램이 무료입니다.

 

 

어셈블리어 프로그래밍 - 레지스터값 출력 -

C언어 이상의 고수준 언어(high level language)를 배울 때는 항상 Hello World 를 출력하는 전통이 있지만 어셈블리어는 꼭 그렇지 않습니다.

 

Hello World 를 쉽게 출력하는 건 고수준 언어니까 가능한 것이고요,

 

보통 어셈블리어에서는 범용 레지스터를 확인하는 것에서 시작합니다.

 

레지스터는 CPU에 달려있는 임시저장공간입니다. 메모리에 비해 속도가 엄청나게 빠르죠.

 

메모리가 데이터를 저장하는 곳이라면

 

레지스터는 메모리에서 가져온 데이터를 프로세서가 재빨리 처리하는 작업대로 생각할수 있습니다.

 

 

 

어셈블러를 클릭해서 어셈블러창을 오픈합니다.

 

아래 코드를 입력후 상단 메뉴에서 assemble 을 클릭합니다.

Org &8000
ld a,7
inc a
ld b,2
add b
ld (&7000),a
ret

 

어셈블하면 표시가 됩니다.

 

오케이를 클릭하고 다시 돌아와서 두번째에 브레이크 포인트를 설정합니다.

 

이것을 안하면 프로그램이 그냥 종료되버립니다.

 

베이식으로 돌아가 call &8000 을 실행합니다. 이 call은 함수호출처럼 메모리 8000 을 프로그램 카운터로 실행하는 명령어입니다.

 

디버거에 들어가면 이제 정보를 확인할 수 있습니다.

 

이 창만 이해해도 Z80 CPU의 동작 방식에 대해서 잘 이해할 수 있습니다.

 

일단 왼쪽 상단에 보면 INC LD 이런 코드가 한줄씩 쭉 나오죠? 이게 어셈블리 명령어입니다. 숫자로 된 것이 기계어 코드죠. 3E 가 LD A 이고 06이 LD B입니다. 이들은 16진수입니다. (헥사 코드)

 

오른쪽 상단에는 레지스터가 모여있습니다. PC 8002 지금 8002번 실행할 차례다. AF의 왼쪽 두개는 A레지스터입니다. BC의 왼쫀 두개 숫자가 B레지스터죠.

 

아래 왼쪽은 메모리 덤프와 오른쪽은 스택입니다.

 

레지스터의 모든 것을 여기서 설명할 수는 없지만 처음부터 다 알필요 없습니다.

 

어셈블리어만 작성해봐도 상당히 CPU 의 구조를 알 수 있다는 장점이 있습니다. 일단 8비트니까 간단하니까요.

 

최근의 CPU는 너무 복잡해져서 점점 배우기 힘들어 집니다.

 

여기서 한스텝씩 실행해보면서 레지스터와 메모리값의 변화를 바로바로 확인할 수 있습니다.

 

Hello World 는 아니지만 제대로 레지스터가 바뀌는 것을 확인하면 프로그램이 충분히 잘 작동하고 있다는 것입니다.

 

어셈블리어는 WinApe 처럼 디버거가 레지스터값을 제대로 표현할 수 있는 툴이 좋습니다.

 

여기까지 가능하다면 Z80 프로그래밍을 시작할 준비가 된 것 입니다.

 

Z80의 instruction set 은 아래 사이트에서 확인가능합니다.

 

Z80 instruction set - ClrHome

 

Z80 instruction set - ClrHome

E ret po pop hl jp po,** ex (sp),hl call po,** push hl and * rst 20h ret pe jp (hl) jp pe,** ex de,hl call pe,** EXTD xor * rst 28h

clrhome.org

WinAPE : Windows Amstrad Plus Emulator : Downloads

 

WinApe 에뮬레이터입니다.

 

WinAPE : Windows Amstrad Plus Emulator : Downloads

Contribute to WinAPE WinAPE is provided free of charge, but a lot of time and effort goes into it's development. It's always nice to receive good feedback, and that's what keeps me going with the project. I often have to take time off from other paying pro

www.winape.net

 

 

프로거

앰스트래드 컴퓨터도 게임이 가능하군요. 프로거 크레딧이 있는 것을 보니 80년대에 미국 게임센터(오락실)에서 돈넣고 플레이 하지 않았을까 상상해봅니다. 이런 투박한 게임도 당시엔 돈을 넣고 해야했겠죠. 아이폰이 없던 40년전이니까.

 

프로거는 막상해보면 쉽지가 않네요;; 80년대에 돈넣고 했으면 돈좀 썼을듯 합니다;;;


Z80에 대하여는 나중에 여력이 되면 추가 튜토리얼을 만들어 보겠습니다.

 

국내에는 저수준 프로그래밍의 자료가 별로 없는데 아마 잘 안찾아서겠죠.

 

하지만 국내에도 굉장히 오래전부터 저수준 프로그래밍과 시스템으로 하시는 분들이 많은 것으로 알고 있습니다.

 

또 젊은 친구들중에 해킹쪽 일을 하는 경우 뭐 너무 잘하죠.

 

다만 이런 분들이 기술을 워낙 빨리 배우다 보니 웹상에서 쉽게 일상적 언어로 풀어내는 자료가 별로 없기 때문에 최근에는 영어 자료를 많이 찾고 있습니다.

 

아무래도 사용자 폭이 넓은 영어 사용자들(유럽, 미국)의 자료중에는 쉬운 설명의 튜토리얼이 많습니다.

 

좀 더 찾아서 나름대로 쉽게 설명하는 자료를 많이 만들려고 노력하고 있습니다.

 

아직 의욕이 있을 때 열심히 해야겠군요.

 

코모도어 64 에뮬레이터 베이직 프로그래밍 Hello World | C64 Basic | 8비트 가정용컴퓨터의 역사

 

코모도어 64 에뮬레이터 베이직 프로그래밍 Hello World | C64 Basic | 8비트 가정용컴퓨터의 역사

코모도어 64는 전세계에서 가장 많이 팔린 단일 PC 기종입니다. 1980년대 초반 부터 단종까지 천만대를 넘게 팔았다고 합니다. 8비트 6502 마이크로 프로세서를 사용하는 애플2 같은 최초의 가정용

digiconfactory.tistory.com

6502 어셈블리어 1 - 코모도어 128 에뮬레이터

 

6502 어셈블리어 1 - 코모도어 128 에뮬레이터

mos technology 6502 CPU 6502 는 통상 mos technology 6502 를 부르는 단어입니다. 6502는 모토롤라 6800 프로젝트를 위해 일하던 팀 MOS Technology에 의해 개발되고 1975년도에 출시된 가정용 PC를 위한 8비트..

digiconfactory.tistory.com

 

공유하기

facebook twitter kakaoTalk kakaostory naver band