나만의 Commodore 64 카트리지를 건설하십시오

0
28
나만의-commodore-64-카트리지를-건설하십시오
나만의 Commodore 64 카트리지를 건설하십시오

당신은“IEEE Spectrum은 훌륭하지만, 아마도 지역 과학 및 기술 박물관에서 더 많은 것을 경험할 수있는 방법이 있었으면 좋겠습니까?” 글쎄, 나는 당신의 매우 구체적인 소원이 부여되었다고 말한 것을 기쁘게 생각합니다! IEEE 역사 센터 그리고 IEEE 글로벌 박물관 관대 한 기부자의 지원, 스펙트럼‘에스 명예의 전당 미국 박물관과 세계를 돌아 다니기 시작한 여행 전시회에 적용되었습니다.

우리의 명예의 전당은 큰 영향을 미친 마이크로 칩스를 축하합니다. 홀에서 나온 6 개의 칩은“세계를 흔들었던 칩”전시회의 일부로 선정되었으며, 각각의 사용 방법을 구현하는 유물이 있습니다. 선택한 것 중 하나는 8 비트였습니다 6502 프로세서, 그래서 당연히 우리는 a 코모도 64 6502 변형을 사용한 가정용 컴퓨터는 유물 중 하나 여야합니다. 또 다른 생각이 발생했습니다. 왜 C64가 8 비트 CPU를 시연하는 프로그램을 실행하지 않습니까?

C64를 마지막으로 프로그래밍 한 지 35 년 만에 사무실 책상에 앉아 새로운 플러그인 카트리지를 만들었습니다.

C64가 지원되었습니다 플러그인 카트리지 소프트웨어를 배포하는 방법으로, 우리의 데모 프로그램은 하나에 적용되어야했습니다. 매일 아침 박물관 큐레이터는 전시회와 프레스토를 켤 수 있습니다! 데모 프로그램이 즉시 실행되기 시작합니다. 대안은 큐레이터가 데모를 수동으로로드하기 위해 명령을 입력해야했습니다.

그러나이 편의성에는 두 가지 큰 경고가 있습니다. 하나, 데모는 카트리지의 최대 크기 인 16 킬로바이트에만 맞아야합니다. 1980 년대의 표준에 따라조차도 일부 C64 타이틀이 걸려있는 것처럼 이것은 작습니다. 수백 킬로 바이트 디스크 또는 테이프에서 청크에 데이터를로드하여. 둘째, 데모는 작성해야합니다 6502 어셈블리 C64 비디오 하드웨어를 직접 제어하십시오.

Commodore 64 카트리지를 만드는 데 필요한 구성 요소. 카트리지에는 몇 가지 구성 요소 만 필요합니다. 인쇄 회로 보드 [bottom right]프로그래밍 가능한 메모리 칩 [bottom middle]일부 저항, 다이오드 및 커패시터 [top middle]. 그들은 3D 인쇄 쉘에 장착됩니다 [top left and right]. 비디오 출력을 최신 화면과 호환하기 위해 Retrotink-2x Pro 어댑터를 사용했습니다. [bottom left].제임스 프로스트

다행히도, 참석에서 빈티지 컴퓨터 연맹 이벤트 수년에 걸쳐나는 이런 종류의 일을하기 전에 그 어느 때보 다 더 쉬워 질 수있는 무료 또는 저렴한 자원이 많이 있다는 것을 알고있었습니다.

첫 번째 단계는 16KB에서 얼마나 할 수 있는지 알아내는 것이 었습니다. C64의 그래픽 하드웨어는 당시 획기적이며 16 가지 색상의 팔레트로 최대 320 x 200 픽셀의 이미지를 표시 할 수 있습니다. 또한 한 번에 8 개의 스프라이트를 표시 할 수도 있습니다. 각 스프라이트는 이동 가능한 단일 색상 24 x-21 픽셀 비트 맵입니다. 이 힘의 가격은 복잡했습니다. 그만큼 비디오 칩의 제어 레지스터화면 비트 맵, 텍스트 스크린 데이터, 기본 및 사용자 정의 문자 세트, 스프라이트 및 색상 정보는 모두 메모리 전체에 흩어져있는 다른 위치에 있으며 일부 데이터는 실제로 살고 있습니다. 별도의 램 그리고 집시 남자 작은 조각.

그래서 나는 세부 사항으로 앉았다 메모리 맵 그리고 비디오 하드웨어 프로그래밍 안내서 C64에서 사용할 수 있습니다. (이 풍부한 정보는 1980 년대와 대조적으로, 문서가 코모도 자체에서도 흩어 졌을 때). 나는 설명 텍스트, 애니메이션 그래픽 및 스프라이트의 9 개 화면에서 삐걱 거릴 수 있다고 생각했습니다. 사용자 정의 문자 세트와 스프라이트를 포함하여 이러한 화면을 만들면 온라인 C64 그래픽 편집기 덕분에 크게 단순화되었습니다. petscii.krissz.hu. 편집자는 일부 결과를 독립형 어셈블리 프로그램으로 출력 할 수 있으며 데모 코드에서 서브 루틴으로 적응했습니다.

나는 운이 좋은 발견을 위해 충분한 공간을 남겼습니다. 나는 최소한 하나의 풀 스크린 비트 매핑 이미지를 표시하고 싶었지만 사전 지정된 이미지에는 카트리지 용량의 절반 인 8kb의 데이터가 필요할 것입니다. 대신 나는 게임의 시대부터 프로그래머들의 고전적인 해킹을 사용하기로 결정했습니다. 악당 그리고 엘리트: 수학 구조에서 무료 데이터를 절차 적 생성.

내가 운이 좋은 곳은 다음과 같습니다. 나는 C64의 소스를 출판 한 Marcello M.의 작품을 만났습니다. 조립 프로그램 이로 인해 다중 색상 프랙탈이 빠르게 만들어졌습니다 만델 브로트 세트 3.3kb의 코드 사용. Marcello의 축복으로 나는 그의 코드를 또 다른 서브 루틴으로 통합했습니다.

C64 소프트웨어 작성을위한 최신 도구

코딩은 무료를 사용하여 수행되었습니다 IDE 65XX 그리고 킥 어셈블러 데스크탑 소프트웨어. 인기있는 C64를 사용하여 코드를 테스트 할 수있었습니다. 부사장 에뮬레이터런타임 버그를 찾기 위해 라이브 메모리 내용을 검사하는 것과 같은 편리한 일을 할 수있었습니다.

상위 8kb를 차지하는 커너 롬이있는 64 킬로바이트의 RAM을 보여주는 다이어그램, 4kb의 문자 ROM, 그리고 8kb의 기본 ROM을 보여줍니다. 다른 열은 캐릭터 ROM과 동일한 위치에 I/O 및 Color RAM을 보여주고 메모리가 낮은 두 개의 그림자 ROM 위치를 보여줍니다. 마지막으로 세 번째 열에는 기본 ROM과 그 아래의 메모리가 겹치는 16kb 카트리지 ROM을 보여줍니다. Commodore 64의 RAM의 영역은 시스템 ROM, 비디오 컬러 메모리 및 캐릭터의 비트 맵과 같은 것들에 매핑되었으며, 후자는 실제로 비디오 하드웨어에서 액세스 할 때 RAM의 여러 위치에 매핑되었습니다. 이러한 매핑 중 일부는 겹쳤습니다. 16kb 카트리지를 삽입하면 기본 통역사를 저장하는 ROM을 자동으로 비활성화했습니다. 제임스 프로스트

다음 단계는 물리적 카트리지를 만드는 것이 었습니다. 다시 말하지만, 이번에는 카트리지를 만들기 위해 납땜 된 소수의 구성 요소가 필요한 5 달러 인쇄 회로 보드 형태로 현대적인 도움이 있습니다. 이 구성 요소에는 내가 선택한 프로그래밍 가능한 ROM 칩이 포함되어 있습니다. eBay에서 $ 3. 내 신뢰할 수있는 메모리 칩에 코드를 태웠다. TL866 프로그램 PCB에 장착하여 3D 프린트 카트리지 케이스.

그런 다음 진실의 순간이왔다. 이미 원래 C64를 소유하고 있다는 것은 일반 독자에게는 놀라운 일이 아닙니다. Retrotink-2x Pro 어댑터. 그래서 카트리지를 슬롯으로 조심스럽게 밀고 기계를 켰습니다.

당연히 내 C64가 즉시 얼어 붙습니다. 나는 C64의 기본 통역사를 저장하는 ROM을 비활성화하여 Vice Emounter에서 데모가 작동하게 한 약간의 메모리 관리 코드를 제거하는 것을 잊었습니다. 실제 하드웨어 에서이 스 니펫은 카트리지 메모리의 절반을 비활성화했습니다. 빠른 편집과 TL866으로 돌아가는 여행과 다시 시도 할 준비가되었습니다. 성공! 나는 마침내 문자 그대로 일부 소프트웨어를 배송 할 준비가되었습니다. 고지 전시회우리의 여행 디스플레이를 구축하는 사람들.

내 작은 데모와“세상을 바꾸는 칩”전시회를 직접 볼 수 있기를 바랍니다. 칩 명예의 전당 페이지에 현재와 다가오는 위치를 게시 할 것입니다. 그러나 그 동안 C64를 하루에 사용했거나 재미있는 코딩 도전을 찾고 있든,이 8 비트 클래식을 프로그래밍하는 데 손을 대는 것이 좋습니다. 이제 많은 원래의 고통 포인트가 줄어들 었습니다!