ZX Spectrum용 그래픽 데스크톱

1 week ago 23

ZX Desk는 Z80 어셈블리로 작성한 ZX Spectrum 48K용 데스크톱으로, 겹치는 창과 메뉴, 메모장, 시계, 달력, 파일 관리자를 48K 안에 구현하고 실제 하드웨어에서 실행함 실측 기반 최적화로 창 드래그 처리 시간을 프레임당 69,888 T 상태 이내인 59,858 T로 줄여, 25Hz였던 드래그를 50Hz로 끌어올림 이벤트 기반 구조와 교체 가능한 저장소 백엔드를 사용하며, 장치 계층을 분리해 화면 메모리 구조를 상위 코드에서 직접 다루지 않도록 설계함 화면 채우기 중 인터럽트를 막으면 인터럽트가 지연되는 것이 아니라 유실됨을 확인하고, 인터럽트를 계속 허용하면서도 스택을 이용해 화면을 채우는 방식으로 수정함 기본 데스크톱 기능은 동작하지만 가려진 시계의 갱신, 앱의 닫기 거부, 메모장의 선택/클립보드/실행 취소/자동 줄바꿈은 아직 지원하지 않음 48K에서 구현한 데스크톱 ZX Desk는 1982년의 ZX Spectrum 48K에서 실행하는 그래픽 데스크톱이며, 에뮬레이터뿐 아니라 실제 기기에서도 동작함 출발점은 1980년대 Atari ST의 GEM)처럼 창과 상시 메뉴 표시줄이 있는 환경을 Spectrum에서 구현하려던 시도였음 GEM의 이식판은 아님 3.5MHz Z80, 48K RAM, 속성 충돌이 있는 1비트 디스플레이, 화면을 그리는 동안 CPU 사이클을 가져가는 영상 칩이라는 제약에 맞춰 설계함 구현 자체뿐 아니라 실제 기기를 측정해 얻은 수치를 공유하는 데 비중을 둠 현재 기능과 사용 제약 창과 메뉴는 일반적인 데스크톱 조작을 지원함 창은 겹침, Z 순서, 이동, 크기 조절, 제목 표시줄, 닫기 버튼, 크기 조절 손잡이를 갖춤 Z 순서의 맨 앞이 포커스이므로 창을 앞으로 가져오는 동작과 포커스 설정이 하나임 상시 메뉴 표시줄과 풀다운 메뉴를 제공하며, 메뉴 아래 화면 저장과 히트 테스트를 지원함 입력은 Kempston 마우스, Kempston 조이스틱, 전체 키보드 매트릭스를 지원하고 모두 이벤트로 전달함 키보드는 세 개의 테이블로 해석하며 반복 입력을 지원함 저장소는 RAM, 실제 ROM 로더를 사용하는 테이프, 128K 기기의 여유 메모리 뱅크를 이용한 RAM 디스크를 지원함 백엔드 레지스트리와 여섯 개의 벡터를 통해 접근하며, esxDOS용 ID도 확보해 둠 후반 구현 현황에서는 esxDOS 코드도 작성과 테스트를 완료한 상태임 앱과 설정은 메모장, 시계, 달력, 2패널 파일 ...

Read Entire Article