From d09299ebd423c4b7c4c8f3f2e72af08b151e4df5 Mon Sep 17 00:00:00 2001 From: David Schmenk Date: Fri, 3 Jul 2015 19:51:32 -0700 Subject: [PATCH] Fix keyboard reading for IIe so Virtual ][ works in full-screen --- src/toolsrc/sb.pla | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/src/toolsrc/sb.pla b/src/toolsrc/sb.pla index 36f905a..6c90f8a 100644 --- a/src/toolsrc/sb.pla +++ b/src/toolsrc/sb.pla @@ -415,7 +415,7 @@ asm save_vmstate LDA $03F3 STA VMRESET+1 LDA $03F4 - STA VMRESET+2 + STA VMRESET+2 LDA #RESETENTRY @@ -434,7 +434,7 @@ RESETENTRY STA $03F2 LDA VMRESET+1 STA $03F3 - LDA VMRESET+2 + LDA VMRESET+2 STA $03F4 LDX #$00 STX IFPL @@ -1437,8 +1437,9 @@ def keyin2e byte key repeat cursflash - until ^keyboard >= 128 - key = ^keystrobe + key = ^keyboard + until key >= 128 + ^keystrobe if ^$C062 & 128 // Closed Apple pressed when key is keyarrowleft @@ -1994,7 +1995,7 @@ def parse_err(err) end // // Code tags. Upper bit is IS_RESOLVED flag, lower 15 is offset into codebuff -// Flags are: +// Flags are: // def ctag_new if codetag >= ctag_max; return parse_err(@ctag_full); fin @@ -2875,10 +2876,10 @@ end def calc_binaryop(op) word val1, val2 byte size1, size2, type1, type2 - + if not pop_val(@val2, @size2, @type2); return 0; fin pop_val(@val1, @size1, @type1) - if type1 <> CONST_TYPE and type2 <> CONST_TYPE; return parse_err(@bad_cnst); fin + if type1 <> CONST_TYPE and type2 <> CONST_TYPE; return parse_err(@bad_cnst); fin when op is MUL_TKN val1 = val1 * val2 @@ -2919,7 +2920,7 @@ def calc_binaryop(op) end def parse_constterm(valptr, sizeptr) word type - + when scan is OPEN_PAREN_TKN type = parse_constexpr(valptr, sizeptr) @@ -3040,7 +3041,7 @@ def parse_constexpr(valptr, sizeptr) end def parse_const(valptr) word idptr - + when scan is CHR_TKN is INT_TKN @@ -3541,7 +3542,7 @@ def parse_stmnt loop if token <> UNTIL_TKN; return parse_err(@no_until); fin ctag_resolve(cont_tag) - cont_tag = tag_prevcnt + cont_tag = tag_prevcnt if !parse_expr; return FALSE; fin emit_brfls(tag_repeat) ctag_resolve(break_tag) @@ -3610,7 +3611,7 @@ def parse_stmnt loop if token <> NEXT_TKN; return parse_err(@bad_stmnt); fin emit_branch(tag_for) - cont_tag = tag_prevcnt + cont_tag = tag_prevcnt ctag_resolve(break_tag) emit_drop break_tag = tag_prevbrk @@ -3850,7 +3851,7 @@ def parse_struc strucid[idlen] = ^(tknptr + idlen) next fin - offset = 0 + offset = 0 while nextln == BYTE_TKN or token == WORD_TKN size = 1 if token == BYTE_TKN @@ -3861,7 +3862,7 @@ def parse_struc if scan == OPEN_BRACKET_TKN size = 0 parse_constexpr(@size, @constsize) - if token <> CLOSE_BRACKET_TKN; return parse_err(@no_close_bracket); fin + if token <> CLOSE_BRACKET_TKN; return parse_err(@no_close_bracket); fin scan fin repeat @@ -3872,9 +3873,9 @@ def parse_struc if scan == OPEN_BRACKET_TKN size = 0 parse_constexpr(@size, @constsize) - if token <> CLOSE_BRACKET_TKN; return parse_err(@no_close_bracket); fin + if token <> CLOSE_BRACKET_TKN; return parse_err(@no_close_bracket); fin scan - fin + fin fin if type & WORD_TYPE size = size * 2