#pragma once

//тут будут храниться всякие глобальные параметры и флаги
struct GlobalParams
{
	wstring strAppPath;         //домашний путь
	bool bVerbosity;
	bool bInString;             //флаг, что находимся внутри строки "" для ascii, asciz и rad50
	bool bOperandType;          //флаг, какой операнд. 0 = dd, !0 = ss, где OPssdd
	bool bENDReached;           //флаг, что встретилась псевдокоманда .end
	bool bStopOnError;          //флаг остановки компиляции при первой встреченной ошибке
	bool bLinkerFirst;          //флаг первого слинкованного модуля
	int nModeCompone;           //режим компоновки меток: -1 = CL, 1 = CO, 0 = окончательная компоновка после .end
	int nAriphmType;            //тип арифметического выражения, где оно встречается: -1 = константа, 1 - word или ассемблерная команда, 0 - все остальное
	int nStartAddress;          //смещение адреса начала трансляции проги относительно 01000 == по-умолчанию
	int nPC;                    //текущий PC при компиляции, измеряется в байтах.
	int nProgramLength;         //длина компилируемой программы
	int nError;                 //флаг возникновения ошибки, и одновременно счётчик.
	wstring strFileName;        //имя обрабатываемого файла
};


extern GlobalParams g_GlobalParameters;

#define START_ADDRESS 0
#define START_ADDRESS_OFFSET -01000
#define HIGH_BOUND 0177000

void InitGlobalParameters(GlobalParams *gp);
void ReInitGlobalParameters(GlobalParams *gp);

