ZX Spectrum Swift 디스크에서 플로피 데이터 읽기

Jan 15 2021

과거에 우리는 3.5 인치 플로피 디스크를 사용할 수 있도록 우리 사양에서 게임보다 앞서 있었던 6 워드 swiftdisk를 가지고있었습니다. 보다:

  • https://www.worthpoint.com/worthopedia/swift-disc-interface-zx-spectrum-540379389
  • http://www.crashonline.org.uk/44/swiftdisk.htm
  • https://spectrumcomputing.co.uk/index.php?cat=96&id=1000412
  • https://hardware.speccy.org/hardware/Swift_Disc-Sixword-i.html

전체 하드웨어 사양을 볼 수 있으며 위의 hardware.speccy.org 링크에서 롬도 온라인으로 볼 수 있습니다.

사용 된 디스크 형식 (전체 메모리의 스냅 샷)과 현대 복고풍 세계를 위해 오래된 플로피를 디지털화하는 방법을 아는 사람이 있습니까? 아마도 우리는 그들을 FDI 형식으로 변환 할 수 있습니까?

자극:

StarBlade에서 했던 것처럼 출시되지 않은 게임 인 Galactic Patrol을 업로드 해 보는 것도 좋을 것 입니다. 적의 파도를 너무 사악하게 만든 것에 대해 사과드립니다! 좀 더 플레이 테스트를 할 수 있었지만 우리 둘 다 아직 학교에있었습니다.

나와 내 동생이 고안 빠른 화면 전환 방식 사용 '전체'색이 실행 된 충돌 여기를 .

답변

3 Tommy Jan 16 2021 at 04:11

기술 정보 나 기존 에뮬레이터를 찾을 수 없었지만 링크를 통해 인터페이스 보드의 고해상도 이미지를 찾았 습니다 .

거기에서 다음과 같은 것을 알 수 있습니다.

  • 디스크 컨트롤러는 WD1770으로 왼쪽에있는 큰 컨트롤러입니다.
  • 오른쪽 양쪽에있는 두 개의 큰 칩은 에지 커넥터 아래 절반에 8kb RAM과 EPROM입니다. 과
  • 눈에 보이는 다른 모든 것은 74 시리즈 로직입니다.

인터럽트 버튼이 온보드 ROM에서 전환되고 NMI를 트리거하는 것은 스펙트럼의 아키텍처를 기반으로하는 안전한 방법입니다.

연결된 ROM 이미지의 크기는 32kb 및 16kb이지만 전자는 16kb 데이터로 두 번 복사 된 것 같습니다. EPROM이 16kb라는 것을 추가 할 수도 있습니다.이 경우 8kb RAM이 언제 어디서 나타나는지 알아내는 데 약간의 추측이있을 수 있습니다. .

comp.sys.sinclair에서 최신 버전에 추가 된 Microdrive 에뮬레이션이 부분적으로 하드웨어 기반이지만 보드 개정판이있는 것 같다는 오래된 언급을 발견했습니다. 따라서 에뮬레이터 작성자는 추가 하드웨어가 아직 존재하지 않기를 바라면서 이전 EPROM으로 시작할 것입니다.

그렇지 않으면 좋은 소식은 디스크 컨트롤러가 기본 IBM 인코딩을 수행하는 극히 표준 부품이라는 것입니다. 광고 된 플로피 용량 인 "디스크 당 48kb 게임 13 개"를 기반으로 디스크에있는 데이터의 물리적 형식을 다음과 같이 가정 할 수 있습니다. MFM (예 : 일반 PC '이중 밀도').

따라서 MFM이 기본적으로 지원하는 유일한 것이기 때문에 일반 USB 디스크 드라이브 (고밀도 플로피 만 지원하는 드라이브를 찾지 않는 한)를 사용하여 디스크를 이미지화 할 있습니다.하지만 대개는 512 바이트 섹터로 제한됩니다. 고정 된 번호이므로 보장되지 않습니다. 하지만 덜 일반적인 솔루션을 찾기 전에 시도해 볼 가치가 있습니다. 이 MSX 관련 페이지 는 Windows 섹션이 비어 있지만 Linux 및 macOS에 대한 가이드를 제공합니다. 거기에 약간 더 많은 연구가 필요할 수 있습니다.

실패하면 Amstrad CPC와 같은 시스템의 플로피를 이미지화 할 수있는 솔루션을 찾아보십시오. 다른 섹터 크기와 주소 지정을 처리해야하고 일반적인 CPC 관련 파일 형식이 모든 정보를 유지할 수 있기 때문입니다. 사전 USB 플로피 디스크 컨트롤러와 드라이브가 있고 컨트롤러에 소프트웨어를 자유롭게 액세스 할 수있는 DOS와 같은 OS를 가질 수있을만큼 오래된 PC가 있다면이 방법을 사용하면됩니다. 또는 스크 러스, Kryoflux 등에서 언급 한 Greaseweazle과 같이이 문제에 대한 저수준 디스크 컨트롤러가 이제 존재합니다.

작동하는 Spectrum 에뮬레이터에서 시작하여 Swift 디스크 인터페이스를 추가하고 플로피를 읽는 데 너무 많은 트레킹이되어서는 안됩니다.

WD1770에 기록해야하는 소프트웨어는 매우 잘 알려져 있으므로 해당 주소를 상당히 쉽게 분리 할 수 ​​있습니다. NMI 루틴에서 가장 먼저해야 할 일은 현재 디스플레이를 백업하는 것이므로 너무 많은 딜레마가없는 RAM 질문. 이 시점에서 디스크 이미지를 연결하는 것만 큼 쉬울 수도 있습니다.

이러한 약간 더 모호한 인터페이스가 에뮬레이션되지 않는 대부분의 경우 테스트 데이터를 사용할 수 없기 때문입니다. 디스크 이미지 만 있으면 기존 작성자가 관심을 가질 수 있습니다. 그렇지 않으면 Spectrum 에뮬레이터가 쉽게 깨질 수 있으므로 일반적으로 올바른 종류의 코드를 가지고있는 나와 같은 사람이 도움을 줄 수 있습니다.

또는 내 검색이 특별히 철저하지 않았기 때문에 이미 에뮬레이션 된 것을 발견 할 수 있습니다.이 경우이 답변의 90 %를 변경할 수 있도록 알려주세요.

2 Spektre Jan 16 2021 at 16:25

WD1770 을 사용하는 것 같습니다. 익숙하지 않지만 먼저 WD1770 이 IBM 형식과 호환되는지 확인 합니다. 그렇다면 PC에서 직접 디스크를 읽을 수 있습니다 . 디스크를 읽을 수있는 HW 가 필요하지 않은 경우 .

따라서 PC와 호환되는 경우 파일 형식 대신 C ++ (또는 다른 언어 또는 유틸리티)의 직접 섹터 액세스를 사용하여 이미지를 생성합니다. 플로피의 이진 이미지를 얻은 후에는 두 가지 옵션이 있습니다.

  1. FDC 에뮬레이트

    따라서 FDC 인터페이스를 에뮬레이션 할 수있는 에뮬레이터가 필요하거나 일부 오픈 소스 코드에 이러한 기능을 추가해야합니다.

    마지막 링크에는 ROM 이미지와 회로 (하지만 읽을 수 없음)가 있으므로 회로를 반전하여 에뮬레이트 할 수 있습니다. 이전 에 WD2797 기반 에뮬레이터와 D40 / D80 FDC 에 대해이 작업을 수행했습니다 . 그러나 이것은 MC (머신 사이클) 타이밍 해상도 (예 : 광산) 에서 실행되는 에뮬레이터에서만 쉽게 수행 할 수 있습니다. 그렇지 않으면 FDC는 Z80 코드를 우회하고 대신 FDC 코드 / 작업을 삽입하여 HW 및 SW 조건에 연결하여 해킹해야합니다. 대부분의 에뮬레이터가이를 수행하는 방법이지만 이것은 100 % 호환되지 않으며 사용자 정의 로더 및 항목이 작동하지 않을 수 있습니다) 대상 FDC 작업에 대한 깊은 지식이없는 사람은 할 수 없습니다.

  2. 파일의 압축을 풉니 다

    또는 FDC를 완전히 우회하고 이미지에서 압축되지 않은 파일을 *.tap. 일부 이미지를 공유하는 경우 (어떤 파일과 그 안에 얼마나 오래 있는지에 대한 설명과 함께)이 작업을 수행 할 수있는 win32 변환기를 만들어 드리겠습니다.

    파일은 스냅 샷일 뿐이므로 이것이 최선의 선택 일 수 있습니다. 이상적으로는 HW에 액세스 할 수있는 경우 특정 메모리 패턴을 생성하고 플로피에 저장하여 파일 시스템을 쉽게 인식 할 수 있습니다. 예를 들어 128K (RAM 부분)를 32 비트 주소 (증분 값)로 채 웁니다. 섹터를 올바른 순서로 모은 다음 사용되는 경우 FAT와 일치시킬 수 있습니다.