Attached a sample code using sLocal (like stack-local). Usage:
OPTION PROLOGUE:NONE
OPTION EPILOGUE:NONE
MyTest proc par1, par2
push esi ; save esi
sLocal First:DWORD, rc:RECT, wc:WNDCLASSEX
sLocal Last[1]:BYTE
sLocal
sub edi, esp
print str$(sPara(1)), 9, "par1", 13, 10
print str$(sPara(2)), 9, "par2", 13, 10
lea eax, First
sub eax, esp
print str$(eax), 9, "First", 13, 10
lea ecx, Last
sub ecx, esp
print str$(ecx), 9, "Last", 13, 10, 10
sLocal end
pop esi ; restore the stack
retn 1*4
MyTest endp
32-bit code, no MasmBasic. One caveat is that you cannot use the same sLocal name in a second proc, since Masm does not allow redefinition of integers in text format. There is a possible workaround using PURGE and macros, but it would be an overkill.