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

  1. 0100 ; FAST STACK¢0110 ; BY BILL BODENSTEIN¢0120 ; (c)1987, ANTIC PUBLISHING¢0130 ;¢0140 ;EQUATES¢0150 ;¢0160 PORTB = $D301   ;Toggle ROM¢0170 BASIC.ON = 253¢0180 BASIC.OFF = 255¢0190 ;¢0200 LDA =   165     ;Decimal opcode¢0210 STMCUR = $8A    ;BASIC line ptr¢0220 FORLN = $A0     ;Line # put here¢0230 ;¢0240 PUT.PATCH1 = $A071 ;Patch after¢0250 ;                   STOP/END¢0260 PUT.PATCH2 = PUT.PATCH1+5¢0270 ;¢0280 ;               Relocatable, but¢0290     *=  $0600   ;could be called¢0300 ;                via USR(1536)¢0310 STARTCODE¢0320     PLA         ;Remove # args¢0330 COPY.BASIC¢0340     LDA #$A0    ;Start of BASIC¢0350     STA $E1¢0360     LDA #$00¢0370     STA $E0¢0380     TAY ¢0390 LOOP1¢0400     LDX #BASIC.ON¢0410     STX PORTB   ;BASIC ROM on¢0420     LDA ($E0),Y ;Get a byte¢0430     LDX #BASIC.OFF¢0440     STX PORTB   ;BASIC RAM on¢0450     STA ($E0),Y ;Copy byte¢0460     INY ¢0470     BNE LOOP1   ;And loop¢0480 ;¢0490     INC $E1¢0500     LDA $E1¢0510     CMP #192    ;Until all moved¢0520     BNE LOOP1¢0530 ;¢0540 MODIFY.BASIC¢0550     LDA #STMCUR+1 ;LDA ($8A),Y=>¢0560     STA $B6C6   ;  LDA  $8B¢0570     LDA #LDA    ;  and LDA $8A¢0580     STA $B6C0¢0590     STA $B6C5¢0600 ;¢0610     LDA # <PUT.PATCH2¢0620     STA $BDCC   ;Change JSR from¢0630     LDA # >PUT.PATCH2¢0640     STA $BDCD   ;$B816 to patch2¢0650 ;¢0660 ;Install patch to re-enable ROM¢0670 ;at STOP or END, and patch to¢0680 ;change line pointer.¢0690     LDX #ENDCODE-PATCH1-1¢0700     LDY #ENDCODE-STARTCODE-1¢0710 LOOP2¢0720     LDA ($D4),Y ;Move bytes from¢0730     STA PUT.PATCH1,X ;USR code¢0740     DEY ¢0750     DEX ¢0760     BPL LOOP2   ;Done when patch¢0770 ;¢0780     RTS         ;installed¢0790 ;¢0800 ;Patches to be placed in code¢0810 ;after STOP/END. Note: once¢0820 ;BASIC ROM is enabled by patch1,¢0830 ;patch2 won't be executed.¢0840 PATCH1¢0850     LDX #BASIC.ON¢0860     STX PORTB¢0870 ;¢0880 PATCH2¢0890     LDA FORLN   ;Ln addr is here¢0900     STA STMCUR  ;Point to it¢0910     LDA FORLN+1¢0920     STA STMCUR+1¢0930     LDY #2      ;(Rest is the¢0940     LDA (STMCUR),Y ; same)¢0950     STA $9F¢0960     CLC ¢0970     RTS ¢0980 ENDCODE¢