Đó là ngày cuối tuần, vì vậy tôi thư giãn với việc lập kế hoạch cả tuần bằng cách viết một dự án sở thích.6502 Thi đua CPU
Tôi đã viết khung của bộ mô phỏng CPU MOS 6502 ngày hôm qua, thanh ghi, ngăn xếp, bộ nhớ và tất cả các opcodes được triển khai. (Liên kết đến nguồn bên dưới)
Tôi có thể chạy một loạt các thao tác trong trình gỡ lỗi mà tôi đã viết, nhưng tôi muốn tải một rom NES và chỉ trỏ bộ đếm chương trình theo hướng dẫn của nó. cách nhanh nhất để tìm các opcodes thiếu sót.
Tôi đã viết bộ tải rom NES nhanh và tải các ngân hàng ROM vào bộ nhớ CPU.
Vấn đề là tôi không biết mã opcodes được mã hóa như thế nào. Tôi biết rằng các opcodes mình theo một khuôn mẫu của một byte cho mỗi opcode xác định duy nhất các opcode,
0 - BRK
1 - ORA (D,X)
2 - COP b
vv
Tuy nhiên tôi không chắc chắn nơi tôi phải tìm ra lý lẽ opcode. Có phải byte trực tiếp theo sau không? Trong bộ nhớ tuyệt đối, tôi cho rằng nó có thể không phải là một byte nhưng một đoạn ngắn.
Có ai quen thuộc với mô hình bộ nhớ của CPU này không?
EDIT: Tôi nhận ra rằng điều này có thể bị bắn trong bóng tối, nhưng tôi đã hy vọng có một số tin tặc cũ của Apple và Commodore ẩn nấp ở đây.
EDIT: Cảm ơn sự giúp đỡ của mọi người. Sau khi tôi thực hiện các thay đổi thích hợp để căn chỉnh từng hoạt động mà CPU có thể tải và chạy Mario Brothers. Nó không làm bất cứ điều gì nhưng vòng lặp chờ đợi Bắt đầu, nhưng một dấu hiệu tốt của nó :)
Tôi đã tải lên nguồn:
http://www.codeplex.com/Cpu6502/SourceControl/DirectoryView.aspx?SourcePath=&changeSetId=1810
Nếu ai đã bao giờ tự hỏi làm thế nào một công trình giả lập, nó khá dễ dàng để làm theo. Không được tối ưu hóa trong ít nhất, nhưng sau đó một lần nữa, tôi bắt chước một CPU chạy ở 2MHz trên một máy 2.4GHz :)
Hey tôi khá nhiều trong tình cảnh tương tự của bạn (ở thời điểm niêm yết) Tôi muốn để kiểm tra mã của bạn, nhưng liên kết dường như bị hỏng. Bạn vẫn giữ nó chứ? – Petruza