mirror of
https://github.com/sehugg/8bitworkshop.git
synced 2025-02-06 13:30:01 +00:00
cleaned up Memory Map view
apple2: no logIOWrite for reads
This commit is contained in:
parent
c5bcd8ad9b
commit
43d844fa79
@ -120,7 +120,14 @@ export type CodeListingMap = {[path:string]:CodeListing};
|
|||||||
export type VerilogOutput =
|
export type VerilogOutput =
|
||||||
{program_rom_variable:string, program_rom:Uint8Array, code:string, name:string, ports:any[], signals:any[]};
|
{program_rom_variable:string, program_rom:Uint8Array, code:string, name:string, ports:any[], signals:any[]};
|
||||||
|
|
||||||
export type Segment = {name:string, start:number, size:number, last?:number, type?:string};
|
export type Segment = {
|
||||||
|
name:string,
|
||||||
|
start:number,
|
||||||
|
size:number,
|
||||||
|
last?:number,
|
||||||
|
type?:string,
|
||||||
|
source?:'native'|'linker'
|
||||||
|
};
|
||||||
|
|
||||||
export type WorkerResult = WorkerErrorResult | WorkerOutputResult<any> | WorkerUnchangedResult;
|
export type WorkerResult = WorkerErrorResult | WorkerOutputResult<any> | WorkerUnchangedResult;
|
||||||
|
|
||||||
|
@ -409,8 +409,12 @@ export class CodeProject {
|
|||||||
|
|
||||||
processBuildSegments(data: WorkerOutputResult<any>) {
|
processBuildSegments(data: WorkerOutputResult<any>) {
|
||||||
// save and sort segment list
|
// save and sort segment list
|
||||||
var segs = (this.platform.getMemoryMap && this.platform.getMemoryMap()["main"]) || [];
|
var segs : Segment[] = (this.platform.getMemoryMap && this.platform.getMemoryMap()["main"]) || [];
|
||||||
if (data.segments) { segs = segs.concat(data.segments || []); }
|
if (segs?.length) { segs.forEach(seg => seg.source = 'native'); }
|
||||||
|
if (data.segments) {
|
||||||
|
data.segments.forEach(seg => seg.source = 'linker');
|
||||||
|
segs = segs.concat(data.segments || []);
|
||||||
|
}
|
||||||
segs.sort((a,b) => {return a.start-b.start});
|
segs.sort((a,b) => {return a.start-b.start});
|
||||||
this.segments = segs;
|
this.segments = segs;
|
||||||
}
|
}
|
||||||
|
@ -245,6 +245,8 @@ export class MemoryMapView implements ProjectView {
|
|||||||
this.maindiv = newDiv(parent, 'vertical-scroll');
|
this.maindiv = newDiv(parent, 'vertical-scroll');
|
||||||
this.maindiv.css('display', 'grid');
|
this.maindiv.css('display', 'grid');
|
||||||
this.maindiv.css('grid-template-columns', '5em 40% 40%');
|
this.maindiv.css('grid-template-columns', '5em 40% 40%');
|
||||||
|
//this.maindiv.css('grid-template-rows', '2em auto auto');
|
||||||
|
this.maindiv.css('align-content', 'start');
|
||||||
return this.maindiv[0];
|
return this.maindiv[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -256,17 +258,15 @@ export class MemoryMapView implements ProjectView {
|
|||||||
this.maindiv.append(offset);
|
this.maindiv.append(offset);
|
||||||
}
|
}
|
||||||
var segdiv = $('<div class="segment"/>');
|
var segdiv = $('<div class="segment"/>');
|
||||||
if (!newrow)
|
segdiv.text(seg.name);
|
||||||
|
let alttext = `$${hex(seg.start)} - $${hex(seg.last || seg.start+seg.size-1)}`
|
||||||
|
alttext += ` (${seg.size} bytes)`;
|
||||||
|
// set alttext of div
|
||||||
|
segdiv.attr('title', alttext);
|
||||||
|
if (!newrow || seg.source == 'linker')
|
||||||
segdiv.css('grid-column-start', 3); // make sure it's on right side
|
segdiv.css('grid-column-start', 3); // make sure it's on right side
|
||||||
if (seg.last)
|
var pad = Math.max(3.0, Math.log(seg.size+1)) * 0.5;
|
||||||
segdiv.text(seg.name+" ("+(seg.last-seg.start)+" / "+seg.size+" bytes used)");
|
segdiv.css('height', pad+'em');
|
||||||
else
|
|
||||||
segdiv.text(seg.name+" ("+seg.size+" bytes)");
|
|
||||||
if (seg.size >= 256) {
|
|
||||||
var pad = (Math.log(seg.size) - Math.log(256)) * 0.5;
|
|
||||||
segdiv.css('padding-top', pad+'em');
|
|
||||||
segdiv.css('padding-bottom', pad+'em');
|
|
||||||
}
|
|
||||||
if (seg.type) {
|
if (seg.type) {
|
||||||
segdiv.addClass('segment-'+seg.type);
|
segdiv.addClass('segment-'+seg.type);
|
||||||
}
|
}
|
||||||
@ -288,9 +288,10 @@ export class MemoryMapView implements ProjectView {
|
|||||||
var curofs = 0;
|
var curofs = 0;
|
||||||
var laststart = -1;
|
var laststart = -1;
|
||||||
for (var seg of segments) {
|
for (var seg of segments) {
|
||||||
//var used = seg.last ? (seg.last-seg.start) : seg.size;
|
// add free space
|
||||||
if (seg.start > curofs)
|
if (seg.start > curofs) {
|
||||||
this.addSegment({name:'',start:curofs, size:seg.start-curofs}, true);
|
this.addSegment({ name: '', start: curofs, size: seg.start - curofs }, true);
|
||||||
|
}
|
||||||
this.addSegment(seg, laststart != seg.start);
|
this.addSegment(seg, laststart != seg.start);
|
||||||
laststart = seg.start;
|
laststart = seg.start;
|
||||||
curofs = seg.start + seg.size;
|
curofs = seg.start + seg.size;
|
||||||
|
@ -309,12 +309,12 @@ export class AppleII extends BasicScanlineMachine implements AcceptsBIOS {
|
|||||||
if (address < 0xc000) {
|
if (address < 0xc000) {
|
||||||
this.ram[address] = val;
|
this.ram[address] = val;
|
||||||
this.grdirty[address>>7] = 1;
|
this.grdirty[address>>7] = 1;
|
||||||
this.probe.logIOWrite(address, val);
|
|
||||||
} else if (address < 0xc080) {
|
} else if (address < 0xc080) {
|
||||||
this.read(address); // strobe address, discard result
|
this.read(address); // strobe address, discard result
|
||||||
} else if (address < 0xc100) {
|
} else if (address < 0xc100) {
|
||||||
var slot = (address >> 4) & 0x0f;
|
var slot = (address >> 4) & 0x0f;
|
||||||
this.slots[slot-8] && this.slots[slot-8].write(address & 0xf, val);
|
this.slots[slot-8] && this.slots[slot-8].write(address & 0xf, val);
|
||||||
|
this.probe.logIOWrite(address, val);
|
||||||
} else if (address >= 0xd000 && !this.writeinhibit) {
|
} else if (address >= 0xd000 && !this.writeinhibit) {
|
||||||
if (address >= 0xe000)
|
if (address >= 0xe000)
|
||||||
this.ram[address] = val;
|
this.ram[address] = val;
|
||||||
|
@ -77,7 +77,7 @@ class NewApple2Platform extends Base6502MachinePlatform<AppleII> implements Plat
|
|||||||
{name:'Hires Page 2',start:0x4000,size:0x2000,type:'ram'},
|
{name:'Hires Page 2',start:0x4000,size:0x2000,type:'ram'},
|
||||||
{name:'RAM',start:0x6000,size:0x6000,type:'ram'},
|
{name:'RAM',start:0x6000,size:0x6000,type:'ram'},
|
||||||
{name:'I/O',start:0xc000,size:0x1000,type:'io'},
|
{name:'I/O',start:0xc000,size:0x1000,type:'io'},
|
||||||
{name:'ROM',start:0xd000,size:0x3000-6,type:'rom'},
|
{name:'ROM',start:0xd000,size:0x3000,type:'rom'},
|
||||||
] } };
|
] } };
|
||||||
getROMExtension(rom:Uint8Array) {
|
getROMExtension(rom:Uint8Array) {
|
||||||
if (rom && rom.length == 35*16*256) return ".dsk"; // DSK image
|
if (rom && rom.length == 35*16*256) return ".dsk"; // DSK image
|
||||||
|
@ -24,7 +24,8 @@ class Atari7800Platform extends Base6502MachinePlatform<Atari7800> implements Pl
|
|||||||
{name:'RAM (6166 Block 1)',start:0x140,size:0xc0,type:'ram'},
|
{name:'RAM (6166 Block 1)',start:0x140,size:0xc0,type:'ram'},
|
||||||
{name:'PIA',start:0x280,size:0x18,type:'io'},
|
{name:'PIA',start:0x280,size:0x18,type:'io'},
|
||||||
{name:'RAM',start:0x1800,size:0x1000,type:'ram'}, // TODO: shadow ram
|
{name:'RAM',start:0x1800,size:0x1000,type:'ram'}, // TODO: shadow ram
|
||||||
{name:'Cartridge ROM',start:0x4000,size:0xc000,type:'rom'},
|
{name:'Cartridge ROM',start:0x4000,size:0xc000-6,type:'rom'},
|
||||||
|
{name:'CPU Vectors',start:0xfffa,size:0x6,type:'rom'},
|
||||||
] } };
|
] } };
|
||||||
getROMExtension() { return ".a78"; }
|
getROMExtension() { return ".a78"; }
|
||||||
getDebugTree() {
|
getDebugTree() {
|
||||||
|
@ -363,7 +363,8 @@ class VCSPlatform extends BasePlatform {
|
|||||||
{name:'TIA Registers',start:0x00,size:0x80,type:'io'},
|
{name:'TIA Registers',start:0x00,size:0x80,type:'io'},
|
||||||
{name:'PIA RAM',start:0x80,size:0x80,type:'ram'},
|
{name:'PIA RAM',start:0x80,size:0x80,type:'ram'},
|
||||||
{name:'PIA Ports and Timer',start:0x280,size:0x18,type:'io'},
|
{name:'PIA Ports and Timer',start:0x280,size:0x18,type:'io'},
|
||||||
{name:'Cartridge ROM',start:0xf000,size:0x1000,type:'rom'},
|
{name:'Cartridge ROM',start:0xf000,size:0x1000-6,type:'rom'},
|
||||||
|
{name:'CPU Vectors',start:0xfffa,size:0x6,type:'rom'},
|
||||||
]}};
|
]}};
|
||||||
|
|
||||||
// probing
|
// probing
|
||||||
|
@ -213,10 +213,7 @@ export function linkLD65(step: BuildStep): BuildStepResult {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// TODO: move to Platform class
|
|
||||||
var segments = [];
|
var segments = [];
|
||||||
segments.push({ name: 'CPU Stack', start: 0x100, size: 0x100, type: 'ram' });
|
|
||||||
segments.push({ name: 'CPU Vectors', start: 0xfffa, size: 0x6, type: 'rom' });
|
|
||||||
// TODO: CHR, banks, etc
|
// TODO: CHR, banks, etc
|
||||||
let re_seglist = /(\w+)\s+([0-9A-F]+)\s+([0-9A-F]+)\s+([0-9A-F]+)\s+([0-9A-F]+)/;
|
let re_seglist = /(\w+)\s+([0-9A-F]+)\s+([0-9A-F]+)\s+([0-9A-F]+)\s+([0-9A-F]+)/;
|
||||||
let parseseglist = false;
|
let parseseglist = false;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user