2013년 6월 6일 목요일

Appler 디버깅하기 ___ 2

일단 빌드해서 startup.asm은 무사히 넘어갔지만,
다음으로 걸린 부분은 floppy.inc 입니다.

emulate.asm을 컴파일하다가 floppy.inc에서 에러가 났습니다.

에러가 난 부분입니다. 역시 잘 모르겠지만 뭔가 기묘하네요.

CurrentDrive와 OtherDrive를 찾아보니 저렇게 선언되어 있는데 이것도 기묘합니다.OTL

우선은 xchg라는 인스트럭션이 뭔지 몰라서, 다시 터보 어셈블러 퀵 레퍼런스를 참조했습니다.
xchg는 값을 바꿔주는 거군요. 일종의 swap이네요.

그런데 이번에 문제가 되는 부분은 앞서보다 복잡하네요.
CurrentDrive/OtherDrive가 사용되는 곳이 많아서 종잡기도 힘들고,
선언된 곳의 저 모양새는 대체 무엇인지 이해가 되질 않습니다.

Drive_S가 배열인걸까요?
그래서 0번은 CurrentDrive, 1번은 OtherDrive로 사용되는 거...
이건 매뉴얼을 다시 찾아 보기로 하고...

Drive_S라는 걸 찾아보니 일종의 structure로군요.
Globals.inc에 선언되어 있습니다.

위에서 보았던 CurrentDrive와 OtherDrive의 선언 부분의 의미를 알아냈습니다.
CurrentDrive    Drive_S    <0>
Drive_S 타입으로 변수 CurrentDrive를 선언하면서, 초기값 0을 할당한 것입니다.
Drive_S는 스트럭쳐로 여러개의 값을 가져야 하지만 ?로 표시되어 있는 ID에 대한 것만 초기화 해 주는 것인 듯 합니다.

터보 어셈블러의 User's Guide 12장에 있는 해당 부분은 다음과 같습니다.



그런데, 아직도 에러가 난 부분의 의미가 뭔지 모르겠습니다.
CS:OtherDrive[SI-1]-CurrentDrive

각 부분의 의미도 정확히 파악이 되지 않으니 전체가 뭘 의미하는지도 모르겠고,
[]이 배열인 듯 하면서도, 선언된걸로 보면 배열이 아니었고...상상력이 부족한걸까요?

좀 크게 보겠습니다.
DeviceSelect 프로시져
하나의 프로시져 였습니다. DeviceSelect라는...
경우에 따라 DeviceSelect10 혹은 DeviceSelect20을 수행하는데, 문제가 되는 부분은 DeviceSelect10인 경우입니다.

이 프로시져를 호출하는 경우를 좀 봐야겠습니다.
ResetFloppy 프로시져

C0EBr/C0EBw 레이블

아래쪽의 C0EBr/C0EBw는 레이블 이름도 이상하고, 시작이 어디서부터인지도 명확하지도 않고 헷갈립니다.
반면에 위쪽의 ResetFloppy는 뜻이 비교적 명료합니다.

좀 더 자세히 분석해 보기 전에 몇가지 모르는 것들을 찾아보았습니다.

Save/Restore 매크로

자주 나오는 Save/Restore는 매크로였고 간단하게 push, pop으로 구현되어 있습니다.

IRP 지시어

IFNB 지시어
매크로에서 사용된 IRP와 IFNB 지시어에 대한 설명이구요,
IRP로 Repeat를 하는데, 인자들 리스트를 r로 정의하였고 IFNB에서 리스트가 비어있는지 검사하면서 반복하는 듯 합니다.

even 지시어
프로시져의 시작부분에 있던 even이라는 지시어에 대한 설명입니다.
16 bit memory alignment를 위해서 짝수번지에 맞추라는 의미인 듯 합니다.

lods 인스트럭션
메모리에 있는 것을 읽어서 al(혹은ax, eax)에 넣는 작업을 합니다.
REP 혹은 LOOP로 반복구간을 정하나 봅니다.


다시 소스를 확인해 보겠습니다.

호출시 al에 담긴 값이 CurrentDrive의 ID와 일치하면 DeviceSelect20을 수행하고 프로시져를 마칩니다. 즉, 바꿀 필요가 없다는 의미이겠죠.
그렇지 않고 바뀌어야 한다면 WriteTrack을 호출하고 돌아와서 CurrentDrive의 값을 하나씩 읽어와서 OtherDrive에 있는 값과 바꿔치고, OtherDrive의 값을 다시 CurrentDrive에 넣습니다.
여기에서 [SI-1]이 사용된 이유는 그 위에서 lods byte ptr CS:[SI]를 수행하면서 si의 값이 증가되었기 때문인 듯 합니다.
그렇다면 어째서 CS:OtherDrive[SI-1]-CurrentDrive일까요?
CurrentDrive를 왜 뺀걸까요?

사실 모르겠습니다. 그리고 CurrentDrive를 빼지 않는게 맞는 것 같습니다만....
일단 저 부분을 제 생각대로 고치고, 나중에 확인해 보겠습니다.
-CurrentDrive 제거

뜨악...그래도 에러?
대충 메시지 보고 찍어서 다시 수정해 보았습니다.
두번째 에러는 실수로 건드렸나 봅니다.
byte ptr 추가

이제야 빌드 완료입니다.

음...디버깅을 한다고 했는데, 겨우 빌드까지만 다 했습니다.
빌드만 했는데 진이 다 빠진 느낌입니다.
오늘은 여기까지만....

Appler 디버깅하기 ___ 1

앞선 게시물에서 언급했던 Appler라는 에뮬레이터를 디버깅해 보기로 했습니다.
http://re-coder.blogspot.kr/2013/06/dosbox-ms-dos.html

소스가 온통 어셈블러 뿐이고, 틀림없이 MS-DOS의 System Call을 사용할 것이 불을 보듯 뻔하지만, 인터넷에 널린 자료들을 이용해서 한번 도전해 보겠습니다.

일단 디버깅을 하기 위해서,
소스를 빌드해야겠지요.
(이를 위해서 터보 어셈블러 5를 구해서 설치했습니다.)

에러가 발생하네요

소스를 보았지만 뭐가 잘못된 건지 모르겠습니다.

다시 인터넷에서 터보 어셈블러의 매뉴얼을 구해서 "Illegal immediate"에 대해서 찾아 보았습니다.
도움이 안되는군요

이젠 맨땅에 헤딩하기...트라이얼 앤 에러...시행착오...

일단 의심스러운 SlotLen을 지워 봤습니다.

startup.asm은 컴파일 성공입니다. 그러니까 SlotLen이 문제라는 의미군요.

혹시나 []안에서 덧셈이 문제일지도 모르니 상수로 더했을 경우엔?

역시 덧셈은 문제 없습니다. SlotLen이 문제임이 더 확실해 집니다.

만약에 SlotLen 하나면 쓴다면?

역시 안됩니다. 결론은 SlotLen

하지만 어떻게 해야 할까요?
SlotLen을 무시할 수는 없고, 값의 의미와 변경여부를 따져서 상수로 대체하거나 다른 레지스터를 사용할 수도 있겠지만 무언가 방법이 있지 않겠냐 싶습니다.
터보 어셈블러에 종속적인 표기 방법의 문제처럼 보이니까요...

몇줄 위에 보이는 것처럼 offset을 붙여보았습니다.

소용이 없습니다.

WORD라는 type으로 지정을 해주면 될까요?

안되는군요.

혹시 앞에 ds: 세그먼트 때문일까요?

아니군요. 

좀 기괴하지만 혹시 이건....

역시 안됩니다. 되면 이상한건가요?

이것도 기괴하지만 매뉴얼에서 얼핏 본 표기방법의 변형

안되구요.

역시 매뉴얼에서 얼핏 본 표기방법의 변형 2번째

마찬가지로 안됩니다.

혹시나 해서 어디서 많이 본 듯한 식으로 고쳐 보았습니다.

헐...되네요.

그럼 원래의 소스와 의미가 맞도록 고쳐서는...

역시 됩니다.

실제로 저렇게 표기했을 때, 실행시에도 정말 같은 효과가 나타나는지는 확인해 봐야하지만 일단은 방법을 찾았습니다.
의외로 어셈블러에서 이런 부분때문에 어려움을 겪게 되는군요.
오히려 하드웨어적인 부분이나, 인스트럭션과 레지스터의 사용 조건이 어려울거라 생각했는데 말입니다.

잠깐 앞서 수정했던 부분을 조금 더 살펴 보겠습니다.
문제가 되었던 SlotLen이라는 것이 어떻게 사용되는지 살펴보았습니다.

SlotLen이 선언된 부분

SlotLen이 사용된 곳은 여기가 전부입니다. 단 2줄.
음... 잘은 모르겠지만 SlotPrg의 길이를 보관하는게 SlotLen이구요,
하나는 C700h에 SlotPrg를 복사할 때 길이를 세는 용도로 SlotLen이 사용되구,
또 하나는 C700h에 복사한 SlotPrg의 다음에 값을 넣을 때 SlotPrg의 길이를 더해주는 용도로 SLotLen을 사용합니다.
결국 SlotLen은 SlotPrg의 길이를 보관하는, 그 값이 바뀌지 않는 상수입니다.
만일 앞서 수정한 부분에서 문제가 생긴다면 상수 9로 대체해도 되지 않을까 싶습니다.

마지막으로 앞에서 수정했던 WORD PTR과 mov에 대한, 터보 어셈블러의 퀵 레퍼런스 가이드의 내용을 참고 삼아 소개하는 것으로 이번 포스팅을 마치겠습니다.

그런데 WORD와 WORD PTR이 뭐가 다른걸까요?




2013년 6월 4일 화요일

에뮬레이터와 어플리케이션의 연계 디버깅?

앞선 포스팅에 이어서 DOSBox와 관련된 문제가 있었습니다.

DOSBox에서 vim을 사용하면서 나온 문제였는데, 특이하게 Linux환경에서만 발생하는 듯 합니다. (MS-Windows에서는 문제가 없음을 확인했으며, 문제의 발생을 확인한 환경은 Ubuntu 10.04였습니다.)

우선 스크린샷으로 문제를 확인해 보겠습니다.

vim으로 test.txt라는 파일을 새로 만듭니다.

파일을 저장하면 정상적으로 저장됩니다

해당 파일인 TEST.TXT가 만들어진 것을 확인할 수 있는데, read-only입니다.

같은 파일을 수정해서 다시 저장해보겠습니다.

저장이 안됩니다!!

DOSBox에서 생성된 파일은 read-only로 생성이 되고, 그래서 수정이 안된다?
그러면 당연히 DOSBox의 문제라고 생각할 수 있으나 vim이 아닌 다른 에디터에서 수정한 후 저장하면 저장이 됩니다.
단지 vim만 저장을 못합니다.

그럼 vim의 문제일까요?
MS-Windows 환경의 DOSBox에서는 문제가 없습니다.
Linux환경이라 해도 VirtualBox에 MS-DOS를 설치해 vim을 사용하면 문제가 없습니다.

아마 vim도 다른 에디터와는 뭔가 다른 방법으로 파일을 저장하고 있으며,
DOSBox도 Linux 환경에서는 파일 I/O에 관해 일부 기능에 버그가 있는 것이 아닌가 싶습니다.



여기에서 발생하는 재미있는 문제가 하나 있습니다.
vim에서 문제가 발생하는 부분을 디버거로 트레이스 할 수 있겠지요.
하지만 두개의 제품이 연계하면서 발생하는 문제를 하나만 디버깅해서는 제대로 잡을 수 없을 겁니다.
따라서 vim에서 문제가 발생하는 부분이 다시 DOSBox로 어떻게 이어지는지,
혹은 반대로 DOSBox에서 발생한 문제가 어떻게 vim으로 이어지는지를 확인해야 할 겁니다.

이런 연계 문제를 디버깅하려면 어떻게 해야 할까요?
Linux에서 gdb로 DOSBox를 디버깅하면서 DOSBox에서는 터보디버거로 vim을 디버깅하나요?
gdb와 터보디버거가 연동할 수 없는 환경이니 의미가 없을겁니다.

만약에 DOSBox에 내장디버거가 있어서 vim을 자체 디버거로 디버깅할 수 있다면 어떨까요?
그 상황에서도 gdb가 디버깅하는 DOSBox는 정상적인 루틴이 아닌 내장디버거에 의해 각종 trap이 설치된 변형된 루틴일 수도 있어 오히려 디버깅이 어려울 수도 있을겁니다.

이상적으로는 DOSBox를 디버깅하는 디버거가, DOSBox라는 에뮬레이터와 그 안에서 돌아가는 vim이라는 application이 존재하는, 일종의 nested? embedded?임을 인식해야만 할 겁니다.

현실적으로는 디버거가 환경을 인식한다 하더라도 효율적인 디버깅 방법도 고민스러우며, 얼마나 다양하게 쓰일 수 있는냐도 의심스러운 부분입니다.
따라서 통상적으로 분산 시스템의 연계 문제를 디버깅할 경우에 synchronization을 방해하지 않고 디버깅하는 방법은.......
메시지를 기록해서 이를 분석하는 방법입니다.

쉽지는 않겠지만 한번 디버깅을 해 보겠습니다.

DOSBox는 얼마나 충실하게 MS-DOS를 에뮬레이션하는가

앞서의 게시물에서 VirtualBox에 MS-DOS를 설치하는 방법을 설명하였습니다.

하지만 정작 설치된 MS-DOS를 사용하다보니 불편한 점이 하나 둘씩 나타나게 되더군요.
앞서 언급했듯이 파일을 전송하거나 받는 것이 매우 불편하고,
마우스도 드라이버는 따로 잡아주어야 작동을 하고,
조이스틱은 에뮬레이션도 곤란한듯이 보입니다.
비교적 많은 프로세스 파워를 필요로 하는 것도 낭비적인 요소로 보입니다.

이러고보니 자꾸 DOSBox와 비교가 되더군요.
확실하게 VirtualBox에 MS-DOS를 설치해 사용하는 것보다 DOSBox가 월등히 장점이 많은 것은 사실입니다만, DOSBox가 얼마나 정확하게 MS-DOS를 재현해내는가 의심이 드는 사건이 있었습니다.

MS-DOS 환경에서 구동되는 Appler라는 Apple][ 에뮬레이터를 실행했을 때 발생한 문제입니다.
우선 DOSBox에서 실행한 화면입니다.

Appler 구동 화면

디스크이미지를 선택하기 위한 디스크매니저 화면
디스크매니저의 화면을 자세히 보면,
우측상단의 Path&Filter 부분이 좀 이상해 보이지 않습니까?
정상이라면 C:\EMULATOR\APPLER\*.DSK,*.NBL이 되어야 합니다.(APPLER뒤에 백슬래쉬)
그래서인지 그 아래의 Directory 부분도 .과 ..도 보이지 않아서 상위 디렉토리로 이동도 불가능하며, 이 디렉토리에 있어야 하는 APPLER.DSK는 보이지도 않고, 존재하지도 않는 APPLER라는 서브 디렉토리까지 보입니다.
(단지 보이는 것만의 문제가 아니라 실제 작동도 안됩니다.)


처음엔 Appler의 문제라고 생각했는데, VirtualBox에서 확인해 보니 제대로 작동합니다.
VirtualBox에 설치한 MS-DOS에서의 Appler를 실행한 화면을 보겠습니다.

Appler 구동 화면
디스크매니저 화면


Path&Filter도 정상이고 Directory 부분에 모든 폴더와 디스크 이미지가 제대로 보입니다.


과연 DOSBox는 얼마나 믿을 수 있는 걸까요?


Appler를 받을 수 있는 곳
Appler Binary : http://www.sanskritweb.net/apple/
Appler Binary & Source : http://www.zophar.net/apple2/appler.html

2013년 5월 23일 목요일

VirtualBox에 MS-DOS 설치

DOSBox라는 훌륭한 에뮬레이터가 있긴 하지만,
실제 MS-DOS와 얼마나 일치하는 걸까요?

이런 단순한 궁금증 때문에, VirtualBox에 MS-DOS를 설치해서 사용해 보기로 했습니다.
진짜 IBM-PC/XT/AT 호환기종이나 Intel 80386/80486 컴퓨터가 없어서 VirtualBox를 이용하기로 했기에 아쉬움은 있으나....

MS-DOS 설치하기

일단, 한글 MS-DOS 6.2를 구해서 설치하기로 했는데, 기본적인 설치는 그렇다 해도,
CD-ROM 설정하기, Network 드라이버 설치하기, 메모리 최적화 등등 해야 할 일도 많고
당시엔 당연히 했던 것 중에 기억이 나지 않아 헤메기도 일쑤입니다.

우선 기본적인 설치방법은 다음 블로그를 참조해서 도움을 많이 받았습니다.
[한글 MS-DOS 6.2 설치] http://selene0301.tistory.com/235
[CD-ROM 드라이버 설치] http://selene0301.tistory.com/240
[메모리 최적화] http://selene0301.tistory.com/239
[네트웍 드라이버 설치] http://selene0301.tistory.com/238


프로그램 설치/복사하기

하지만 네트웍에 필요한 각종 드라이버를 설치하고 나면 메모리가 많이 부족하여 무언가를 하기에 문제가 많아서 사용을 꺼리게 되더군요.

네트웍을 사용하지 않는 환경에서, 각종 프로그램들을 어떻게 설치/복사 할 것인가가 문제가 되었습니다.

DOSBox의 경우에는 하드디스크로 사용하는 특정 폴더에 파일 복사를 하면 그만이지만, VirtualBox의 경우엔 하드디스크로 사용하는 vdi 파일을 조작할 수 있는 방법이 없기 때문입니다.
MS-DOS 6.2에서는 USB 메모리도 인식이 안되구요.
프로그램을 플로피 디스크에 써넣고 사용할까요? 하지만 플로피 디스크도 없고 드라이브도 없습니다.
결국 마지막으로 사용한 방법은 CD-ROM 이미지인 ISO 파일로 만들어서 VirtualBox에 마운트시켜 사용하는 방법을 사용했습니다.

대부분의 운영체제에는 기본 혹은 무료로 제공하는 ISO 이미지 라이터가 있으니, 이 방법이 약간은 불편해도 무난하지 않나 싶습니다.


Boot Menu 설정하기

그런데 이렇게 사용하기 위해서는 위의 링크에 있는 CD-ROM 드라이버 설치 과정을 필히 거쳐야 하고, 이 과정을 거치고 나면 사용 가능한 메모리가 크게 줄어들게 됩니다.

따라서 CD-ROM을 항상 사용하지 않고 필요한 경우에만 사용하도록 하고 싶어졌습니다.
그 외에도 사용환경에 따라 드라이버를 선택해서 설치하고 싶었는데,
예전에도 이런 방법이 있었다는 생각이 들어서 자료를 찾아 보았습니다.

아직도 인터넷에서 많은 자료를 얻을 수 있습니다만,
제가 찾아서 만든 config.sys와 autoexec.bat은 다음과 같습니다.
config.sys
autoexec.bat
Boot Menu 선택화면

MS-DOS용 프로그램들

MS-DOS에서 무엇을 하든, 공통적으로 필요한 필수 프로그램들이 있기 마련입니다.
몇가지 유용한 프로그램과 MS-DOS에서 사용 가능한 프로그램들을 얻을 수 있는 사이트의 링크를 기록해 보겠습니다.

[VETUSWARE] http://vetusware.com/
회원가입을 해야 프로그램을 다운로드 받을 수 있으며 하루에 다운로드 가능한 프로그램도 제한이 있으나 상당히 많은 프로그램을 보유하고 있는 곳.

[Memories of DOS] https://skydrive.live.com/?cid=85f114e1f7f9a30f&id=85F114E1F7F9A30F%21215
개인이 운영하는 블로그에서 저장소로 사용하는 곳.
블로그의 주소는 http://sirjhswin.egloos.com/

[The Dark Corner BBS] http://www.dcee.net/Files/Utils/

[DOS Navigator] http://www.dnosp.com/e_index.php

[Interesting DOS Programs] http://www.opus.co.tt/dave/indexall.htm


※ 위에 사진으로 대신한 config.sys와 autoexec.bat에 대한 숨겨진 이야기

2013년 5월 2일 목요일

해킨토시 ___ 1

우선 기존에 사용하던 저의 컴퓨터 사양은 다음과 같습니다.





아직도 쓸만한 성능을 보여줍니다. (제 기준에서는요...게임은...어렵지만요)


< MAC OS X 다운로드 받기 >

제게는 해킨토시를 위해 아주 오래전에 받아서 DVD로 만들었던 MAC OS X 10.4 Tiger가 있습니다만, 이 버전은 위의 기존 컴퓨터와 새로 구입한 컴퓨터 모두에서 설치에 실패했습니다.
그래서 최신의 버전을 받아서 설치하기로 했습니다.
MAC OS X 10.8.3 Mountain Lion

.ISO 파일을 받았다면 다행이지만, .DMG 파일을 받았다면 변환이 필요합니다.
.DMG는 맥킨토시에서 사용되는 확장자로, CD/DVD 디스크 이미지가 압축된 파일이라고 합니다. MAC OSX를 애플스토에서 다운로드 받으면 그 중에 저런 확장자의 파일이 포함되어 있다고 합니다.

.DMG를 .ISO로 변환하기 위해서는 UltraISO라는 프로그램을 사용하면 됩니다.
http://www.ezbsystems.com/ultraiso/
상업용 프로그램이라 돈을 내야 하지만 트라이얼 버전으로도 변환은 가능합니다.


< 설치 가능한지 확인해 보기 >

시간을 절약하기 위해서 VirtualBox에서 먼저 설치 시험을 해 보는 것이 조금은 도움이 되는 것 같습니다.
제가 사용하던 기존의 컴퓨터와 같이 구형의 CPU는 MAC OSX에서 지원이 되지 않을 수 있고, 그런 제약 사항은 VirtualBox로도 확인이 가능해 보였습니다.

VirtualBox에 MAC OS X를 설치하는 방법이 설명된 블로그가 있어서 도움을 받았습니다.
http://teia.tistory.com/1012

저 블로그의 설명에서 중요한 점은
MAC OS X (64bit)
EFI 사용 부분 언체크
이 두가지였습니다.
실제로 저 두가지를 다르게 설정했을 때 부팅이 되지 않거나 설치 도중에 멈추는 현상이 있었습니다.

하지만 HackBoot1이 필요한지는 모르겠습니다.
저의 경우엔 HackBoot1이 없어도 설치에 문제가 없었습니다.
다운받은 MAC OS X가 부팅이 가능한 이미지인 경우에는 HackBoot1이 필요가 없지만,
부팅이 불가능한 이미지인 경우에는 HackBoot1을 사용해서 부팅을 해야 했습니다.
그리고 설치한 후에 부팅이 되지 않기에 HackBoot2가 필요했습니다.
(항상 그런건지는 모르겠습니다.)

하지만, VirtualBox가 아닌 별도 컴퓨터에 해킨토시를 설치하기 위해서는 부팅이 가능한 이미지를 찾아야 하며, 설치 후에 부팅이 가능한 방법도 미리 찾아 보아야 하겠습니다.


이 글의 맨 처음에 제가 사용하던 기존 컴퓨터의 사양을 올려 두었는데,
이 컴퓨터로는 해킨토시의 설치가 불가능함을 보여드리려는 의도였습니다.
다음 화면이 설치 중에 멈추어버린 화면입니다.


아마도 컴퓨터의 사양에 따라서 나타나는 메시지가 다를 것이기에,
글의 첫부분에 제 컴퓨터의 사양을, 그리고 여기에는 설치시에 나오는 메시지를 보여드리는 것입니다.
(이 이미지는 부팅이 불가능해서 HackBoot_1.iso로 부팅 후에 진행한 것입니다.)

해킨토시 ___ 0

스마트폰의 앱을 만들어 보고자 하는 생각은 예전부터 있었지만,
스마트폰 없이 생활을 하다 보니 그저 생각만 있을 뿐, 의욕은 바닥을 기고 있었습니다.

그러던 중에 누이가 사용하던 iPhone 3GS를 물려 받았고, 통신사에 등록하지 않고 집안에서 WiFi로만 iPhone을 사용하게 되었습니다.

하지만 iPhone의 앱 개발은 맥에서만 가능한 상황이고,
맥은 없고, 집에서 사용하는 컴퓨터엔 해킨토시 설치도 되지 않고, 돈도 없고...
이렇게 몇달이 지나고 났습니다.

마침 사용하던 컴퓨터를 업그레이드할 필요성이 점점 생기면서,
몇달을 중고 장터를 기웃거리다가 겨우 쓸만한 녀석을 하나 마련하게 되었습니다.


이 컴퓨터의 사양은
인텔 G860 펜티엄 프로세서, H61 칩셋 메인보드, RAM DDR3 4GB, HDD SATA 500GB, NVidia GT610 그래픽카드, DVD-ROM 드라이브 였습니다.

이 즈음에 중고 장터에 난립하는 업자들이 제시하는 가격으로 따지자면 20만원을 훌쩍 넘을 가격의 사양입니다.
통상적인 업자들이 저 가격에 제시하는 사양은,
인텔 G540 셀러론, H61 칩셋 메인보드, RAM 2GB, HDD 80G, 내장그래픽 사용...

저 판매자는 개인이었는데, 운 좋게도 전화번호를 잘못 기재한데다가, 봇물같이 쏟아지는 업자들의 게시물 때문에, 등록한지 하루만에 수십페이지 뒤에서야 찾을 수 있는 외진 곳에 있었기에, 제가 뒤늦게 발견했음에도 몇차례 시도를 해서 겨우 구매를 할 수 있었습니다.

경기도 광주 오포의 깊숙한 곳까지, 한밤중에 네비게이션도 없이 운전해서 간 것이나, 직접 찾아간 덕에 만원 깎아서 15만원에 구매한 것, 기분 좋게 오고나서 생각해보니 전원 케이블도 안가져 온 것 등등 사연도 많았습니다.


아무튼, 같은 가격이면 AMD의 시스템이 가격대비 성능이 뛰어났겠지만 해킨토시를 염두에 두다보니 인텔 계열로 올 수 밖에 없었습니다.
그리고 이어지는 해킨토시 설치의 여정이 시작됩니다.

아직 성공한 것은 아니지만, 참 길고 많은 고난이 예상되기에 하나 하나 시도하면서 바로 글을 작성해 보려고 합니다.
많은 사람들의 노력으로 좋은 정보들이 존재하기에,
누군가는 저와 같은 상황에서 고군분투하리라 믿으며,
그 사람들의 노력과 시간을 조금이나마 줄이는 데 도움이 되길 바라며...