0100 ; FAST JUMP›0110 ; BY BILL BODENSTEIN›0120 ; (c)1987, ANTIC PUBLISHING›0130 ;›0140 ; EQUATES›0150 ;›0160 PORTB = $D301   ;Toggle ROM here›0170 BASIC.ON = 253›0180 ;›0190 JSR =   32      ;Decimal opcodes›0200 NOP =   234›0210 STMTAB = $88    ;Start of prog›0220 STMCUR = $8A    ;Current line›0230 FORLN = $A0     ;Lnno saved here›0240 ;›0250 PUT.PATCH = $A000 ;Mem for patch›0260 JSR.HERE = PUT.PATCH+6 ;Actual›0270 ;                       code›0280 ;›0290     *=  $0600   ;Relocatable but›0300 ;                could be called›0310 ;                via USR(1536)›0320 STARTCODE›0330     PLA         ;Remove # args›0340 ;›0350 ;Before searching for line,›0360 ;jump to patch.›0370 MODIFY.BASIC›0380     LDA #JSR    ;JSR PATCH›0390     STA $A9AA›0400     LDA # <JSR.HERE›0410     STA $A9AB›0420     LDA # >JSR.HERE›0430     STA $A9AC›0440     LDA #NOP    ;NOP›0450     STA $A9AD›0460 ;›0470 ;Install patch in unused (except›0480 ;with NEW) BASIC RAM.›0490     LDX #ENDCODE-PATCH-1›0500     LDY #ENDCODE-STARTCODE-1›0510 LOOP›0520     LDA ($D4),Y ;Move bytes from›0530     STA PUT.PATCH,X ;USR code›0540     DEY ›0550     DEX ›0560     BPL LOOP    ;Done when patch›0570     RTS         ;installed›0580 ;›0590 ;Patch to be installed in BASIC›0600 ;RAM. If NEW occurs, BASIC ROM›0610 ;is enabled so that patch isn't›0620 ;accidently executed.›0630 ;(Remember: With FAST-STACK, ROM›0640 ;is always enabled in direct›0650 ;mode.)›0660 PATCH›0670     NOP ›0680     LDX #BASIC.ON›0690     STX PORTB›0700 ;›0710     LDY #1      ;Is lnno >= curr›0720     LDA FORLN+1 ; lnno???›0730     CMP (STMCUR),Y›0740     BCC NORMAL›0750     BNE FAST›0760 ;›0770     DEY ›0780     LDA FORLN›0790     CMP (STMCUR),Y›0800     BCC NORMAL›0810 ;›0820 FAST›0830     LDA STMCUR+1 ;Yes,start from›0840     LDY STMCUR  ; current line›0850     RTS ›0860 NORMAL›0870     LDA STMTAB+1 ;No,start from›0880     LDY STMTAB  ; first line›0890     RTS ›0900 ENDCODE›