Atari COM-File Tracer#
00010 ------------------------------ 00020 * FILE-TRACE ROUTINE V1.0 * 00030 * * 00040 * LAST : 28.01.1988 * 00050 ------------------------------ 00060 .LI OFF 00070 ------------------------------ 00080 PNT .EQ $D4 00090 ENDE .EQ $D6 00100 FLAG .EQ $CC 00110 ICCOM .EQ $342 00120 ICBAL .EQ $344 00130 ICBAH .EQ $345 00140 ICBLL .EQ $348 00150 ICBLH .EQ $349 00160 ICAX1 .EQ $34A 00170 CIOV .EQ $E456 00180 ------------------------------ 00190 START JSR TEXTOUT 00200 .HX 9B9B9B 00210 .AS "THE FILETRACER:" 00220 .HX 9B 00230 .AS "---------------" 00240 .HX 9B 00250 .AS "FILE>@" 00260 JSR INPUT 00270 LDA FNAME 00280 CMP #$9B 00290 BEQ .2 00300 LDA #': 00310 CMP FNAME+1 00320 BEQ .1 00330 CMP FNAME+2 00340 BEQ .1 00350 LDY #$0C 00360 .0 LDA FNAME,Y 00370 STA FNAME+2,Y 00380 DEY 00390 BPL .0 00400 LDA #'D 00410 STA FNAME 00420 LDA #': 00430 STA FNAME+1 00440 .1 JSR OPEN 00450 JSR TRACE 00460 JSR CLOSE 00470 JMP START 00480 .2 RTS 00490 ------------------------------ 00500 TRACE JSR GET 00510 STA PNT STARTADR 00520 JSR GET 00530 STA PNT+1 00540 LDA #$FF 00550 CMP PNT 00560 BNE .1 00570 CMP PNT+1 00580 BNE .1 00590 JMP TRACE 00600 .1 JSR GET ENDADR 00610 STA ENDE 00620 JSR GET 00630 STA ENDE+1 00640 ------------------------------ 00650 JSR TEXTOUT 00660 .DA #$9B,"MEM:$@" 00670 LDA PNT 00680 LDX PNT+1 00690 JSR HEX16 00700 JSR TEXTOUT 00710 .DA "-$@" 00720 LDA ENDE 00730 LDX ENDE+1 00740 JSR HEX16 00750 LDA #$20 00760 JSR CHAROUT 00770 ------------------------------ 00780 LDA #$00 00790 STA FLAG 00800 LDA PNT+1 00810 CMP #$02 00820 BNE .11 00830 LDA PNT 00840 CMP #$E0 00850 BNE .32 00860 LDA ENDE 00870 CMP #$E3 00880 BCC .31 00890 JSR TEXTOUT 00900 .AS "INIT/@" 00910 LDA #$02 00920 STA FLAG 00930 .31 JSR TEXTOUT 00940 .AS "RUN @" 00950 INC FLAG 00960 INC FLAG 00970 JMP .11 00980 .32 CMP #$E2 00990 BNE .11 01000 JSR TEXTOUT 01010 .AS "INIT@" 01020 LDA #$02 01030 STA FLAG 01040 ------------------------------ 01050 .11 LDA PNT+1 WHILE 01060 CMP ENDE+1 P<=E 01070 BNE .12 01080 LDA PNT 01090 CMP ENDE 01100 BEQ .2 01110 .12 BCC .2 01120 JMP TRACE 01130 ------------------------------ 01140 .2 JSR GET 01150 INC PNT 01160 BNE .3 01170 INC PNT+1 01180 .3 LDY FLAG 01190 BEQ .4 01200 DEC FLAG 01210 PHA 01220 LDA #$20 01230 JSR CHAROUT 01240 PLA 01250 JSR HEX8 01260 .4 JMP .11 01270 ------------------------------ 01280 OPEN JSR CLOSE 01290 LDA #FNAME 01300 STA ICBAL,X DEV LO 01310 LDA /FNAME 01320 STA ICBAH,X DEV HI 01330 LDA #$03 01340 STA ICCOM,X 01350 LDA #$04 01360 STA ICAX1,X 01370 JSR CIOV 01380 BPL .1 01390 JMP ERROR 01400 .1 RTS 01410 ------------------------------ 01420 INPUT LDA #16 01430 LDX #$00 KANAL # 0 01440 LDY #$05 01450 BPL BGET 01460 ------------------------------ 01470 GET LDA #$00 01480 LDX #$20 KANAL # 1 01490 LDY #$07 01500 ------------------------------ 01510 BGET STA ICBLL,X 01520 LDA #$00 01530 STA ICBLH,X 01540 LDA #FNAME 01550 STA ICBAL,X 01560 LDA /FNAME 01570 STA ICBAH,X 01580 TYA 01590 STA ICCOM,X 01600 JSR CIOV 01610 BPL .1 01620 TYA 01630 PHA 01640 JSR CLOSE 01650 PLA 01660 TAY 01670 CPY #$88 01680 BNE .0 01690 PLA 01700 PLA 01710 RTS 01720 .0 JMP ERROR 01730 .1 RTS 01740 ------------------------------ 01750 CLOSE LDX #$20 01760 LDA #$0C 01770 STA ICCOM,X 01780 JMP CIOV 01790 ------------------------------ 01800 * HEX16: 01810 * <A> Register:LO-Byte der Zahl 01820 * <X> Register:HI-Byte der Zahl 01830 ------------------------------ 01840 * 01850 HEX16 PHA 01860 TXA 01870 JSR HEX8 01880 PLA 01890 * 01900 HEX8 PHA 01910 LSR 01920 LSR 01930 LSR 01940 LSR 01950 JSR HEX 01960 PLA 01970 AND #$F 01980 * 01990 HEX CMP #10 02000 BCC .1 02010 CLC 02020 ADC #7 02030 .1 ADC #$30 02040 JMP CHAROUT 02050 ------------------------------ 02060 * Textausgeberoutine ueber * 02070 * Stack. Routine muss mit * 02080 * JSR aufgerufen werden. Der * 02090 * Text folgt direkt im An- * 02100 * schluss an das JSR-State- * 02110 * ment. Der Text muss mit * 02120 * einer Ende-Kennung (hier * 02130 * das @-Zeichen) enden. Das * 02140 * Programm wird ab Textende * 02150 * fortgefuehrt. * 02160 ------------------------------ 02170 TEXTOUT PLA 02180 STA $D0 02190 PLA 02200 STA $D1 02210 ------------------------------ 02220 .0 INC $D0 02230 BNE .1 02240 INC $D1 02250 .1 LDX #0 02260 LDA ($D0,X) 02270 CMP #'@ 02280 BEQ .2 02290 JSR CHAROUT 02300 JMP .0 02310 * 02320 .2 LDA $D1 02330 PHA 02340 LDA $D0 02350 PHA 02360 RTS 02370 ------------------------------ 02380 CHAROUT TAX 02390 LDA $E407 02400 PHA 02410 LDA $E406 02420 PHA 02430 TXA 02440 RTS 02450 ------------------------------ 02460 ERROR PLA POP 02470 PLA 02480 TYA 02490 PHA 02500 JSR TEXTOUT 02510 .HX 9B9B 02520 .AS "˝ERROR #$@" 02530 PLA 02540 JSR HEX8 02550 LDA #$9B 02560 JSR CHAROUT 02570 JMP START 02580 ------------------------------ 02590 FNAME .AS "D1:12345678.123" 02600 ------------------------------ 02610 .OR $2E0 02620 .DA START