이야기하고 싶은 파일 시스템이나 운영 체제는 괜찮습니다. 좋은!
ZX Spectrum에서 LOAD
명령을 초기화 하면 오디오 입력 라인을 읽고 시스템이 타이트한 루프 상태가됩니다.
데이터 시작은 일정한 톤으로 표시되고 그 후에는 긴 펄스 / 짧은 펄스 시퀀스가 뒤 따릅니다. 짧은 펄스는 이진에 대한 0
것이고 긴 펄스는 이진에 대한 것입니다 1
( https://en.wikipedia.org/ wiki / ZX_Spectrum_software ). 타이트로드 루프는 바이트 (8 비트)를 채울 때까지 비트를 수집하여 메모리에 저장하고 메모리 포인터를 증가시킨 다음 루프를 반복하여 더 많은 비트를 스캔합니다.
일반적으로 로더가 가장 먼저 읽는 것은 짧고 고정 된 형식의 헤더로 , 예상되는 바이트 수와 파일 이름, 파일 유형 및로드 주소와 같은 추가 정보를 나타냅니다. 이 짧은 헤더를 읽은 후 프로그램은 기본 대량 데이터로드를 계속할지 또는로드 루틴을 종료하고 사용자에게 적절한 메시지를 표시할지 여부를 결정할 수 있습니다.
파일 끝 상태는 예상 한만큼의 바이트 (소프트웨어에서 고정 된 바이트 수, 소프트웨어에서 하드 와이어 또는 헤더에 표시된 것과 같은 변수 수)를 수신하여 인식 할 수 있습니다. 로딩 루프가 일정 시간 동안 예상 주파수 범위에서 펄스를받지 못하면 오류가 발생했습니다.
이 답변에 대한 작은 배경
설명 된 절차는 일반 오디오 테이프에서 데이터를로드하므로 오디오 입력 (테이프 레코더에 표준 플러그로 연결된)을 스캔해야합니다. LOAD
명령은 기술적으로 동일한 open
파일 -하지만 물리적으로 묶여 실제로 파일을로드. 이것은 테이프 레코더가 컴퓨터에 의해 제어되지 않기 때문에 파일을 열 수는 없지만로드 할 수는 없기 때문입니다.
"tight loop"는 (1) Z80-A (메모리가 제공되는 경우) 인 CPU가 실제로 3.5MHz로 느리고 (2) 스펙트럼에 내부 클럭이 없기 때문에 언급되었습니다. 즉, 모든 T 상태 (명령 시간) 를 정확하게 유지해야 합니다. 단일. 교수. 루프 내에서 정확한 비프 음 타이밍을 유지합니다.
다행히도 CPU 속도가 낮 으면 종이 한 장의 사이클 수를 계산할 수 있다는 점에서 뚜렷한 이점이 있었으므로 실제로 소요되는 시간도 늘어났습니다.
C
하여 Linux 에 집중하십시오 . Linux와 Windows의 기능이 다르기 때문입니다. 그렇지 않으면, 너무 넓습니다. 또한 더 높은 수준의 언어는 시스템의 C API를 호출하거나 C로 컴파일하여 실행되므로 "C"수준을 유지하면 최소 공통 분모가됩니다.