diff --git a/basic/code17.s b/basic/code17.s index fc386f55..7a79d4eb 100644 --- a/basic/code17.s +++ b/basic/code17.s @@ -51,13 +51,13 @@ peek lda poker+1 jsr getadr0 ldy #0 lda poker+1 - cmp #$c0 + cmp #$a0 bcs peek1 - lda (poker),y ;RAM + lda (poker),y ;Low RAM jmp peek2 -peek1 lda #poker - ldx #BANK_KERNAL - jsr fetch ;ROM +peek1 lda #poker ;High RAM or ROM + ldx curbank + jsr fetch peek2 tay dosgfl pla sta poker @@ -65,10 +65,19 @@ dosgfl pla sta poker+1 jmp sngflt poke jsr getnum + lda poker+1 + cmp #$a0 + bcs pokefr txa ldy #0 sta (poker),y rts +pokefr lda #poker + sta stavec + txa + ldx curbank + ldy #0 + jmp stash fnwait jsr getnum stx andmsk ldx #0 diff --git a/basic/code26.s b/basic/code26.s index 41526f99..cbb98b92 100644 --- a/basic/code26.s +++ b/basic/code26.s @@ -42,6 +42,9 @@ setmsg =$ff90 plot =$fff0 csys jsr frmadr ;get int. addr + lda linnum+1 + cmp #$a0 + bcs csysfar lda #>csysrz ;push return address pha lda # stack + pha + lda sareg ;A -> stack + pha + ldx sxreg ;X -> stack + phx + ldy syreg ;Fetch Y + + lda linnum ;Set jsrfar target address + sta jmpfr+1 + lda linnum+1 + sta jmpfr+2 + + tsx ;Push return bank to extra byte reserved on stack + lda #BANK_BASIC + sta $0104,x + plx + + lda curbank ;Fetch target bank, and go far! + jmp jsrfar3 + csysrz =*-1 ;return to here php ;save status reg sta sareg ;save 6502 regs @@ -69,8 +99,9 @@ nsnerr6 ldx vartab ;end save addr ldy vartab+1 lda #