%begin
  %integerfn labad(%name lab)
  %integer ad
    *str_1,ad
    %result=ad
  %end
  %integerfn procad(%integerfn p(%integer ch))
  %integer ad
    *STR_1,ad
    %result=ad
  %end
  %integerfn p(%integer ch)
    ch=ch!32 %if 'A' <= ch <= 'Z'
    *ldr_0,ch
    *ldmia_10,<5,9,10,12,15>
    %result=ch
  %end
  %routine Set vector(%integer No, Proc)
    %constinteger Swi OS Claim Vector=31
    *LDR_0,No
    *LDR_1,Proc
    *MOV_2,12
!    *SWI_Swi OS Claim Vector
  %end
  %constinteger OSWRCH=3
  %label privlab
  %integer ad
  ad = procad(p)
  Set vector(OSWRCH, ad)
  *Ldr_0,privlab
  *Str_0,ad
  Set vector(OSWRCH, ad)
  %stop

privlab:
  *MOV_15,14

%endofprogram
