A (PC8080) VT100 can now connect to a (PCx86) IBM PC AT; only problem seems to be flow control now.
Also, each PCjs debugger can now be independently accessed from an external debugger (eg, "pcx86('ver')" or "pc8080('ver')"); the global '$' symbol is no longer used for debugger access.
TODO: There are still many places where GLOBALVAR should be replaced with PCX86.GLOBALVAR or PC8080.GLOBALVAR as appropriate (which I've finally started doing in each debugger.js file).
This commit is contained in:
parent
a3c0995934
commit
5ed8f13840
45 changed files with 10989 additions and 1417 deletions
|
|
@ -403,34 +403,37 @@ str.trim = function(s)
|
|||
return s.replace(/^\s+|\s+$/g, "");
|
||||
};
|
||||
|
||||
/*
|
||||
* Any codes commented out in the following table are deemed "printable"
|
||||
*/
|
||||
str.aASCIICodes = {
|
||||
0x00: "NUL",
|
||||
0x01: "SOH", // Start of Heading
|
||||
0x02: "STX", // Start of Text
|
||||
0x03: "ETX", // End of Text
|
||||
0x04: "EOT", // End of Transmission
|
||||
0x05: "ENQ", // Enquiry
|
||||
0x06: "ACK", // Acknowledge
|
||||
0x07: "BEL", // Bell
|
||||
0x08: "BS", // Backspace
|
||||
0x09: "TAB", // Horizontal Tab
|
||||
0x0A: "LF", // Line Feed (New Line)
|
||||
0x0B: "VT", // Vertical Tab
|
||||
0x0C: "FF", // Form Feed (New Page)
|
||||
0x0D: "CR", // Carriage Return
|
||||
0x0E: "SO", // Shift Out
|
||||
0x0F: "SI", // Shift In
|
||||
0x10: "DLE", // Data Link Escape
|
||||
0x11: "DC1", // Device Control 1
|
||||
0x12: "DC2", // Device Control 2
|
||||
0x13: "DC3", // Device Control 3
|
||||
0x14: "DC4", // Device Control 4
|
||||
0x15: "NAK", // Negative Acknowledge
|
||||
0x16: "SYN", // Synchronous Idle
|
||||
0x17: "ETB", // End of Transmission Block
|
||||
0x18: "CAN", // Cancel
|
||||
0x19: "EM", // End of Medium
|
||||
0x1A: "SUB", // Substitute
|
||||
0x01: "SOH", // (CTRL_A) Start of Heading
|
||||
0x02: "STX", // (CTRL_B) Start of Text
|
||||
0x03: "ETX", // (CTRL_C) End of Text
|
||||
0x04: "EOT", // (CTRL_D) End of Transmission
|
||||
0x05: "ENQ", // (CTRL_E) Enquiry
|
||||
0x06: "ACK", // (CTRL_F) Acknowledge
|
||||
0x07: "BEL", // (CTRL_G) Bell
|
||||
0x08: "BS", // (CTRL_H) Backspace
|
||||
0x09: "TAB", // (CTRL_I) Horizontal Tab
|
||||
// 0x0A: "LF", // (CTRL_J) Line Feed (New Line)
|
||||
0x0B: "VT", // (CTRL_K) Vertical Tab
|
||||
0x0C: "FF", // (CTRL_L) Form Feed (New Page)
|
||||
0x0D: "CR", // (CTRL_M) Carriage Return
|
||||
0x0E: "SO", // (CTRL_N) Shift Out
|
||||
0x0F: "SI", // (CTRL_O) Shift In
|
||||
0x10: "DLE", // (CTRL_P) Data Link Escape
|
||||
0x11: "XON", // (CTRL_Q) Device Control 1 (aka DC1)
|
||||
0x12: "DC2", // (CTRL_R) Device Control 2
|
||||
0x13: "XOFF", // (CTRL_S) Device Control 3 (aka DC3)
|
||||
0x14: "DC4", // (CTRL_T) Device Control 4
|
||||
0x15: "NAK", // (CTRL_U) Negative Acknowledge
|
||||
0x16: "SYN", // (CTRL_V) Synchronous Idle
|
||||
0x17: "ETB", // (CTRL_W) End of Transmission Block
|
||||
0x18: "CAN", // (CTRL_X) Cancel
|
||||
0x19: "EM", // (CTRL_Y) End of Medium
|
||||
0x1A: "SUB", // (CTRL_Z) Substitute
|
||||
0x1B: "ESC", // Escape
|
||||
0x1C: "FS", // File Separator
|
||||
0x1D: "GS", // Group Separator
|
||||
|
|
|
|||
|
|
@ -735,25 +735,34 @@ web.onClickRepeat = function(e, msDelay, msRepeat, fn)
|
|||
};
|
||||
|
||||
web.aPageEventHandlers = {
|
||||
'init': [], // list of window 'onload' handlers
|
||||
'show': [], // list of window 'onpageshow' handlers
|
||||
'exit': [] // list of window 'onunload' handlers (although we prefer to use 'onbeforeunload' if possible)
|
||||
'init': [], // list of window 'onload' handlers
|
||||
'show': [], // list of window 'onpageshow' handlers
|
||||
'exit': [] // list of window 'onunload' handlers (although we prefer to use 'onbeforeunload' if possible)
|
||||
};
|
||||
|
||||
web.fPageReady = false; // set once the browser's first page initialization has occurred
|
||||
web.fPageEventsEnabled = true;
|
||||
web.fPageLoaded = false; // set once the page's first 'onload' event has occurred
|
||||
web.fPageShowed = false; // set once the page's first 'onpageshow' event has occurred
|
||||
web.fPageEventsEnabled = true; // default is true, set to false (or true) by enablePageEvents()
|
||||
|
||||
/**
|
||||
* onPageEvent(sName, fn)
|
||||
*
|
||||
* For 'onload', 'onunload', and 'onpageshow' events, most callers should NOT use this function, but
|
||||
* instead use web.onInit(), web.onShow(), and web.onExit(), respectively.
|
||||
*
|
||||
* The only components that should still use onPageEvent() are THIS component (see the bottom of this file)
|
||||
* and components that need to capture other events (eg, the 'onresize' event in the Video component).
|
||||
*
|
||||
* This function creates a chain of callbacks, allowing multiple JavaScript modules to define handlers
|
||||
* for the same event, which wouldn't be possible if everyone modified window['onload'], window['onunload'],
|
||||
* etc, themselves. However, that's less of a concern now, because assuming everyone else is now using
|
||||
* onInit(), onExit(), etc, then there really IS only one component setting the window callback: this one.
|
||||
*
|
||||
* NOTE: It's risky to refer to obscure event handlers with "dot" names, because the Closure Compiler may
|
||||
* erroneously replace them (eg, window.onpageshow is a good example).
|
||||
*
|
||||
* @param {string} sFunc
|
||||
* @param {function()} fn
|
||||
*
|
||||
* Use this instead of setting window['onload'], window['onunload'], etc.
|
||||
* Allows multiple JavaScript modules to define a handler for the same event.
|
||||
*
|
||||
* Moreover, it's risky to refer to obscure event handlers with "dot" names, because
|
||||
* the Closure Compiler may erroneously replace them (eg, window.onpageshow is a good example).
|
||||
*/
|
||||
web.onPageEvent = function(sFunc, fn)
|
||||
{
|
||||
|
|
@ -777,9 +786,9 @@ web.onPageEvent = function(sFunc, fn)
|
|||
/**
|
||||
* onInit(fn)
|
||||
*
|
||||
* @param {function()} fn
|
||||
*
|
||||
* Use this instead of setting window.onload. Allows multiple JavaScript modules to define their own 'onload' event handler.
|
||||
*
|
||||
* @param {function()} fn
|
||||
*/
|
||||
web.onInit = function(fn)
|
||||
{
|
||||
|
|
@ -837,7 +846,8 @@ web.enablePageEvents = function(fEnable)
|
|||
{
|
||||
if (!web.fPageEventsEnabled && fEnable) {
|
||||
web.fPageEventsEnabled = true;
|
||||
if (web.fPageReady) web.sendPageEvent('init');
|
||||
if (web.fPageLoaded) web.sendPageEvent('init');
|
||||
if (web.fPageShowed) web.sendPageEvent('show');
|
||||
return;
|
||||
}
|
||||
web.fPageEventsEnabled = fEnable;
|
||||
|
|
@ -857,8 +867,18 @@ web.sendPageEvent = function(sEvent)
|
|||
}
|
||||
};
|
||||
|
||||
web.onPageEvent('onload', function onPageLoad() { web.fPageReady = true; web.doPageEvent(web.aPageEventHandlers['init']); });
|
||||
web.onPageEvent('onpageshow', function onPageShow() { web.doPageEvent(web.aPageEventHandlers['show']); });
|
||||
web.onPageEvent(web.isUserAgent("Opera") || web.isUserAgent("iOS")? 'onunload' : 'onbeforeunload', function onPageUnload() { web.doPageEvent(web.aPageEventHandlers['exit']); });
|
||||
web.onPageEvent('onload', function onPageLoad() {
|
||||
web.fPageLoaded = true;
|
||||
web.doPageEvent(web.aPageEventHandlers['init']);
|
||||
});
|
||||
|
||||
web.onPageEvent('onpageshow', function onPageShow() {
|
||||
web.fPageShowed = true;
|
||||
web.doPageEvent(web.aPageEventHandlers['show']);
|
||||
});
|
||||
|
||||
web.onPageEvent(web.isUserAgent("Opera") || web.isUserAgent("iOS")? 'onunload' : 'onbeforeunload', function onPageUnload() {
|
||||
web.doPageEvent(web.aPageEventHandlers['exit']);
|
||||
});
|
||||
|
||||
if (NODE) module.exports = web;
|
||||
|
|
|
|||
Loading…
Reference in a new issue