ภาษาเครื่อง 6502 + Apple] [+ ROM, 12 (11? 10? 9?) ไบต์
CE 06 80 F0 01 A2 0B A9 00 4C 24 ED
$8000
ควรเริ่มต้นที่ เกิดปัญหากับการตรวจสอบระบบเมื่อจำนวนถึง 0
C6 B6 F0 01 A2 0B A9 00 4C 24 ED
$B1
ควรเริ่มต้นที่ นี้ช่วยประหยัดไบต์ตั้งแต่ผมสามารถใช้ (สองไบต์) เวอร์ชั่นศูนย์หน้าของDEC
แต่เขียนทับ Applesoft ประจำที่สำคัญCHRGET
; คุณจะต้องโหลดและโทรจากจอภาพและใช้CTRL+ BReturnเพื่อเริ่มต้น BASIC อีกครั้งเมื่อคุณทำเสร็จแล้ว ไม่แน่ใจว่าสิ่งนี้ทำให้ใช้ไม่ได้หรือไม่
CE 06 80 F0 01 A2 0B 4C 26 ED
$8000
ควรเริ่มต้นที่ สิ่งนี้ไม่เริ่มต้น$9E
บันทึกสองไบต์ อย่างไรก็ตามนี่หมายความว่าคุณจะต้องไม่เรียกมันด้วยที่อยู่ติดลบ (หรือถ้าคุณโทรจากจอภาพคุณต้องโทรหาจอภาพด้วยที่อยู่ที่เป็นบวก) ถ้าคุณทำเช่นนั้นCALL
กิจวัตรของ Applesoft จะเก็บFF
ไว้$9E
ทำให้เพิ่ม 65280 ลงในจำนวนเมื่อพิมพ์ อีกครั้งไม่แน่ใจว่าสิ่งนี้ทำให้การแก้ปัญหาใช้ไม่ได้หรือไม่
C6 B6 F0 01 A2 0B 4C 26 ED
$B1
ควรเริ่มต้นที่ นี่คือการรวมกันของสองโปรแกรมข้างต้นบันทึกรวมเป็นสามไบต์ คุณจะต้องโทรหาจอภาพด้วยที่อยู่บวกโหลดและเรียกใช้จากที่นั่นและใช้Ctrl+ BReturnเพื่อเริ่มต้น BASIC อีกครั้งเมื่อคุณทำเสร็จแล้ว
โปรดทราบว่าโปรแกรมเหล่านี้แก้ไขโปรแกรมในหน่วยความจำเท่านั้น การโหลดโปรแกรมจากดิสก์อีกครั้งจะรีเซ็ตการนับถอยหลัง สิ่งนี้ได้ผลเพราะ Apple] [(และ] [+, // e และ // c) ไม่มีระบบป้องกันหน่วยความจำ แต่อย่างใด โปรแกรม (และการแก้ไขด้วยตนเอง) จะยังคงอยู่ในหน่วยความจำแม้ว่าจะออกจากโปรแกรมแล้วดังนั้นคุณจึงสามารถเรียกใช้จากหน่วยความจำต่อไปจนกว่าคุณจะเขียนทับหน่วยความจำนั้นด้วยสิ่งอื่น
วิ่งตัวอย่าง
]BLOAD COUNT THEN BRK
]CALL 32768
10
]CALL 32768
9
]CALL 32768
8
]CALL 32768
7
]CALL 32768
6
]CALL 32768
5
]CALL 32768
4
]CALL 32768
3
]CALL 32768
2
]CALL 32768
1
]CALL 32768
8008- A=80 X=9D Y=00 P=36 S=EE
*
คำอธิบาย
DEC NUM+1 ; Decrement the LDX instruction's operand
BEQ NUM+1 ; If it is now zero, branch to it; 00 is the opcode for the BRK instruction, which causes the program to crash to the monitor
NUM LDX #$0B ; Load the X register with 0x0A; the operand has already been decremented once
LDA #$00 ; Load the accumulator with 0
JMP $ED24 ; Jump to $ED24, an Applesoft ROM routine which prints A (high byte),X (low byte) in decimal
คำอธิบายเวอร์ชัน 10 ไบต์
DEC NUM+1 ; Decrement the LDX instruction's operand
BEQ NUM+1 ; If it is now zero, branch to it; 00 is the opcode for the BRK instruction, which causes the program to crash to the monitor
NUM LDX #$0B ; Load the X register with 0x0A; the operand has already been decremented once
JMP $ED26 ; Jump to $ED26, which is two bytes into the Applesoft routine at $ED24. The two skipped bytes would store the accumulator in $9E
สายพันธุ์
พิมพ์ERR
และส่งเสียงบี๊บเมื่อจำนวนถึง 0
ปกติ - 15 ไบต์
CE 06 80 F0 07 A2 0B A9 00 4C 24 ED 4C 2D FF
เขียนทับCHRGET
- 14 ไบต์
C6 B6 F0 07 A2 0B A9 00 4C 24 ED 4C 2D FF
ไม่เริ่มต้น$9E
- 13 ไบต์
CE 06 80 F0 05 A2 0B 4C 26 ED 4C 2D FF
เขียนทับCHRGET
และไม่เริ่มต้น$9E
- 12 ไบต์
C6 B6 F0 05 A2 0B 4C 26 ED 4C 2D FF
ค้างเมื่อนับถึง 0
ปกติ - 12 ไบต์
CE 06 80 F0 FE A2 0B A9 00 4C 24 ED
เขียนทับCHRGET
- 11 ไบต์
C6 B6 F0 FE A2 0B A9 00 4C 24 ED
ไม่เริ่มต้น$9E
- 10 ไบต์
CE 06 80 F0 FE A2 0B 4C 26 ED
เขียนทับCHRGET
และไม่เริ่มต้น$9E
- 9 ไบต์
C6 B6 F0 FE A2 0B 4C 26 ED