#pragma once
#include "ObjParams.h"
enum class OBJTags : uint32_t
{
	OBJ_Default = 0,
	OBJ_HDRTAG = 0x5501, // тег заголовка объектного файла
	OBJ_ID,             // тег блока идентификации
	OBJ_DATA,           // тег массива с данными
	OBJ_GLB,            // тег блока глобальных меток
	OBJ_LOC,            // тег блока локальных меток
	OBJ_REF,            // тег блока ссылок на метки
	OBJ_Label,			// тег элемента метки из таблиц меток
	OBJ_Token,			// тег токена (имя метки, внутри элемента метки)
	OBJ_Node,			// тег узла цепочки арифметического выражения
	OBJ_NodeOP,			// тег значения узла - операция
	OBJ_NodeLBL,		// тег значения узла - метка
	OBJ_NodeNMR,		// тег значения узла - число
	OBJ_RPNChain,		// тег начала цепочки арифметического выражения
};

constexpr auto OBJVERSION = 0x1002;

struct OBJBlockHeader
{
	OBJTags  nHdrTag;
	OBJTags  nBlockTag;
	uint32_t nBlkLen;
	uint32_t nEntryCount;
	uint32_t nCheckSum;
};

struct OBJIDBlock
{
	uint32_t nVersion;
	int16_t nStartAddress;
	int16_t nMode;
};
