fma-snes65816
Version:
SNES 65816 assembler backend for FMA
114 lines (92 loc) • 3.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var SymbolListWriter = function () {
function SymbolListWriter(symbols, commands) {
(0, _classCallCheck3.default)(this, SymbolListWriter);
this.symbols = symbols;
this.commands = commands;
}
(0, _createClass3.default)(SymbolListWriter, [{
key: 'write',
value: function write() {
var result = [];
var pad = "0000";
result.push('#SNES65816');
result.push('');
result.push('[SYMBOL]');
var symbols = this.symbols.all();
for (var name in symbols) {
var fullAddress = symbols[name];
var bank = (fullAddress >> 16).toString(16);
var address = (fullAddress & 0xFFFF).toString(16);
result.push('' + pad.substr(0, 2 - bank.length) + bank + ':' + pad.substr(0, 4 - address.length) + address + ' ' + name + ' ANY 1');
}
if (this.commands.allConfigurations().length) {
result.push('');
result.push('[CONFIG]');
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = this.commands.allConfigurations()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var config = _step.value;
result.push(config);
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
}
if (this.commands.all().length) {
result.push('');
result.push('[COMMAND]');
var index = 0;
var _iteratorNormalCompletion2 = true;
var _didIteratorError2 = false;
var _iteratorError2 = undefined;
try {
for (var _iterator2 = this.commands.all()[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
var command = _step2.value;
var indexStr = index.toString(16);
result.push('' + pad.substr(0, 4 - indexStr.length) + indexStr + ' ' + JSON.stringify(command));
index++;
}
} catch (err) {
_didIteratorError2 = true;
_iteratorError2 = err;
} finally {
try {
if (!_iteratorNormalCompletion2 && _iterator2.return) {
_iterator2.return();
}
} finally {
if (_didIteratorError2) {
throw _iteratorError2;
}
}
}
}
return result.join("\n");
}
}]);
return SymbolListWriter;
}();
exports.default = SymbolListWriter;
//# sourceMappingURL=SymbolListWriter.js.map