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