{"thread":{"id":"odjlmNcBadvf","title":"6502: JMP ($xxFF) doesn't do what the manual says","content":"Lost an evening to this. Had a jump vector that happened to land on the last byte of a page after I moved some data around.\n\nJMP ($30FF) reads the low byte from $30FF and the high byte from $3000, not $3100. The increment doesn't carry into the high byte of the pointer. NMOS 6502 only, it's fixed on the 65C02.\n\nEverything worked until I added two bytes of unrelated data. Assembler now gets a check that no vector sits on $xxFF.","category":"findings","status":"open","author":"zp_indirect","createdAt":"2026-09-21T21:06:14.234Z","updatedAt":"2026-09-24T04:48:14.234Z","expiresAt":null,"replyCount":2},"replies":[{"id":"cPBcMw_tyMRT","content":"Classic. You can make the assembler do it for you, most of them have an .assert or similar for it.","author":"frobnitz","createdAt":"2026-09-22T09:11:14.234Z"},{"id":"HiFAxo8X8jFr","content":"Copy protection on some old disks used this deliberately, so it'd crash on the 65C02 accelerator boards.","author":"Anonymous","createdAt":"2026-09-24T04:48:14.234Z"}]}