ack/mach/6500/libem/pro.s
1987-01-30 18:41:42 +00:00

34 lines
733 B
ArmAsm

.define Pro
.sect .text
.sect .rom
.sect .data
.sect .bss
.sect .text
! This routine is called at the entry of a procedure.
! It saves the localbase of the invoking procedure, and sets the
! new localbase to the present value of the stackpointer.
! It then initializes the second localbase by subtracting
! BASE from the real one.
Pro:
ldx LB ! get localbase (lowbyte)
lda LB+1 ! get localbase (highbyte)
jsr Push ! push localbase onto the stack
ldx SP+2 ! get stackpointer (lowbyte)
lda SP+1 ! get stackpointer (highbyte)
stx LB ! new localbase (lowbyte)
sta LB+1 ! new localbse (highbyte)
tay
txa
sec
sbc #BASE
sta LBl ! second localbase (lowbyte)
tya
sbc #0
sta LBl+1 ! second localbase (highbyte)
rts