OS_Bix, Bind in extended address for availability

Register parameters

RST 20H, DEFB $60
IN:
     B = 0, bind in physical address in HL
     BHL = extended pointer to bind into physical address space
     IY points at OSPUSH frame (preserved by previous OZ call) containing:

     offset:  contents:
     10       <RETurn address to caller>
     0E       <original bank bindings for segment 2 & 3>
     0C       <HL>
     0A       <DE>
     08       <BC>
     06       <AF>
     04       <pointer to OZ call address>
     02       <original bank bindings for segment 2 & 3>
     00       <IY>

OUT:
     DE = old binding of segment 1 in E, and segment 2 in D.
     B = 0, always, identifying a converted local pointer
     HL = (possibly modified) address for segment 1.

Registers changed after return:
     A..C..../IXIY same
     .FB.DEHL/.... different

Notes

Internal operating system usage.

OS_Bix and OS_Box are called from GN_ or OS_ 2 byte calls. Binds in extended or local address, identified by BHL (B=0 local) into segment 1. The (offset) address is automatically forced to segment 1, if necessary. If the address already are in segment 1 or 0, no binding occur (the bindings are still returned in DE). B = 0 always returned to indicate a local address in segment 1 or segment 0.

If request address was in segment 3 then segment 2 was not affected.

Related calls

OS_Box, restore bindings after OS_Bix
OS_Fc, select fast code (fast bank switching)
OS_Mal, allocate memory
OS_Mcl, close memory (free memory pool)
OS_Mfr, free (previously allocated block) memory
OS_Mgb, get current bank binding in segment
OS_Mop, open memory (allocate memory pool)
OS_Mpb, set new bank binding in segment
OZ_Mgb, get current bank binding in segment
OZ_Mpb, set new bank binding in segment