It's the db 1
at the end that the comment is referring to. That's the opcode for LD BC, nnnn
without a supplied operand. So it acts to swallow the load at l0393h
, which in turn swallows that at l0396h
, which gets you to PARSE
from 0392
without using a JR
and without having done anything to change what you wanted in HL
.
So, if you enter at 038c
then the z80 will perform:
LD HL, <value 1>
PUSH HL
LD L, <value 2>
LD BC, xx
LD BC, xx
(arrive at PARSE)
But if you enter at 0393
then instead it'll perform:
LD L, <value 3>
LD BC, xx
(arrive at PARSE)
... and if you enter at 0396
:
LD L, <value 4>
(arrive at PARSE)
The value in HL
and BC
when you arrive at PARSE
depends upon the entry point, but BC
is intentional junk. You've spent one byte on the opcode for LD BC
in two places you'd otherwise have used a JR
. In each of those places you've saved a byte.