Ejemplo n.º 1
0
        public void Assemble(String[] lines, byte[] mem)
        {
            String line;

            hexOutput.Clear();
            results      = "";
            errors       = 0;
            startAddress = 0x0000;
            memory       = mem;
            for (var i = 0; i < 65536; i++)
            {
                memoryMap[i] = '.';
            }
            minAddress = 65535;
            maxAddress = 0;
            labels     = new List <List <object> >();
            assemblyPass(1, lines);
            assemblyPass(2, lines);
            if (showSymbolTable)
            {
                sortLabels();
                results += "\r\n";
                foreach (var item in labels)
                {
                    line = (String)item[0];
                    while (line.Length < 12)
                    {
                        line += " ";
                    }
                    line += ((int)item[1]).ToString("X4");
                    line += "  " + ((int)item[2]).ToString("D5") + " ";
                    if (crossReference)
                    {
                        for (var i = 3; i < item.Count; i++)
                        {
                            line += " " + item[i].ToString();
                        }
                    }
                    line    += "\r\n";
                    results += line;
                }
            }
            if (showMemoryMap)
            {
                appendMemoryMap();
            }
            results += "\r\n";
            results += "Lines Assembled: " + linesAssembled.ToString() + "\r\n";
            results += "Bytes Assembled: " + bytesAssembled.ToString() + "\r\n";
            results += "Errors         : " + errors.ToString() + "\r\n";
            if (outputMode == 'F')
            {
                hexOutput.StartAddress(startAddress);
                hexOutput.End();
                hexOutput.Save(outputFile);
            }
        }