mirror of
https://github.com/sehugg/8bitworkshop.git
synced 2024-11-25 18:33:11 +00:00
verilog.sim platform and verilog.html
This commit is contained in:
parent
a76a6c81b8
commit
ca0c7cf045
2
Makefile
2
Makefile
@ -18,7 +18,7 @@ lint:
|
|||||||
# https://github.com/Kentzo/git-archive-all
|
# https://github.com/Kentzo/git-archive-all
|
||||||
archive:
|
archive:
|
||||||
mkdir -p release
|
mkdir -p release
|
||||||
git-archive-all --prefix 8bitworkshop-2.0/ release/8bitworkshop-2.0.zip # 2.0
|
git-archive-all --prefix 8bitworkshop-3.2.0/ release/8bitworkshop-3.2.0.zip # 3.2.0
|
||||||
#git-archive-all --prefix 8bitworkshop-1.1/ release/8bitworkshop-1.1.zip 1.1
|
#git-archive-all --prefix 8bitworkshop-1.1/ release/8bitworkshop-1.1.zip 1.1
|
||||||
git archive --prefix 8bitworkshop- -o release/8bitworkshop-tools.zip HEAD tools
|
git archive --prefix 8bitworkshop- -o release/8bitworkshop-tools.zip HEAD tools
|
||||||
|
|
||||||
|
@ -744,4 +744,24 @@ var VerilogPlatform = function(mainElement, options) {
|
|||||||
|
|
||||||
////////////////
|
////////////////
|
||||||
|
|
||||||
|
var VERILOG_SIM_PRESETS = [
|
||||||
|
{id:'clock_divider.v', name:'Clock Divider'},
|
||||||
|
{id:'lfsr.v', name:'Linear Feedback Shift Register'},
|
||||||
|
{id:'hvsync_generator.v', name:'Video Sync Generator'},
|
||||||
|
{id:'test_hvsync.v', name:'Test Pattern'},
|
||||||
|
{id:'starfield.v', name:'Scrolling Starfield'},
|
||||||
|
{id:'chardisplay.v', name:'RAM Text Display'},
|
||||||
|
{id:'sound_generator.v', name:'Sound Generator'},
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
var VerilogSimulatorPlatform = function(mainElement, options) {
|
||||||
|
this.__proto__ = new (VerilogPlatform as any)(mainElement, options);
|
||||||
|
|
||||||
|
this.getPresets = function() { return VERILOG_SIM_PRESETS; }
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////
|
||||||
|
|
||||||
PLATFORMS['verilog'] = VerilogPlatform;
|
PLATFORMS['verilog'] = VerilogPlatform;
|
||||||
|
PLATFORMS['verilog.sim'] = VerilogSimulatorPlatform;
|
||||||
|
@ -59,7 +59,7 @@ export class CodeProject {
|
|||||||
|
|
||||||
parseIncludeDependencies(text:string):string[] {
|
parseIncludeDependencies(text:string):string[] {
|
||||||
var files = [];
|
var files = [];
|
||||||
if (this.platform_id == 'verilog') {
|
if (this.platform_id.startsWith('verilog')) {
|
||||||
var re = /^\s*(`include|[.]include)\s+"(.+?)"/gmi;
|
var re = /^\s*(`include|[.]include)\s+"(.+?)"/gmi;
|
||||||
var m;
|
var m;
|
||||||
while (m = re.exec(text)) {
|
while (m = re.exec(text)) {
|
||||||
@ -80,7 +80,7 @@ export class CodeProject {
|
|||||||
|
|
||||||
parseLinkDependencies(text:string):string[] {
|
parseLinkDependencies(text:string):string[] {
|
||||||
var files = [];
|
var files = [];
|
||||||
if (this.platform_id == 'verilog') {
|
if (this.platform_id.startsWith('verilog')) {
|
||||||
//
|
//
|
||||||
} else {
|
} else {
|
||||||
// for .c -- //#link "file" (or ;link or #link)
|
// for .c -- //#link "file" (or ;link or #link)
|
||||||
@ -229,7 +229,7 @@ export class CodeProject {
|
|||||||
console.log(err); // TODO?
|
console.log(err); // TODO?
|
||||||
}
|
}
|
||||||
if (!depends) depends = [];
|
if (!depends) depends = [];
|
||||||
if (this.platform_id == 'verilog') {
|
if (this.platform_id.startsWith('verilog')) {
|
||||||
// TODO: should get rid of this msg format
|
// TODO: should get rid of this msg format
|
||||||
this.worker.postMessage({
|
this.worker.postMessage({
|
||||||
code:text,
|
code:text,
|
||||||
|
@ -893,7 +893,7 @@ function setupDebugControls(){
|
|||||||
} else
|
} else
|
||||||
$("#dbg_tovsync").hide();
|
$("#dbg_tovsync").hide();
|
||||||
|
|
||||||
if ((platform.runEval || platform.runToPC) && platform_id != 'verilog') {
|
if ((platform.runEval || platform.runToPC) && !platform_id.startsWith('verilog')) {
|
||||||
$("#dbg_toline").click(runToCursor).show();
|
$("#dbg_toline").click(runToCursor).show();
|
||||||
Mousetrap.bindGlobal('ctrl+alt+l', runToCursor);
|
Mousetrap.bindGlobal('ctrl+alt+l', runToCursor);
|
||||||
} else
|
} else
|
||||||
|
228
verilog.html
Normal file
228
verilog.html
Normal file
@ -0,0 +1,228 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>8bitworkshop IDE</title>
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=yes">
|
||||||
|
<style type="text/css" media="screen">
|
||||||
|
body {
|
||||||
|
overflow: hidden !important;
|
||||||
|
font-size: 11px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<link rel="stylesheet" href="css/ui.css">
|
||||||
|
<script>
|
||||||
|
window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
|
||||||
|
if (window.location.host.endsWith('8bitworkshop.com')) {
|
||||||
|
ga('create', 'UA-54497476-9', 'auto');
|
||||||
|
ga('set', 'anonymizeIp', true);
|
||||||
|
ga('send', 'pageview');
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<script async src='https://www.google-analytics.com/analytics.js'></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<!-- for file upload -->
|
||||||
|
<input type="file" id="uploadFileElem" multiple accept="*" style="display:none" onchange="handleFileUpload(this.files)">
|
||||||
|
|
||||||
|
<div id="controls_top" style="user-select: none">
|
||||||
|
<span class="dropdown">
|
||||||
|
<a class="btn btn-secondary dropdown-toggle" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" title="Menu">
|
||||||
|
<span class="glyphicon glyphicon-menu-hamburger" aria-hidden="true"></span></button>
|
||||||
|
<span class="caret"></span>
|
||||||
|
</a>
|
||||||
|
<ul class="dropdown-menu" aria-labelledby="dropdownMenuButton">
|
||||||
|
<li><a class="dropdown-item" href="#" id="item_new_file">New Project...</a></li>
|
||||||
|
<li><a class="dropdown-item" href="#" id="item_upload_file">Upload File...</a></li>
|
||||||
|
<li><a class="dropdown-item" href="#" id="item_reset_file">Revert to Original...</a></li>
|
||||||
|
<li class="dropdown dropdown-submenu">
|
||||||
|
<a tabindex="-1" href="#">Download</a>
|
||||||
|
<ul class="dropdown-menu">
|
||||||
|
<li><a class="dropdown-item" href="#" id="item_download_file">Download Source File</a></li>
|
||||||
|
<li><a class="dropdown-item" href="#" id="item_download_zip">Download Project as ZIP</a></li>
|
||||||
|
<li><a class="dropdown-item" href="#" id="item_download_allzip">Download All Changes as ZIP</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<select id="preset_select" name="" title="Project Select">
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<span class="dropdown">
|
||||||
|
<a class="btn btn-secondary dropdown-toggle" id="windowMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" title="Window Select">
|
||||||
|
<span class="glyphicon glyphicon-folder-open" aria-hidden="true"></span>
|
||||||
|
<span class="caret"></span>
|
||||||
|
</a>
|
||||||
|
<ul class="dropdown-menu" aria-labelledby="windowMenuButton" id="windowMenuList">
|
||||||
|
</ul>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<img id="compile_spinner" src="images/spinner.gif" height="20em" style="visibility:hidden;margin-left:8px;margin-right:8px">
|
||||||
|
<span class="btn_group debug_group" id="debug_bar">
|
||||||
|
<button id="dbg_reset" type="button" title="Reset and Break"><span class="glyphicon glyphicon-refresh" aria-hidden="true"></span></button>
|
||||||
|
<button id="dbg_pause" type="button" title="Pause"><span class="glyphicon glyphicon-pause" aria-hidden="true"></span></button>
|
||||||
|
<button id="dbg_go" type="button" title="Run"><span class="glyphicon glyphicon-play" aria-hidden="true"></span></button>
|
||||||
|
<button id="dbg_step" type="button" title="Step"><span class="glyphicon glyphicon-step-forward" aria-hidden="true"></span></button>
|
||||||
|
<button id="dbg_tovsync" type="button" title="Single Frame"><span class="glyphicon glyphicon-forward" aria-hidden="true"></span></button>
|
||||||
|
<button id="dbg_toline" type="button" title="Run To Line"><span class="glyphicon glyphicon-save" aria-hidden="true"></span></button>
|
||||||
|
<button id="dbg_stepout" type="button" title="Step Out of Subroutine"><span class="glyphicon glyphicon-hand-up" aria-hidden="true"></span></button>
|
||||||
|
<button id="dbg_stepback" type="button" title="Step Backwards"><span class="glyphicon glyphicon-step-backward" aria-hidden="true"></span></button>
|
||||||
|
</span>
|
||||||
|
<span class="btn_group view_group" id="speed_bar" style="display:none">
|
||||||
|
<button id="dbg_slowest" type="button" title="Slowest"><span class="glyphicon glyphicon-fast-backward" aria-hidden="true"></span></button>
|
||||||
|
<button id="dbg_slower" type="button" title="Slower"><span class="glyphicon glyphicon-backward" aria-hidden="true"></span></button>
|
||||||
|
<span class="label"><span id="fps_label">60.00</span> fps</span>
|
||||||
|
<button id="dbg_faster" type="button" title="Faster"><span class="glyphicon glyphicon-forward" aria-hidden="true"></span></button>
|
||||||
|
<button id="dbg_fastest" type="button" title="Faster"><span class="glyphicon glyphicon-fast-forward" aria-hidden="true"></span></button>
|
||||||
|
</span>
|
||||||
|
<span id="verilog_bar" style="display:none">
|
||||||
|
<span class="label"><span id="settle_label"></span> evals/clk</span>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<span class="dropdown" style="float:right">
|
||||||
|
<a class="btn btn-secondary dropdown-toggle" id="booksMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||||
|
GET BOOKS <span class="caret"></span>
|
||||||
|
</a>
|
||||||
|
<ul class="dropdown-menu pull-right" aria-labelledby="dropdownMenuButton">
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item dropdown-link" target="_book_a2600" href="https://www.amazon.com/gp/product/1541021304/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=pzp-20&camp=1789&creative=9325&linkCode=as2&creativeASIN=B01N4DSRIZ&linkId=04d39e274c06e6c93b93d20a9a977111">
|
||||||
|
<img src="images/book_a2600.png"/>
|
||||||
|
<b>Making Games For The Atari 2600</b><!-- (Print/Kindle Editions)-->
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-item dropdown-link" target="_book_arcade" href="https://www.amazon.com/gp/product/1545484759/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1545484759&linkCode=as2&tag=pzp-20&linkId=b27709c022d2ebe639e90316d9f4fd5b">
|
||||||
|
<img src="images/book_arcade.png"/>
|
||||||
|
<b>Making 8-bit Arcade Games in C</b><!-- (Print Edition)-->
|
||||||
|
</a>
|
||||||
|
<!--
|
||||||
|
<a class="dropdown-item dropdown-link" target="_book_arcade_pdf" href="https://gumroad.com/l/8bitworkshoparcadebook">
|
||||||
|
<img src="images/book_arcade.png"/>
|
||||||
|
<b>Making 8-bit Arcade Games in C</b> (Downloadable PDF)
|
||||||
|
</a>
|
||||||
|
-->
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div id="notebook">
|
||||||
|
<div id="workspace">
|
||||||
|
</div>
|
||||||
|
<div class="emulator" id="emulator">
|
||||||
|
<div id="emuoverlay" class="emuoverlay" style="display:none">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="mem_info" class="mem_info" style="display:none">
|
||||||
|
</div>
|
||||||
|
<div id="error_alert" class="alert alert-danger alert-dismissable" style="position:absolute;right:0;top:0;display:none">
|
||||||
|
<button type="button" class="close" onclick="$('.alert').hide()" aria-hidden="true">×</button>
|
||||||
|
<div id="error_alert_msg"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="pleaseWaitModal" class="modal fade">
|
||||||
|
<div class="modal-dialog modal-lg" role="document">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-body">
|
||||||
|
Please wait...
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="videoPreviewModal" class="modal fade">
|
||||||
|
<div class="modal-dialog modal-lg" role="document">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h3 class="modal-title">Video Preview - Right-click to save</h3>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<img id="videoPreviewImage">
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="embedLinkModal" class="modal fade">
|
||||||
|
<div class="modal-dialog modal-lg" role="document">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h3 class="modal-title">Share Playable Link</h3>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<p>Here's a direct link to a playable version of your game:</p>
|
||||||
|
<textarea rows="4" cols="80" id="embedLinkTextarea" class="cliptext"></textarea>
|
||||||
|
<button type="button" class="btn btn-primary" data-clipboard-target="#embedLinkTextarea">Copy Direct Link</button>
|
||||||
|
<p>You can also embed it into an IFRAME:</p>
|
||||||
|
<textarea rows="4" cols="80" id="embedIframeTextarea" class="cliptext"></textarea>
|
||||||
|
<button type="button" class="btn btn-primary" data-clipboard-target="#embedIframeTextarea">Copy IFRAME Tag</button>
|
||||||
|
<p id="embedAdviceWarnIE">Note: These links may be too long for IE/Edge browsers.</p>
|
||||||
|
<p id="embedAdviceWarnAll">Note: These links may be too long for some browsers.</p>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
Choose one (or none) then
|
||||||
|
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script src="jquery/jquery-2.2.3.min.js"></script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
|
||||||
|
<script src="bootstrap/js/bootstrap.min.js"></script>
|
||||||
|
<link rel="stylesheet" href="bootstrap/css/bootstrap-tour.min.css">
|
||||||
|
<script src="bootstrap/js/bootstrap-tour.min.js"></script>
|
||||||
|
|
||||||
|
<script src="src/codemirror/codemirror.js"></script>
|
||||||
|
<script src="codemirror/mode/clike/clike.js"></script>
|
||||||
|
<script src="src/codemirror/6502.js"></script>
|
||||||
|
<script src="codemirror/mode/z80/z80.js"></script>
|
||||||
|
<script src="codemirror/mode/verilog/verilog.js"></script>
|
||||||
|
<link rel="stylesheet" href="css/codemirror.css">
|
||||||
|
<script src="codemirror/addon/edit/matchbrackets.js"></script>
|
||||||
|
<script src="codemirror/addon/search/search.js"></script>
|
||||||
|
<script src="codemirror/addon/search/searchcursor.js"></script>
|
||||||
|
<script src="codemirror/addon/search/jump-to-line.js"></script>
|
||||||
|
<script src="codemirror/addon/dialog/dialog.js"></script>
|
||||||
|
<script src="codemirror/addon/selection/active-line.js"></script>
|
||||||
|
<link rel="stylesheet" href="codemirror/addon/dialog/dialog.css">
|
||||||
|
|
||||||
|
<script src="FileSaver.js/FileSaver.min.js"></script>
|
||||||
|
<script src="localForage/dist/localforage.nopromises.js"></script>
|
||||||
|
<script src="lib/mousetrap.min.js"></script>
|
||||||
|
<script src="lib/mousetrap-global-bind.min.js"></script>
|
||||||
|
<script src="lib/split.min.js"></script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var exports = {};
|
||||||
|
function require(modname) {
|
||||||
|
if (modname == 'jquery') return $;
|
||||||
|
else if (modname.startsWith('.')) return exports;
|
||||||
|
else { console.log("Unknown require()", modname); return exports; }
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script src="gen/util.js"></script>
|
||||||
|
<script src="gen/store.js"></script>
|
||||||
|
<script src="src/vlist.js"></script>
|
||||||
|
<script src="gen/emu.js"></script>
|
||||||
|
<script src="gen/baseplatform.js"></script>
|
||||||
|
<script src="gen/analysis.js"></script>
|
||||||
|
<script src="gen/audio.js"></script>
|
||||||
|
<script src="gen/workertypes.js"></script>
|
||||||
|
<script src="gen/project.js"></script>
|
||||||
|
<script src="gen/windows.js"></script>
|
||||||
|
<script src="gen/views.js"></script>
|
||||||
|
<script src="gen/recorder.js"></script>
|
||||||
|
<script src="gen/waveform.js"></script>
|
||||||
|
<script src="gen/ui.js"></script>
|
||||||
|
|
||||||
|
<script src="local/lzg.js"></script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
//Split(["#workspace", "#emulator"], {sizes: [50,50]});
|
||||||
|
startUI(true);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Reference in New Issue
Block a user