mirror of
https://github.com/inexorabletash/jsbasic.git
synced 2025-02-16 05:32:10 +00:00
Add softswitch reads for display modes
Fixes #32 The RdAltChar (mousetext) is not accurate. Under Virtual II it seems to always return true if the 80 column firmware is active, regardless of which character set is active.
This commit is contained in:
parent
44e308f030
commit
17b0baf7e5
10
basic.js
10
basic.js
@ -412,7 +412,15 @@ this.basic = (function() {
|
||||
0xC060: function() { return env.tty.getButtonState ? env.tty.getButtonState(3) : 0; },
|
||||
0xC061: function() { return env.tty.getButtonState ? env.tty.getButtonState(0) : 0; },
|
||||
0xC062: function() { return env.tty.getButtonState ? env.tty.getButtonState(1) : 0; },
|
||||
0xC063: function() { return env.tty.getButtonState ? env.tty.getButtonState(2) : 0; }
|
||||
0xC063: function() { return env.tty.getButtonState ? env.tty.getButtonState(2) : 0; },
|
||||
|
||||
// Graphics State
|
||||
0xC01A: function() { return (env.display && !env.display.getState().graphics) * 128; },
|
||||
0xC01B: function() { return (env.display && !env.display.getState().full) * 128; },
|
||||
0xC01C: function() { return (env.display && !env.display.getState().page1) * 128; },
|
||||
0xC01D: function() { return (env.display && !env.display.getState().lores) * 128; },
|
||||
0xC01E: function() { return (env.tty.isAltCharset && env.tty.isAltCharset()) * 128; },
|
||||
0xC01F: function() { return (env.tty.isFirmwareActive && env.tty.isFirmwareActive()) * 128; }
|
||||
};
|
||||
|
||||
poke_table = {
|
||||
|
3
index.js
3
index.js
@ -58,6 +58,9 @@ window.addEventListener('DOMContentLoaded', function() {
|
||||
hires2.show(false);
|
||||
tty.splitScreen(0);
|
||||
}
|
||||
},
|
||||
getState: function() {
|
||||
return Object.assign({}, this.state);
|
||||
}
|
||||
};
|
||||
var pdl = [0, 0, 0, 0];
|
||||
|
@ -304,6 +304,14 @@ can be literals (unquoted strings), strings, or numbers
|
||||
<li><code>PEEK(230)</code> — Hi-Res plotting page (32 = page 1, 64 = page 2)
|
||||
<li><code>PEEK(49152)</code> — Read Keyboard
|
||||
<li><code>PEEK(49168)</code> — Clear Keyboard strobe
|
||||
|
||||
<li><code>PEEK(49178)</code> — See if text mode (> 127) or graphics mode (< 128)
|
||||
<li><code>PEEK(49179)</code> — See if mixed mode (> 127) or full mode (< 128)
|
||||
<li><code>PEEK(49180)</code> — See if page2 (> 127) or page1 (< 128)
|
||||
<li><code>PEEK(49181)</code> — See if hires mode (> 127) or lores mode (< 128)
|
||||
<li><code>PEEK(49182)</code> — See if mousetext mode (> 127)
|
||||
<li><code>PEEK(49188)</code> — See if 80-column mode (> 127)
|
||||
|
||||
<li><code>PEEK(49200)</code> — Click Speaker (no-op)
|
||||
<li><code>PEEK(49248)</code> — Read Paddle Button #3 — <em>Use the PageDown key</em>
|
||||
<li><code>PEEK(49249)</code> — Read Paddle Button #0 — <em>Use the Home key</em>
|
||||
|
@ -403,9 +403,8 @@
|
||||
7001 IF NOT LR THEN PRINT "<skipping GR tests>" : GOTO 8000
|
||||
|
||||
7010 T$ = "GR"
|
||||
: U = PEEK(36) : V = PEEK(37)
|
||||
: GR : S = (PEEK(37) = 23) : TEXT : POKE 36,U : POKE 37,V : GOSUB 1
|
||||
: GR : S = (PEEK(34) = 20) : TEXT : POKE 36,U : POKE 37,V : GOSUB 1
|
||||
: U = PEEK(36) : V = PEEK(37) : GR : S = (PEEK(37) = 23) : TEXT : POKE 36,U : POKE 37,V : GOSUB 1
|
||||
: U = PEEK(36) : V = PEEK(37) : GR : S = (PEEK(34) = 20) : TEXT : POKE 36,U : POKE 37,V : GOSUB 1
|
||||
|
||||
7011 POKE 49232,0 : POKE 49234,0 : POKE 49238,0
|
||||
|
||||
@ -659,7 +658,7 @@
|
||||
: DEF FN A$(X$) = X$ + X$ : S = (FN A$("ABC") = "ABCABC") : GOSUB 1
|
||||
|
||||
15000 PRINT : PRINT "PEEK Compatibility Shims ";
|
||||
: PRINT "UNIT TESTS NOT YET IMPLEMENTED ";
|
||||
: PRINT "UNIT TESTS NOT FULLY IMPLEMENTED ";
|
||||
15001 X = PEEK(49152) : X = PEEK(-16384) : REM Read keyboard
|
||||
15002 X = PEEK(49168) : X = PEEK(-16368) : REM Clear keyboard strobe
|
||||
15003 X = PEEK(49200) : X = PEEK(-16336) : REM Toggle speaker (no-op)
|
||||
@ -673,6 +672,29 @@
|
||||
15010 REM Do as part of I/O follow-on module
|
||||
15010 REM **********************************************
|
||||
|
||||
15020 T$ = "PEEK(49178) RdTEXT"
|
||||
: S = (PEEK(49178) > 127) : GOSUB 1
|
||||
: U = PEEK(36) : V = PEEK(37) : GR : S = (PEEK(49178) < 128) : TEXT : POKE 36,U : POKE 37,V : GOSUB 1
|
||||
|
||||
15030 T$ = "PEEK(49179) RdMIXED"
|
||||
: HGR : S = (PEEK(49179) > 127) : TEXT : GOSUB 1
|
||||
: HGR2 : S = (PEEK(49179) < 128) : TEXT : GOSUB 1
|
||||
|
||||
15040 T$ = "PEEK(49180) RdPage2"
|
||||
: HGR2 : S = (PEEK(49180) > 127) : TEXT : GOSUB 1
|
||||
: HGR : S = (PEEK(49180) < 128) : TEXT : GOSUB 1
|
||||
|
||||
15050 T$ = "PEEK(49181) RdHiRes"
|
||||
: HGR : S = (PEEK(49181) > 127) : TEXT : GOSUB 1
|
||||
: U = PEEK(36) : V = PEEK(37) : GR : S = (PEEK(49181) < 128) : TEXT : POKE 36,U : POKE 37,V : GOSUB 1
|
||||
|
||||
15060 T$ = "PEEK(49182) RdAltChar"
|
||||
: S = (PEEK(49182) < 128) : GOSUB 1
|
||||
: PRINT CHR$(15);CHR$(27); : S = (PEEK(49182) > 127) : PRINT CHR$(24);CHR$(14); : GOSUB 1
|
||||
|
||||
15070 T$ = "PEEK(49183) Rd80Col"
|
||||
: S = (PEEK(49183) > 127) : GOSUB 1
|
||||
|
||||
|
||||
16000 PRINT : PRINT "Operators ";
|
||||
|
||||
|
@ -69,6 +69,9 @@
|
||||
hires2.show(false);
|
||||
tty.splitScreen(0);
|
||||
}
|
||||
},
|
||||
getState: function() {
|
||||
return Object.assign({}, this.state);
|
||||
}
|
||||
};
|
||||
var pdl = [0, 0, 0, 0];
|
||||
|
7
tty.js
7
tty.js
@ -239,6 +239,13 @@ function TTY(screenElement, keyboardElement) {
|
||||
init(active, 24, active ? 80 : 40);
|
||||
};
|
||||
|
||||
this.isFirmwareActive = function isFirmwareActive() {
|
||||
return firmwareActive;
|
||||
};
|
||||
|
||||
this.isAltCharset = function isAltCharset() {
|
||||
return mousetext;
|
||||
};
|
||||
|
||||
function scrollUp() {
|
||||
var x, y, cell;
|
||||
|
Loading…
x
Reference in New Issue
Block a user