Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; macro to declare a zone-ordered table
- ; entryLen is the length of each table entry, and zoneEntries is the number of entries per zone
- zoneOrderedTable macro entryLen,zoneEntries,{INTLABEL}
- __LABEL__ label *
- ; set some global variables
- zone_table_name := "__LABEL__"
- zone_table_addr := *
- zone_entry_len := entryLen
- zone_entries := zoneEntries
- zone_entries_left := 0
- cur_zone_id := 0
- cur_zone_str := "0"
- endm
- zoneOrderedOffsetTable macro entryLen,zoneEntries,{INTLABEL}
- current_offset_table := __LABEL__
- __LABEL__ zoneOrderedTable entryLen,zoneEntries
- endm
- ; macro to declare one or more entries in a zone-ordered table
- zoneTableEntry macro value
- if "value"<>""
- if zone_entries_left
- dc.ATTRIBUTE value
- zone_entries_left := zone_entries_left-1
- else
- !org zone_table_addr+zone_id_{cur_zone_str}*zone_entry_len*zone_entries
- dc.ATTRIBUTE value
- zone_entries_left := zone_entries-1
- cur_zone_id := cur_zone_id+1
- cur_zone_str := "\{cur_zone_id}"
- endif
- shift
- zoneTableEntry.ATTRIBUTE ALLARGS
- endif
- endm
- ; macro to declare one or more BINCLUDE entries in a zone-ordered table
- zoneTableBinEntry macro numEntries,path
- if zone_entries_left
- BINCLUDE path
- zone_entries_left := zone_entries_left-numEntries
- else
- !org zone_table_addr+zone_id_{cur_zone_str}*zone_entry_len*zone_entries
- BINCLUDE path
- zone_entries_left := zone_entries-numEntries
- cur_zone_id := cur_zone_id+1
- cur_zone_str := "\{cur_zone_id}"
- endif
- endm
Advertisement
Add Comment
Please, Sign In to add comment