home *** CD-ROM | disk | FTP | other *** search
/ Antic Magazine 1988 February / Antic_Magazine_1988_02_Antic_Side_A.atr / fastjump.m65 < prev    next >
Text File  |  2023-02-26  |  2KB  |  1 lines

  1. 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¢