home *** CD-ROM | disk | FTP | other *** search
/ Antic Magazine 1986 September / Antic_Magazine_1986_09_Antic.atr / tracer.m65 < prev    next >
Text File  |  2023-02-26  |  7KB  |  1 lines

  1. 0100 ; BASIC TRACER¢0110 ; BY KEVIN GEVATOSKY¢0120 ; (c) 1986, ANTIC PUBLISHING¢0130 STMCUR = $8A    ;Line # of cur.                        BASIC statement¢0140 SRCPNT = $CB¢0150 DESPNT = $CD¢0160 TIMVAL = $CF    ;Delay timer¢0170 ZPOINT = $D0¢0180 ROMOFF = $FF    ;BASIC ROM 'off'¢0190 SDLSTL = $0230¢0200 CH  =   $02FC¢0210 SOURCE = $A000¢0220 STGO =  $A97E¢0230 DESTIN = $5000¢0240 SKCTL = $D20F¢0250 PORTB = $D301   ;ROM switch¢0260 STARTCODE = $0100¢0270     *=  $0100¢0280 RAMBAS¢0290     JSR SETUP¢0300     JMP MOVE    ;Move BASIC¢0310 SETUP¢0320     LDA # <SOURCE ;Set ZP-pointer                        to start¢0330     STA SRCPNT  ;address of move.¢0340     LDA # >SOURCE¢0350     STA SRCPNT+1¢0360     LDA # <DESTIN ;Set another                           pointer to¢0370     STA DESPNT  ;end address.¢0380     LDA # >DESTIN¢0390     STA DESPNT+1¢0400     LDX #32     ;32 blocks=8K of                       BASIC code.¢0410     LDY #0¢0420     RTS ¢0430 MOVE¢0440     LDA (SRCPNT),Y ;Copy BASIC                            ROM to RAM¢0450     STA (DESPNT),Y¢0460     DEY ¢0470     BNE MOVE¢0480 ;¢0490 NXTPAGE¢0500     INC SRCPNT+1¢0510     INC DESPNT+1¢0520     DEX         ;Decrement to                          next block.¢0530     BPL MOVE¢0540 ;¢0550     LDA #ROMOFF ;Turn off                              BASIC ROM.¢0560     STA PORTB¢0570     JSR SETUP   ;Set up pointers                       for next move.¢0580 MOVE2¢0590     LDA (DESPNT),Y ;Move BASIC                            source code¢0600     STA (SRCPNT),Y ;to RAM                                at $A000¢0610     DEY ¢0620     BNE MOVE2¢0630 ;¢0640 NXTPG2¢0650     INC SRCPNT+1¢0660     INC DESPNT+1¢0670     DEX ¢0680     BPL MOVE2¢0690 ;¢0700 SETVEC¢0710     LDA # <VECTOR ;Put a vector                          in BASIC¢0720     STA $A978   ;which points to                       our routine.¢0730     LDA # >VECTOR¢0740     STA $A979¢0750     JMP START   ;Go set up DL.¢0760     *=  $0600¢0770 ;¢0780 ; *** MODIFY DISPLAY LIST ***¢0790 START¢0800     JSR DLSET¢0810     JMP SOURCE  ;JuMP to init.                         RAM-BASIC.¢0820 DLSET¢0830     LDA SDLSTL  ;Move start                            address of DL¢0840     SEC         ;back two bytes                       to make room for¢0850     SBC #2      ;more DL data.¢0860     STA SDLSTL¢0870     STA CHECK   ;Save low byte of                      addr.for later.¢0880     STA ZPOINT  ;Set up zero-page                      pointer¢0890     BCS NODEC   ;to point at new                       DL start addr.¢0900 ;¢0910     DEC SDLSTL+1¢0920 NODEC¢0930     LDA SDLSTL+1¢0940     STA ZPOINT+1¢0950     LDY #0¢0960 NXTBYT¢0970     LDA DLDATA,Y ;Get data to                           modify DL¢0980     STA (ZPOINT),Y ;and store it                          at new add.¢0990     INY ¢1000     CPY #5¢1010     BNE NXTBYT  ;Do until done.¢1020 ;¢1030 FIND¢1040     LDA (ZPOINT),Y ;Find end of                           the DL¢1050     CMP #65     ;(65=ANTIC JMP                         to start of DL.)¢1060     BEQ FOUND   ;Got it!¢1070 ;¢1080     INC ZPOINT¢1090     BNE NOINC¢1100 ;¢1110     INC ZPOINT+1¢1120 NOINC¢1130     JMP FIND    ;Keep looking                          until found.¢1140 FOUND¢1150     INY         ;Point to byte                         after ANTIC JMP¢1160     LDA SDLSTL  ;Store start adr                       of new DL¢1170     STA (ZPOINT),Y ;for the                               ANTIC JMP.¢1180     INY ¢1190     LDA SDLSTL+1¢1200     STA (ZPOINT),Y¢1210     LDA DLDATA+3 ;Set zero pg.                         ptr. to start¢1220     STA ZPOINT  ;of screen RAM                         for new¢1230     LDA DLDATA+4 ;GR.0 mode line¢1240     STA ZPOINT+1¢1250     LDA #$80    ;Inverse blank¢1260     LDY #39¢1270 INVERT¢1280     STA (ZPOINT),Y ;Store                               inverse chars¢1290     DEY ¢1300     BPL INVERT  ;Do for all                            40 bytes.¢1310 ;¢1320     RTS ¢1330 ; *** TRACE ROUTINE ***¢1340 VECTOR¢1350     PHA         ;Save reg.A for BASIC.¢1360     LDA CHECK   ;Get low byte                          of DL and¢1370     CMP SDLSTL  ;check to see                          if still same.¢1380     BEQ CONT    ;It is, so go on¢1390 ;¢1400     JSR DLSET   ;Set up DL again.¢1410 CONT¢1420     LDA #0¢1430     LDX #5¢1440 BLANK¢1450     DEX         ;Zero out DECVAL¢1460     STA DECVAL,X¢1470     BNE BLANK¢1480 ;¢1490 NEXT¢1500     LDY #0¢1510     LDA (STMCUR),Y ;Get low byte                          of BASIC¢1520     STA LOBYTE  ;and save it.¢1530     INY ¢1540     LDA (STMCUR),Y ;Get hi byte¢1550     STA HIBYTE¢1560     LDY #0¢1570 ;Convert binary to decimal.¢1580 SUBTRACT¢1590     LDA LOBYTE¢1600     SEC ¢1610     SBC DECPLC,Y ;Subtract                              decimal value¢1620     STA TEMPLO  ;from binary                           value.¢1630     LDA HIBYTE¢1640     SBC DECPLC+1,Y¢1650     STA TEMPHI¢1660     BCS DECSTOW ;Branch if OK¢1670 ;¢1680     INY         ;Increment to                          next dec. place¢1690     INY ¢1700     INX         ;and increment                         counter.¢1710     CPX #5      ;All done?¢1720     BEQ DECOUT  ;Yes? Then put                         it on screen.¢1730 ;¢1740     BNE SUBTRACT ;No? Subtract                       next dec. place¢1750 ;¢1760 DECSTOW¢1770     INC DECVAL,X¢1780     LDA TEMPLO¢1790     STA LOBYTE¢1800     LDA TEMPHI¢1810     STA HIBYTE¢1820     JMP SUBTRACT¢1830 DECOUT¢1840     LDX #4¢1850     LDY #22     ;Pos. on screen.¢1860 NXTCH¢1870     LDA DECVAL,X ;Get decimal                           value.¢1880     ORA #$90    ;Convert to                            ATASCII¢1890     STA (ZPOINT),Y ;& display it.¢1900     DEY ¢1910     DEX ¢1920     BPL NXTCH   ;Do until done.¢1930 ;¢1940 NODEL¢1950     LDA SKCTL   ;Check keypress.¢1960     CMP #$FF¢1970     BEQ RESTOR  ;If no keypress¢1980 ;¢1990     LDA CH¢2000     CMP #156    ;Check CTRL-ESC¢2010     BEQ EXIT    ;If pressed then                       skip delay.¢2020 ;¢2030 RESTOR¢2040     LDA #$FF    ;Restore CH¢2050     STA CH¢2060     LDY #0      ;Zero timer.¢2070     STY 20¢2080 DELAY¢2090     LDA 20      ;Get timer value.¢2100     LSR A       ;Divide by 2 for                     better resolution¢2110     CMP TIMVAL¢2120     BNE DELAY   ;Delay until time                      is up.¢2130 ;¢2140 EXIT¢2150     PLA         ;Give Acc. A back                      to BASIC¢2160     JMP STGO¢2170 DECVAL .DS 5¢2180 TEMPLO .DS 1¢2190 TEMPHI .DS 1¢2200 LOBYTE .DS 1¢2210 HIBYTE .DS 1¢2220 CHECK .DS 1¢2230 DLDATA .BYTE $70,$70,$42,$00,$04¢2240 DECPLC .WORD 10000,1000,100,10,1¢2250     *=  $02E0¢2260     .WORD STARTCODE¢