################################################################################
# AWK program to extract all macros of an ASM8/ASM11 assembly language program
# Author : Tony Papadimitriou <tonyp@acm.org>
# Usage : (G)AWK -f showmacros.awk filestoexamine [> output]
# History: 2010.09.01 - Original
# : 2010.11.01 - Disallowed local macros
# : Added #IFNOMDEF .. #ENDIF around each macro
################################################################################
function Separator(nl) {
print nl ";******************************************************************************"
}
BEGIN { TotalMacros = 0; Separator(""); print "; START OF MACROS"; Separator("") }
END { print "; END OF MACROS (Total macros: " TotalMacros ")"; Separator("") }
match(toupper($0),/^\?[^ ]* +MACRO/) { next } #Skip local macros (comment out to include them)
tolower($2)=="macro",tolower($1)=="endm" {
if (tolower($2) == "macro") {
print "; Macro: " $1 " [inside '" FILENAME "']\n"
print "#ifnomdef " $1 "\n"
TotalMacros++
line = 0
}
line += 1
print #line ": " $0 #remove comment from #line to show line numbers
if (tolower($1) == "endm") {
print "#endif"
Separator("\n")
}
}