Vector Basic Interpreter Basic 80 Reference Manual - page 158
responsible
for
saving
the
first
two
parameters
before
calling
$AT.
For
example,
if
a
subroutine
expects
5
parameters,
it should
look
like:
P1:
P2:
P3:
SHLD
XCHG
SHLD
MVI
LXI
CALL
P1
P2
A,3
H,P3
$AT
;SAVE
PARAMETER
1
;SAVE
PARAMETER
2
;NO. OF PARAMETERS
LEFT
;POINTER
TO LOCAL
AREA
;TRANSFER
THE OTHER
3 PARAMETERS
•
[Body of subroutine]
•
RET
OS
OS
OS
;RETURN
TO CALLER
;SPACE FOR PARAMETER
1
;SPACE
FOR PARAMETER
2
;SPACE FOR PARAMETERS
3-5
00100
00200
00300
00400
00500
00600
00700
00800
00900
01000
01100
01200
01300
01400
01500
01600
01700
01800
01900
02000
02100
02200
02300
.
,
i[B,C]
; (H,L]
; [A]
ARGUMENT
TRANSFER
POINTS
TO
3RO PARAM.
POINTS
TO LOCAL
STORAGE
FOR PA.~
3
CONTAINS
THE
i OF PARAMS TO XFER (TOTAL-2)
ENTRY
$AT
$AT:
XCHG
MOV
H,B
MOV
L,C
AT1 :
MOV
C,M
L,'nC
H
MOV
B,M
INX
H
XCHG
MOV
M,C
INX
B
MOV
M,B
INX
B
XCHG
OCR
A
JNZ
AT1
RET
i[B,C]
=
PARAM
ADR
i[H,L]
POINTS
TO LOCAL
STORAGE
iSTORE PARAM
IN LOCAL
AREA
iSINCE GOING
BACK
TO AT1
;TRANSFERRED
ALL
PA.~S?
iNO,
COpy MORE
;YES,
RETURN