10 REM > AddrOf - Find address of variable
   20 REM Simulates ^varname available on other BBC BASICs
   30 :
   40 REM Initialise with addrof%=FNAddrOf_<platform>
   50 REM Use with CALL addrof%,result%,varname
   60 REM result% gets set to address of variable
   70 :
   80 DEFFNAddrOf_65:DIM A% 31:P%=A%
   90 [OPT2:LDA &601:STA &70:LDA &602:STA &71:LDY #0
  100 LDA &604:STA (&70),Y:INY:LDA &605:STA (&70),Y:INY
  110 LDA #0:STA (&70),Y:INY:STA (&70),Y:RTS:]:=A%
  120 :
  130 DEFFNAddrOf_Z80:DIM A% 23:P%=A%
  140 [OPT 2:LD L,(IX+2):LD H,(IX+3):LD A,(IX+5):LD (HL),A
  150 INC HL:LD A,(IX+6):LD (HL),A:INC HL:LD (HL),0:INC HL
  160 LD (HL),0:RET:]:=A%
  170 :
  180 DEFFNAddrOf_32:=0
  190 :
  200 DEFFNAddrOf_PDP:DIM A% 15:!A%=&81D80:A%!4=&C1D81:A%!8=&A311009:A%!12=870002:=A%
  210 :
  220 DEFFNAddrOf_DOS:DIM A% 19:P%=A%
  230 [OPT 2:MOV AX,DS:[BP+5]:MOV BX,DS:[BP+2]:MOV DS:[BX],AX
  240 MOV AX,0:MOV DS:[BX+2],AX:RETF:]:=A%
  250 :
  260 DEFFNAddrOf_Win:=0
  270 :
  280 :
  290 DEFFNAddrOf_ARM:DIM A% 15:P%=A%
  300 [OPT2:
  310 LDR R0,[R9,#8] :\ r0=address of second param
  320 LDR R1,[R9]    :\ r1=address of first param
  330 STR R0,[R1]    :\ store addr of 2nd in 1st
  340 MOV PC,R14:]:=A%
  350 :