Fix window text bottom - should not be changed if top changes.

The TTY module stores top/height but the Apple monitor stores
top/bottom. If top changes, bottom should remain unchanged.

Improve the POKE 34 shim, and add a test.
This commit is contained in:
Joshua Bell 2020-06-24 21:19:49 -07:00
parent c64c10e5d2
commit 697ccd63e9
2 changed files with 9 additions and 2 deletions

View File

@ -427,7 +427,11 @@ this.basic = (function() {
// Text window // Text window
0x0020: function(v) { if (env.tty.textWindow) { env.tty.textWindow.left = v; } }, 0x0020: function(v) { if (env.tty.textWindow) { env.tty.textWindow.left = v; } },
0x0021: function(v) { if (env.tty.textWindow) { env.tty.textWindow.width = v; } }, 0x0021: function(v) { if (env.tty.textWindow) { env.tty.textWindow.width = v; } },
0x0022: function(v) { if (env.tty.textWindow) { env.tty.textWindow.top = v; } }, 0x0022: function(v) { if (env.tty.textWindow) {
var bottom = env.tty.textWindow.top + env.tty.textWindow.height;
env.tty.textWindow.top = v;
env.tty.textWindow.height = bottom - env.tty.textWindow.top;
} },
0x0023: function(v) { if (env.tty.textWindow) { env.tty.textWindow.height = v - env.tty.textWindow.top; } }, 0x0023: function(v) { if (env.tty.textWindow) { env.tty.textWindow.height = v - env.tty.textWindow.top; } },
0x0024: function(v) { env.tty.setCursorPosition(v, void 0); }, 0x0024: function(v) { env.tty.setCursorPosition(v, void 0); },
0x0025: function(v) { env.tty.setCursorPosition(void 0, v); }, 0x0025: function(v) { env.tty.setCursorPosition(void 0, v); },

View File

@ -506,7 +506,7 @@
9000 PRINT : PRINT "POKE Compatibility Shims "; 9000 PRINT : PRINT "POKE Compatibility Shims ";
: PRINT "UNIT TESTS NOT YET IMPLEMENTED "; : PRINT "UNIT TESTS NOT FULLY IMPLEMENTED ";
9001 POKE 49168,0 : POKE -16368,0 : REM Clear kbd strobe 9001 POKE 49168,0 : POKE -16368,0 : REM Clear kbd strobe
9002 POKE 49200,0 : POKE -16336,0 : REM Toggle speaker 9002 POKE 49200,0 : POKE -16336,0 : REM Toggle speaker
9003 POKE 49232,0 : POKE -16304,0 : REM Graphics mode 9003 POKE 49232,0 : POKE -16304,0 : REM Graphics mode
@ -517,6 +517,9 @@
9008 POKE 49233,0 : POKE -16303,0 : REM Text mode 9008 POKE 49233,0 : POKE -16303,0 : REM Text mode
9009 SPEED= 0 : SPEED= 255 : REM SPEED= (no-op) 9009 SPEED= 0 : SPEED= 255 : REM SPEED= (no-op)
9010 T$ = "POKE 34"
: T = PEEK(34) : U = PEEK(35) : POKE 34,T+1 : S = (PEEK(35) = U) : GOSUB 1 : POKE 34,T : POKE 35,U
10000 PRINT : PRINT "Numeric Functions "; 10000 PRINT : PRINT "Numeric Functions ";
10001 DEF FN E(X) = ABS(X) < 0.001 : REM Within-Epsilon 10001 DEF FN E(X) = ABS(X) < 0.001 : REM Within-Epsilon