; Copyright 1996 Acorn Computers Ltd
;
; Licensed under the Apache License, Version 2.0 (the "License");
; you may not use this file except in compliance with the License.
; You may obtain a copy of the License at
;
;     http://www.apache.org/licenses/LICENSE-2.0
;
; Unless required by applicable law or agreed to in writing, software
; distributed under the License is distributed on an "AS IS" BASIS,
; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
; See the License for the specific language governing permissions and
; limitations under the License.
;
; Copyright (C) Acorn Computers Ltd., 1988
; Note that the module header only needs to know that the
; size of the block has to be stored in its 1st word, with the
; 2 relocation offsets following immediately after.

                ^       0               ; Offsets in global workspace
blocksize       #       4
libRelocation   #       4
clientRelocation #      4
fixedwssize     #       0

        GBLS    VBar
VBar    SETS    "|"

        MACRO
        Entry   $sym, $import, $sym2, $direct, $varargs, $directlocal
        LCLS    temps
temps   SETS    "$VBar":CC:"$sym":CC:"$VBar"
        EXPORT  $temps
$temps  MOV     pc, #0
        MEND

        MACRO
        Entry2  $sym, $import, $sym2, $direct, $varargs, $directlocal, $alias
        LCLS    temps
        LCLS    temps1
temps   SETS    "$VBar":CC:"$sym":CC:"$VBar"
temps1  SETS    "$VBar":CC:"$alias":CC:"$VBar"
        EXPORT  $temps
        EXPORT  $temps1
$temps1
$temps  MOV     pc, #0
        MEND



        MACRO
$Label  Variable $Size
        LCLA    Tempa
        LCLS    Temps
 [ "$Size"=""
Tempa   SETA    1
 |
Tempa   SETA    $Size
 ]
Temps   SETS    VBar:CC:"_stub_$Label":CC:VBar
        KEEP    $Temps
        ALIGN
$Temps  %       &$Tempa*4
        MEND

        MACRO
$Label  Alias $VariableName, $WordOffset
        LCLS    Temps
Temps   SETS    VBar:CC:"$Label":CC:VBar
        EXPORT  $Temps
$Temps   *      $VariableName + 4*$WordOffset
        MEND

        MACRO
$Label  ExportedVariable $Size
        LCLA    Tempa
        LCLS    Temps
 [ "$Size"=""
Tempa   SETA    1
 |
Tempa   SETA    $Size
 ]
Temps   SETS    VBar:CC:"$Label":CC:VBar
        EXPORT  $Temps
        ALIGN
$Temps  %       &$Tempa*4
        MEND

        MACRO
$Label  ExportedWord $Value
        LCLS    Temps
Temps   SETS    VBar:CC:"$Label":CC:VBar
        EXPORT  $Temps
        ALIGN
$Temps  %       4
        MEND

        MACRO
$Label  VariableByte $Size
        LCLA    Tempa
        LCLS    Temps
 [ "$Size"=""
Tempa   SETA    1
 |
Tempa   SETA    $Size
 ]
Temps   SETS    VBar:CC:"_stub_$Label":CC:VBar
        KEEP    $Temps
$Temps  %       &$Tempa
        MEND

        MACRO
$Label  InitByte $Value
$Label  VariableByte 1
        MEND

        MACRO
$Label  InitWord $Value
$Label  %      4
        MEND

        END