.define Sli4
.sect .text
.sect .rom
.sect .data
.sect .bss
.sect .text

! This subroutine shift a signed or unsigned fourbyte integer
! n times left. N is in register X.


Sli4:
	cpx #0
	beq 9f		! zero shift, return input
	lda SP+2	! the shifting is done on the stack
	sta ADDR	! address of integer (lowbyte)
	lda SP+1
	sta ADDR+1	! address of integer (highbyte)
    2:	ldy #0
	clc
	lda (ADDR),y
	rol a
	sta (ADDR),y
	iny
	lda (ADDR),y
	rol a
	sta (ADDR),y
	iny
	lda (ADDR),y
	rol a
	sta (ADDR),y
	iny
	lda (ADDR),y
	rol a
	sta (ADDR),y	! shift left
	dex
	bne 2b
    9:	rts