Added some export functionality to dasm
This commit is contained in:
parent
2cbc8847b2
commit
a9ba9c8013
9 changed files with 75 additions and 21 deletions
Binary file not shown.
|
|
@ -82,6 +82,37 @@
|
|||
@define INST_BIOS_NODE_TOGGLE 0x02
|
||||
## ===============================================================================================
|
||||
|
||||
|
||||
|
||||
## ========================================== Other Data =========================================
|
||||
@export_comment /BIOS_API "Structure of a DPT (Dragon Partition Table)."
|
||||
@group /BIOS_API DPTStructure
|
||||
DISK_ADDR 0x0200
|
||||
ENTRIES_START 0x000C
|
||||
|
||||
ENTRY_START_ADDR 0x0000
|
||||
ENTRY_PART_SIZE 0x0004
|
||||
ENTRY_FLAGS 0x0008
|
||||
ENTRY_PART_LBL 0x0024
|
||||
|
||||
ID_CODE 0xF1CA
|
||||
ENTRY_SIZE_B 100
|
||||
@end
|
||||
@export_comment /BIOS_API "\n"
|
||||
|
||||
|
||||
@export_start /BIOS_API
|
||||
@struct DPTBlock
|
||||
ID:2
|
||||
VersionMaj:1
|
||||
VersionMin:1
|
||||
PartCount:1
|
||||
Reserved:7
|
||||
Entries:500
|
||||
@end
|
||||
@export_end
|
||||
## ===============================================================================================
|
||||
|
||||
.data
|
||||
$_bios_version_number_maj 0x00, 0x00
|
||||
$_bios_version_number_min 0x00, 0x04
|
||||
|
|
|
|||
|
|
@ -46,3 +46,14 @@
|
|||
@define Sig_VGA_Text_Single_Color.CLEAR_SCREEN 0xE1
|
||||
## --
|
||||
|
||||
## -- Structure of a DPT (Dragon Partition Table).
|
||||
@define DPTStructure.DISK_ADDR 0x0200
|
||||
@define DPTStructure.ENTRIES_START 0x000C
|
||||
@define DPTStructure.ENTRY_START_ADDR 0x0000
|
||||
@define DPTStructure.ENTRY_PART_SIZE 0x0004
|
||||
@define DPTStructure.ENTRY_FLAGS 0x0008
|
||||
@define DPTStructure.ENTRY_PART_LBL 0x0024
|
||||
@define DPTStructure.ID_CODE 0xF1CA
|
||||
@define DPTStructure.ENTRY_SIZE_B 100
|
||||
## --
|
||||
|
||||
|
|
|
|||
|
|
@ -8,8 +8,6 @@
|
|||
$dpt_block <DPTBlock>
|
||||
|
||||
.code
|
||||
mov R10, 0xE0
|
||||
int 0x30
|
||||
mov R10, 0x0C
|
||||
mov R9, $string
|
||||
int 0x30
|
||||
|
|
@ -33,7 +31,7 @@ _load_dpt_block:
|
|||
mov [$ddd.MemoryAddress], $dpt_block.ID
|
||||
and FL, 0b1111111111111110 ## Disable interrupts
|
||||
mov FL, ACC
|
||||
push $ddd.Mode
|
||||
push $ddd
|
||||
push 1
|
||||
call $_disk_load_from_ddd_blocking
|
||||
or FL, 0b0000000000000001 ## Enable interrupts
|
||||
|
|
|
|||
|
|
@ -1,18 +1,5 @@
|
|||
@guard _DPT_DSS_
|
||||
|
||||
@group DPTStructure
|
||||
DISK_ADDR 0x0200
|
||||
ENTRIES_START 0x000C
|
||||
|
||||
ENTRY_START_ADDR 0x0000
|
||||
ENTRY_PART_SIZE 0x0004
|
||||
ENTRY_FLAGS 0x0008
|
||||
ENTRY_PART_LBL 0x0024
|
||||
|
||||
ID_CODE 0xF1CA
|
||||
ENTRY_SIZE_B 100
|
||||
@end
|
||||
|
||||
@struct DPTBlock
|
||||
ID:2
|
||||
VersionMaj:1
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@
|
|||
|
||||
and FL, 0b1111111111111110 ## Disable interrupts
|
||||
mov FL, ACC
|
||||
push $ddd.Mode
|
||||
push $ddd
|
||||
push 1
|
||||
call $_disk_load_from_ddd_blocking
|
||||
or FL, 0b0000000000000001 ## Enable interrupts
|
||||
|
|
|
|||
|
|
@ -177,6 +177,9 @@
|
|||
Registers (case-insensitive)
|
||||
(?<!\w)(r[1-9]|r10|fl|pp|rv|fp|sp|ip|acc)(?!\w)
|
||||
|
||||
Variables in dasm
|
||||
VARIABLE_NAME(?!\.)(?!\w)
|
||||
|
||||
|
||||
|
||||
#==========================================================================================================================================
|
||||
|
|
|
|||
|
|
@ -1,8 +1,6 @@
|
|||
Assembler:
|
||||
Add evaluation of direct struct instance name as as struct's first member
|
||||
Add Struct export functionality
|
||||
Add single Define export functionality
|
||||
Add subroutine addres export functionality
|
||||
Add subroutine address export functionality
|
||||
|
||||
Bugs:
|
||||
Fix VM closing when reaching hlt instruction
|
||||
|
|
@ -16,6 +14,8 @@ External:
|
|||
|
||||
|
||||
Done:
|
||||
*Add evaluation of direct struct instance name as as struct's first member
|
||||
*Add single Define export functionality
|
||||
*Inverted Colors in Text-Single-Color
|
||||
*show where interrupts are disabled (in call-tree view)
|
||||
*Text visualization for hardware interrupts (in call-tree view)
|
||||
|
|
|
|||
|
|
@ -736,6 +736,7 @@ namespace dragon
|
|||
return;
|
||||
}
|
||||
int32_t data_index = 0;
|
||||
newLines.push_back("!" + symbolName);
|
||||
for (auto& member : struct_def.members)
|
||||
{
|
||||
ostd::String newLine = symbolName;
|
||||
|
|
@ -914,10 +915,25 @@ namespace dragon
|
|||
|
||||
void Assembler::parseDataSection(void)
|
||||
{
|
||||
// for (auto& line : m_rawDataSection)
|
||||
// std::cout << line << "\n";
|
||||
for (auto& line : m_rawDataSection)
|
||||
{
|
||||
ostd::String lineEdit(line);
|
||||
tSymbol symbol;
|
||||
if (lineEdit.startsWith("!"))
|
||||
{
|
||||
if (lineEdit.contains(" "))
|
||||
{
|
||||
std::cout << "Invalid phantom data entry: " << lineEdit << "\n";
|
||||
continue;
|
||||
}
|
||||
lineEdit.substr(1).trim();
|
||||
symbol.bytes.clear();
|
||||
symbol.address = m_currentDataAddr;
|
||||
m_symbolTable[lineEdit] = symbol;
|
||||
continue;
|
||||
}
|
||||
if (!lineEdit.startsWith("$") || lineEdit.indexOf(" ") < 2)
|
||||
{
|
||||
std::cout << "Invalid data entry: " << lineEdit << "\n";
|
||||
|
|
@ -2367,7 +2383,15 @@ namespace dragon
|
|||
{
|
||||
ostd::String lineEdit(line);
|
||||
for (auto& symbol : m_symbolTable)
|
||||
lineEdit.replaceAll(symbol.first, ostd::Utils::getHexStr(symbol.second.address, true, 2));
|
||||
{
|
||||
ostd::String regex = "\\" + symbol.first.new_regexReplace("\\.", "\\.") + "(?!\\.)(?!\\w)";
|
||||
|
||||
// std::cout << "SYMBOL: " << symbol.first << "\n";
|
||||
// std::cout << "LINE: " << lineEdit << "\n";
|
||||
// std::cout << "REGEX: " << regex << "\n";
|
||||
lineEdit.regexReplace(regex, ostd::Utils::getHexStr(symbol.second.address, true, 2), false);
|
||||
// std::cout << "NEW_LINE: " << lineEdit << "\n\n";
|
||||
}
|
||||
return lineEdit;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue