Only in the most literal sense, yes, I have my fixes in an ips patch. Meaning all in the same ips.
Extremely simplified, JSL would be the asm equivalent of a function call.
Not so simplified, it can also be used like eval.
And even more simplified, it is even worse.
Basically, it pauses code execution where you currently are, jumps to a different spot, executes there until it hits a "return" (RTL in this case) and then unpauses.
It happens roughly like so.
$C1/6BDE 22 34 12 D8 JSL $D8/1234
$D8/1234 <do some stuff here>
...
$D8/12FF 6B RTL //returns to where you stopped
$C1/6BE2 <continue here like normal>
There is also a "small" counterpart JSR that functions the same but can't leave the current bank.
The target area of JSL doesn't have to be in the ROM, you can also move to the RAM and execute that (for your own sanity, don't), which is basically like a regular language's eval.
Now here's the thing that separates JSL from a regular function call: you do not have to move to the start of a function, you can go wherever you want.
Start of a "function", middle of it or heck execute a data table if you want, asm doesn't stop you, only the crashes will.