Z80 REPL (2018)

5 hours ago 2

Hacker News 의견들 Apple II Plus에서 아쉬웠던 건 Integer BASIC을 탑재한 원래 모델과 달리, 자동 시작 기능을 넣을 공간을 확보하느라 Monitor ROM의 미니 어셈블러를 빼버렸다는 점임. 이걸 보기 전까지는 그게 내가 접한 것 중 어셈블리 언어 REPL에 가장 가까웠음. 그래도 디스어셈블러는 남겨둘 수 있었음. C64에서는 실행 중인 동작을 중단하고 모니터 프로그램을 호출할 수 있는 프리저 카트리지를 흔히 사용함. 대개 기초적인 어셈블러와 디스어셈블러도 포함돼 있어 패치와 역공학에 재미있고 유용함. 열 살 때 공공도서관의 Apple IIe로 Apple II 시절 책의 예제를 따라 하면서, 미니 어셈블러가 왜 작동하지 않는지 몹시 혼란스러웠음. 후속 기종에서 기능이 삭제될 수 있다는 생각 자체를 못 했음. 나머지는 거의 예상대로 작동했기에, IIe가 책에서 다루는 기종과 다르다는 사실조차 제대로 이해하지 못했던 것 같음. 또 다른 단점은 Applesoft BASIC 라이선스가 Microsoft에 약점을 잡혔다는 점이며, Microsoft는 나중에 이를 이용해 https://en.wikipedia.org/wiki/MacBASIC을 없애버렸음. 그때까지 PC라면 당연하게 여겼던 사용자 프로그래밍 기능 없이 Mac이 출시된 일이 얼마나 큰 영향을 미쳤는지는 판단하기 어려움. BBC Micro와 그 이전의 Atom은 BASIC에 어셈블러가 내장돼 있었음. 1980년대 초에도 BASIC 코드가 충분히 빠르지 않으면 인라인 어셈블리를 쓸 수 있었던 셈임. 소스 코드를 보니 8년 된 프로젝트인 듯함. https://github.com/abagames/z80-repl. 그래도 아이디어는 정말 마음에 듦. 그래서인지 디자인도 틀에 박힌 느낌이 아니라, 실제로 만든 사람이 직접 디자인한 것처럼 보임. 심볼 지원이 필요함. 내 6800 / 6809 Exorciser 시뮬레이터의 모니터에서는 start, skip, loop 같은 레이블을 정의하고 분기 대상으로 사용할 수 있음. 전방 참조를 해결할 때는 Offset at 1001 set to 02처럼 보정한 오프셋을 출력하며, sy로 심볼 목록을 보고 u 1000으로 디스어셈블할 수 있음. 더 좋은 방식은 a 명령으로 내장 미니 편집기를 열고, 편집기를 종료하면 코드를 어셈블하는 것임. https://github.com/jhallen/exorsim 좋...

Read Entire Article