BEGIN {lc=0; nv=0; FS= " "; OFS= " "; } { if(length($0)==0)next; if($1~/^#/)next; if($1~/:$/){ print "#define",substr($1,1,length($1)-1),lc; if(NF==1)next; } if(NF>1){ if(NF>2){ if($2=="BSS"){ print "#var",$1,nv; v[$1]=nv; nv=nv+$3; next; } if(!(($2~/JMP/)||($2=="CALL"))){ if($3!~/^[0-9]|^'|\+/){ if(length(v[$3])==0){ print "#var",$3,nv; v[$3] = nv; nv = nv + 1; } } } } lc = lc + 2 } } END{ sstack = 256 - nv; print "#define","SSTACK",sstack; }