2013년 1월 27일 일요일

FC-100 에뮬레이션을 위한 PC-6001 부트벡터 분석

PHC-25에뮬레이션 작동이 미궁에 빠지고 나서(여기참고)
그 비슷하다는 PC-6001을 다시 파기 시작했습니다.

결론부터 말씀드리자면 FC-100은 PHC-25변형판이 맞는듯 합니다.
그렇다고 딱 PHC-25와 같은것은 아니고 PC-6001의 특성을 많이 가지고 있다고 봐야합니다.

우선 하드웨어에서 PC-6001은 RS-232가 있고 페이지 제어를 위한 8255를 가지고 있습니다.
그러나 PHC-25는 RS-232가 없고 페이지를 제어하지 않습니다.

FC-100은 RS-232가 있는것으로 확인되었으나 8255를 가지고 있지 않습니다.
대신 다른 IO포트를 통해 페이지를 제어하는것으로 생각됩니다.

PC-6001의 에뮬레이터는 아래의 홈페이지에서 받을 수 있습니다.
http://papicom.net/p6v/index.html
순 일본어라서 잘 모를수도 있는데 최신버젼의 XP 32비트용은 아래에 링크되어 있습니다.
PC-6001V 에뮬레이터 Windows 32Bit

이런종류의 에뮬레이터는 항상ROM을 어둠의 경로를 통해 받아야 합니다.
제가 받은 링크를 올립니다.
PC-6001 ROM(1981)

받은 롬파일은 에뮬레이터의 하위디랙토리중에 "\rom"에 넣고 실행하면됩니다.



뜨는 화면을 보면 알 수 있듯이 FC-100과 상당히 흡사합니다.
아마도 FC-100에서도 MS의 흔적이 있듯이 PC-6001도 MS에서 작업한 모양입니다.

이것을 가지고 디스어셈블을 한다음 분석을 합니다.(디스어셈블러)

PC-6001의 부트스트래퍼는 아래와 같습니다.

0000 C3100E    JP      0E10H

이에 따라 0E10H의 주소의 내용을 보면 아래와 같습니다.


0e10 F3        DI    
0e11 213401    LD      HL,0134H
0e14 1100FA    LD      DE,0FA00H
0e17 01B700    LD      BC,00B7H
0e1a EDB0      LDIR  
0e1c 11E5FA    LD      DE,0FAE5H
0e1f 0E58      LD      C,58H
0e21 EDB0      LDIR  
0e23 218AFF    LD      HL,0FF8AH
0e26 061E      LD      B,1EH
0e28 36C9      LD      (HL),0C9H
0e2a 23        INC     HL
0e2b 23        INC     HL
0e2c 23        INC     HL
0e2d 10F9      DJNZ    0E28H            ; (-07H)
0e2f 3100F9    LD      SP,0F900H   <- 스택상위주소
0e32 ED5E      IM      2                 <- 인터럽트 모드 2 설정
0e34 3EFA      LD      A,0FAH
0e36 ED47      LD      I,A
0e38 3A27FA    LD      A,(0FA27H)
0e3b D3B0      OUT     (0B0H),A
0e3d 3EC0      LD      A,0C0H
0e3f D393      OUT     (93H),A
0e41 3E0D      LD      A,0DH
0e43 D393      OUT     (93H),A
0e45 3E09      LD      A,09H
0e47 D393      OUT     (93H),A
0e49 DB90      IN      A,(90H)
0e4b AF        XOR     A
0e4c D391      OUT     (91H),A
0e4e 3E03      LD      A,03H
0e50 D393      OUT     (93H),A
0e52 3E05      LD      A,05H
0e54 D393      OUT     (93H),A
0e56 064F      LD      B,4FH
0e58 CDBF19    CALL    19BFH
0e5b CDDE10    CALL    10DEH
0e5e 3E0C      LD      A,0CH
0e60 CD8F0E    CALL    0E8FH
0e63 FB        EI    
0e64 CD5C1A    CALL    1A5CH
0e67 3E2C      LD      A,2CH
0e69 CD8F0E    CALL    0E8FH
0e6c CD5810    CALL    1058H
0e6f CD511B    CALL    1B51H
0e72 CDB31B    CALL    1BB3H
0e75 C34000    JP      0040H

이것을 보면 소프트웨어적으로는 FC-100과 상당히 닮아 있음을 알 수 있습니다.
그렇지만 인터럽트 모드를 보면 꼭 그렇지도 않습니다.

FC-100과 PHC-25는 인터럽트 모드 1을 사용하는것으로 확인됩니다.
그러나 PC-6001은 인터럽트 모드 2를 사용합니다.
인터럽트 모드 2는 인터럽트 벡터가 데이터 버스에 올라오는 형태로서
인터럽트 모드 1과는 완전히 다르며 하드웨어적인 구성에서 차이가 크다고 할 수 있습니다.

결과적으로보면 에뮬레이터를 수정해서 작업하는 관점에서보면
PHC-25를 수정하는 편이 좀더 낫다고 볼 수 있습니다.

그러나 PHC-25 자료만으로는 불충분하고 RS-232(8251)쪽 자료와
메모리 페이지 처리에 대해서는 PC-6001의 자료를 참고해야 할듯합니다.

댓글 없음:

댓글 쓰기