home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Antic Magazine 1989 October
/
Antic_Magazine_1989_10_Antic_Side_A.atr
/
cntanl.m65
< prev
next >
Wrap
Text File
|
2023-02-26
|
4KB
|
1 lines
10 ;BASIC PROFILER COUNT ANALYZER¢20 ; XE VERSION BY ERIC WOODRUFF¢30 ; (c) 1989, ANTIC PUBLISHING¢40 ;¢50 ; DEFINITIONS:¢60 ;The buffer is a string address passed to the routine (BTNK).¢70 ; 4 bytes per entry:¢80 ; Lo, Hi of line number (counter).¢90 ; Lo, Hi of count.¢0100 ;¢0110 MEMPTR = $CB ;Memory pointer.¢0120 SRCH = $CD ;Search pointer.¢0130 AMOUNT = $CF ;Number to bottlenecks to get.¢0140 PBSAV = $D0 ;PORTB save location.¢0150 LAST = $D4 ;Last highest bottleneck.¢0160 COUNT = $DA ;Line # counter.¢0170 ADSAV = $DC ;Search address save location.¢0180 BTNK = $DE ;Bottleneck string address pointer.¢0190 MAYB = $E0 ;Holder for a possibility.¢0200 PORTB = $D301 ;For bank selection.¢0210 ;¢0220 *= $9A00¢0230 ;¢0240 ; This sorts through all the¢0250 ; counters in extended RAM and¢0260 ; send the specified number of¢0270 ; entries to the buffer for a¢0280 ; report to the user.¢0290 ;¢0300 PLA ¢0310 PLA ;Get the passed¢0320 STA BTNK+1 ;string address.¢0330 STA ADSAV+1 ;For search.¢0340 PLA ¢0350 STA BTNK¢0360 STA ADSAV¢0370 PLA ;Get number of¢0380 PLA ;bottlenecks to¢0390 STA AMOUNT ;find.¢0400 LDA PORTB ;Save PORTB.¢0410 STA PBSAV¢0420 ANALYZE¢0430 LDA #0 ;Start from 0¢0440 STA COUNT ;and go through¢0450 STA COUNT+1 ;32767.¢0460 STA LAST+2 ;Clear last¢0470 STA LAST+3 ;bottleneck.¢0480 CHECK¢0490 LDA COUNT ;Move counter¢0500 STA MEMPTR ;to pointer.¢0510 LDA COUNT+1¢0520 ASL A ;Multiply by¢0530 CLC ;two to get¢0540 ASL MEMPTR ;address in¢0550 ADC #0 ;extended RAM.¢0560 CMP #$40¢0570 BCS SB1 ;Select bank 0?¢0580 LDY #0¢0590 BEQ SELC¢0600 SB1 CMP #$80 ;Select bank 1?¢0610 BCS SB2¢0620 LDY #1¢0630 BNE SELC¢0640 SB2 CMP #$C0 ;Select bank 2?¢0650 BCS SB3¢0660 LDY #2¢0670 BNE SELC¢0680 SB3 LDY #3 ;Select bank 3.¢0690 SELC AND #$3F¢0700 ORA #$40 ;Find counter¢0710 STA MEMPTR+1 ;in RAM.¢0720 TYA ¢0730 ASL A ;Bank * 4 + 193.¢0740 ASL A¢0750 CLC ¢0760 ADC #193¢0770 STA PORTB¢0780 LDY #1¢0790 LDA (MEMPTR),Y ;Check count.¢0800 BNE NOTZ¢0810 DEY ;Equal zero?¢0820 LDA (MEMPTR),Y¢0830 BEQ NEXT ;If so, ignore.¢0840 INY ¢0850 NOTZ¢0860 LDA (MEMPTR),Y ;Is this¢0870 STA MAYB+3 ;counter greater¢0880 CMP LAST+3 ;than the last?¢0890 BCC NEXT¢0900 BNE SEEK ;Yes.¢0910 DEY ¢0920 LDA (MEMPTR),Y ;Check lo¢0930 CMP LAST+2 ;byte.¢0940 BCC NEXT ;No.¢0950 SEEK LDY #0 ;Load lo byte¢0960 LDA (MEMPTR),Y ;if not done.¢0970 STA MAYB+2¢0980 LDA COUNT+1¢0990 STA MAYB+1 ;Store counter.¢1000 LDA COUNT¢1010 STA MAYB ;Save it.¢1020 LDA PBSAV ;Switch back to¢1030 STA PORTB ;normal memory.¢1040 LDA ADSAV ;Restore search¢1050 STA SRCH ;address.¢1060 LDA ADSAV+1¢1070 STA SRCH+1 ;See if counter¢1080 LOOK LDY #0 ;is already in¢1090 LDA (SRCH),Y ;the string.¢1100 CMP MAYB ;Lo bytes =?¢1110 BNE FAIL¢1120 INY ¢1130 LDA (SRCH),Y¢1140 CMP MAYB+1 ;Hi bytes =?¢1150 BEQ NEXT¢1160 FAIL¢1170 LDA #4 ;Check next¢1180 CLC ;entry.¢1190 ADC SRCH¢1200 STA SRCH¢1210 BCC *+4¢1220 INC SRCH+1¢1230 LDY #0 ;End of string?¢1240 LDA #$FF¢1250 CMP (SRCH),Y¢1260 BNE LOOK¢1270 INY ¢1280 CMP (SRCH),Y¢1290 BNE LOOK¢1300 LDX #3 ;Move MAYB to¢1310 MML LDA MAYB,X ;LAST.¢1320 STA LAST,X¢1330 DEX ¢1340 BPL MML¢1350 NEXT LDA PBSAV ;Switch back to¢1360 STA PORTB ;normal memory.¢1370 INC COUNT ;Increment to¢1380 BNE NXT ;the next¢1390 INC COUNT+1 ;counter.¢1400 BMI *+5 ;Count=32768?¢1410 NXT JMP CHECK¢1420 LDY #3 ;Store the¢1430 STR LDA LAST,Y ;counter and¢1440 STA (BTNK),Y ;number to the¢1450 DEY ;string.¢1460 BPL STR¢1470 LDA BTNK ;Add four to¢1480 CLC ;bottleneck¢1490 ADC #4 ;string address.¢1500 STA BTNK¢1510 BCC *+4¢1520 INC BTNK+1¢1530 DEC AMOUNT¢1540 BEQ *+5 ;Done?¢1550 JMP ANALYZE ;Find next one.¢1560 RTS ;All done, exit.¢əəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəə