commit 5a80a6992a880aee0fc9dd08e6138c7aaa900110 from: Sven M. Hallberg date: Sun May 31 18:14:04 2026 UTC LINEUTIL.B.3 commit - d7bdf931da0d9279831a3e2339fbbfaa48e3e09a commit + 5a80a6992a880aee0fc9dd08e6138c7aaa900110 blob - 78c299b343ff32a7f5120f499183b0aa251ade16 blob + 233780dc2f1d7a621bd37396919e4741cd3a0526 Binary files LINEUTIL.B,PRG and LINEUTIL.B,PRG differ blob - 19dfef47214b1c3cfb8df71f3b4dfd0f6963ff90 blob + 9e604aedf27456965a03b2ec3306fa3dc707b213 --- LINEUTIL.B.lst +++ LINEUTIL.B.lst @@ -211,7 +211,7 @@ 708 PRINT "LOAD ["; P; "]"; 709 A$="": INPUT A$: GOSUB 130: L=A 710 IF L=0 THEN L=P -713 OPEN 1,D,2,"@:" + F$ + ",PRG,W" +713 OPEN 1,D,2, F$ + ",PRG,W" 714 H = INT(L / 256): L = L - H*256 715 PRINT# 1, CHR$(L); CHR$(H); 716 IF P >= Q THEN CLOSE 1: END @@ -237,8 +237,8 @@ 745 PRINT 53,"FRESPC",PEEK(53)+PEEK(54)*256 746 PRINT 55,"MEMSIZ",PEEK(55)+PEEK(56)*256 747 END -748 REM -749 REM *RUN 750* READ IO ERROR CHANNEL +748 REM *RUN 750* READ IO ERROR CHANNEL +749 REM 750 FA = PEEK(186) 751 PRINT "DRIVE [";FA;"]";: INPUT A$ 752 A=FA: IF A$ <>"" THEN A=VAL(A$) @@ -357,17 +357,19 @@ 992 REM = APPEND PROGRAM CODE BELOW = 999 REM 1000 REM -1001 REM LINECNT -1002 REM COUNT THE NUMBER OF LINES IN A -1003 REM BASIC PRG FILE. +1001 REM =LINEUTIL= +1002 REM LINE-ORIENTED TOOLS TO EASE +1003 REM WORKING WITH BASIC PROGRAMS. 1004 REM PESCO 2026 1005 REM -1010 REM 1000 TOP OF FILE COMMENT -1020 REM 1500 SYMBOL DEFINITIONS -1030 REM 2000 LINECNT -1040 REM 3000 SUBROUTINES +1009 REM -999 [BASASM] +1010 REM 1000 TOP COMMENT +1015 REM 1500 (SYMBOL DEFINITIONS) +1020 REM 2000 LINECNT +1030 REM 3000 SUBROUTINES 1050 REM 5000 LINECUT 1060 REM 6000 LINECAT +1064 REM 6400 LINECLP 1080 REM 8000 ENTRY POINTS 1090 REM 9000 VARIABLES & STATIC DATA 1099 REM @@ -498,7 +500,7 @@ 2515 DATA SBCZ, 44 2516 DATA STA, $C40B: REM XXX + 2520 REM CALCULATE JUNK = BS - "JUNK" -2525 SEC +2525 DATA SEC 2527 DATA LDA, CNT.BS 2530 DATA SBC, CNT.JUNK 2535 DATA STA, CNT.JUNK @@ -549,13 +551,17 @@ 3000 REM 3001 REM - SUBROUTINES - 3002 REM -3010 REM 3100 PUTSTR -3020 REM 3200 QUOTREM -3030 REM 3400 PRINTNAT -3040 REM 3600 GETSTR -3050 REM 3800 ATOI -3060 REM 4000 READNAT -3070 REM 4100 MEMCPY +3031 REM 3100 PUTSTR +3032 REM 3200 QUOTREM +3034 REM 3400 PRINTNAT +3036 REM 3600 GETSTR +3038 REM 3800 ATOI +3040 REM 4000 READNAT +3041 REM 4100 MEMCPY +3042 REM 4200 GETSTASTO +3043 REM 4300 FINDLINE / FINDNEXT +3044 REM 4400 GETFILE +3045 REM 4500 FINDLAST,PUTNL,PRINTNATLN 3099 REM 3100 DATA 'PUTSTR 3101 REM @@ -614,7 +620,7 @@ 3390 REM 3400 DATA 'PRINTNAT 3401 REM -3402 REM X/Y IN: NUMBER TO PRINT +3402 REM X.Y IN: NUMBER TO PRINT 3403 REM 3404 REM CLOBBERS: A, X, Y, 2, 251-252 3405 REM @@ -679,9 +685,9 @@ 3675 DATA JMP, GS1 3680 DATA 'GS2 3681 DATA CMP#, 32: REM SPC -3682 DATA BMIR, GS1 +3682 DATA BCCR, GS1 3683 DATA CMP#, 127: REM DEL -3684 DATA BPLR, GS1 +3684 DATA BCSR, GS1 3690 DATA STA(Y, 251 3691 DATA INY 3695 DATA JSR, $FFD2 @@ -707,7 +713,7 @@ 3803 REM X/Y OUT: RESULT 3804 REM A OUT: LEN CONSUMED 3805 REM -3806 REM CLOBBERS: 215, 251-254 +3806 REM CLOBBERS: 2, 251-254 3807 REM 3810 DATA STXZ, 251 3811 DATA STYZ, 252 @@ -720,12 +726,12 @@ 3841 DATA BEQR, AI2 3849 REM 3850 DATA CMP#, 48: REM "0" -3851 DATA BMIR, AI2 +3851 DATA BCCR, AI2 3860 DATA CMP#, 58: REM "9" -3861 DATA BPLR, AI2 +3861 DATA BCSR, AI2 3870 DATA SEC 3871 DATA SBC#, 48 -3880 DATA STAZ, 215: REM SAVE DIGIT +3880 DATA STAZ, 2: REM SAVE DIGIT 3885 DATA LDAZ, 253: REM SAVE VALUE 3886 DATA LDXZ, 254 3890 DATA ASLZ, 253: REM DBL 2X @@ -741,7 +747,7 @@ 3910 DATA ASLZ, 253: REM DBL 10X 3911 DATA ROLZ, 254 3920 DATA CLC: REM ADD DIGIT -3921 DATA LDAZ, 215 +3921 DATA LDAZ, 2 3922 DATA ADCZ, 253 3923 DATA STAZ, 253 3924 DATA BCCR, AI3 @@ -807,89 +813,187 @@ 4185 DATA JMP, MC1 4190 DATA 'MC3 4195 DATA RTS +4199 REM +4200 DATA 'GETSTASTO +4201 REM +4202 REM X.Y OUT: NSTOP +4203 REM +4204 REM CLOBBERS: A, X, Y, 2, 251-254 +4205 REM +4210 DATA LDX#, S.START +4211 DATA LDY#, $C5: REM XXX HI +4212 DATA JSR, PUTSTR +4220 DATA JSR, READNAT +4221 DATA STX, NSTART +4222 DATA STY, $C40D: REM XXX + +4230 DATA LDX#, S.STOP +4231 DATA LDY#, $C5: REM XXX HI +4232 DATA JSR, PUTSTR +4240 DATA JSR, READNAT +4241 DATA STX, NSTOP +4242 DATA STY, $C40F: REM XXX + +4249 REM CMP NSTOP, NSTART +4250 DATA CPY, $C40D: REM XXX NSTART+ +4251 DATA BCCR, GSS1 +4252 DATA BNER, GSS1 +4253 DATA CPX, NSTART +4259 DATA 'GSS1 +4260 DATA RTS +4299 REM +4300 DATA 'FINDLINE +4301 REM +4302 REM X.Y IN: LINE NUMBER +4303 REM X.Y OUT: LINE POINTER +4304 REM 251.252 OUT: -"- +4305 REM +4306 REM CLOBBERS: A, X, Y, 251-254 +4307 REM +4310 DATA LDAZ, 43: REM TXTTAB +4311 DATA STAZ, 251: REM -> 251 +4312 DATA LDAZ, 44 +4313 DATA STAZ, 252 +4319 REM ... +4320 DATA 'FINDNEXT +4321 REM +4322 REM X.Y IN: LINE NUMBER +4323 REM X.Y OUT: LINE POINTER +4324 REM 251.252 IN/OUT: -"- +4325 REM +4326 REM CLOBBERS: A, X, Y, 251-254 +4327 REM +4330 DATA STXZ, 253 +4331 DATA STYZ, 254 +4340 DATA 'FN3 +4350 DATA LDY#, 1: REM -> PNEXT HI +4351 DATA LDA(Y, 251 +4352 DATA BEQR, FN5: REM RETURN +4360 DATA LDY#, 3: REM -> LINENO HI +4361 DATA LDA(Y, 251 +4362 DATA CMPZ, 254: REM HI BYTE +4363 DATA BCCR, FN4: REM A < M +4364 DATA BNER, FN5: REM A > M +4365 DATA DEY +4366 DATA LDA(Y, 251 +4367 DATA CMPZ, 253: REM LO BYTE +4368 DATA BCCR, FN4 +4369 DATA JMP, FN5: REM RETURN +4370 DATA 'FN4: REM NEXT LINE +4371 DATA LDY#, 0 +4372 DATA LDA(Y, 251 +4373 DATA TAX +4374 DATA INY +4375 DATA LDA(Y, 251 +4376 DATA STXZ, 251 +4377 DATA STAZ, 252 +4380 DATA JMP, FN3 +4390 DATA 'FN5 +4391 DATA LDXZ, 251 +4392 DATA LDYZ, 252 +4393 DATA RTS +4399 REM +4400 DATA 'GETFILE +4401 REM +4402 REM A IN: LOGICAL FILE NUMBER +4403 REM +4404 REM CLOBBERS: A,X,Y,2,251-254 +4405 REM +4409 DATA PHA: REM SAVE FILE NO +4410 DATA LDX#, S.DRVBRA +4411 DATA LDY#, $C5: REM XXX HI +4412 DATA JSR, PUTSTR +4413 DATA LDAZ, 186: REM CURRENT DEV +4414 DATA CLC +4415 DATA ADC#, 48: REM XXX PRINTBYTE +4416 DATA JSR, $FFD2: REM CHROUT +4417 DATA LDX#, S.KETCOL +4418 DATA LDY#, $C5: REM XXX HI +4419 DATA JSR, PUTSTR +4420 DATA JSR, READNAT +4421 DATA BNER, GF1: REM LEN <> 0 +4422 DATA LDXZ, 186: REM DEFAULT +4423 DATA 'GF1 +4424 DATA PLA: REM FILE NO +4425 DATA LDY#, 0: REM SEC ADDR +4426 DATA JSR, $FFBA: REM SETLFS +4430 DATA LDX#, S.FILE +4431 DATA LDY#, $C5: REM XXX HI +4432 DATA JSR, PUTSTR +4433 DATA LDX#, BUF +4434 DATA LDY#, $C7: REM XXX HI +4435 DATA JSR, GETSTR +4437 DATA JSR, $FFBD: REM SETNAM +4440 DATA RTS +4499 REM +4500 DATA 'FINDLAST +4501 REM +4502 REM X.Y OUT: PTR TO LAST LINE +4503 REM 251-252 OUT: SAME +4504 REM +4505 REM CLOBBERS: A, X, Y, 251-254 +4506 REM +4510 DATA LDXZ, 43: REM TXTTAB +4511 DATA LDYZ, 44 +4512 DATA STXZ, 251 +4513 DATA STYZ, 252 +4520 DATA LDY#, 1 +4521 DATA LDA(Y, 251 +4522 DATA BEQR, FL2: REM EMPTY PRG +4530 DATA 'FL1 +4531 DATA LDY#, 0 +4532 DATA LDA(Y, 251 +4533 DATA STAZ, 253 +4534 DATA INY +4535 DATA LDA(Y, 251 +4536 DATA STAZ, 254 +4540 DATA LDA(Y, 253 +4541 DATA BEQR, FL2 +4550 DATA LDXZ, 253 +4551 DATA LDYZ, 254 +4552 DATA STXZ, 251 +4553 DATA STYZ, 252 +4555 DATA JMP, FL1 +4560 DATA 'FL2 +4570 DATA LDXZ, 251 +4571 DATA LDYZ, 252 +4572 DATA RTS +4579 REM +4580 DATA 'PUTNL +4581 DATA LDA#, 13 +4582 DATA JMP, $FFD2: REM CHROUT +4589 REM +4590 DATA 'PRINTNATLN +4591 DATA JSR, PRINTNAT +4592 DATA JMP, PUTNL +4599 REM +4990 REM +4995 DATA .=, $C880 4999 REM 5000 DATA 'LINECUT -5010 DATA LDX#, S.START -5011 DATA LDY#, $C5: REM XXX HI -5012 DATA JSR, PUTSTR -5020 DATA JSR, READNAT -5021 DATA STX, NSTART -5022 DATA STY, $C40D: REM XXX + -5030 DATA LDX#, S.STOP -5031 DATA LDY#, $C5: REM XXX HI -5032 DATA JSR, PUTSTR -5040 DATA JSR, READNAT -5041 DATA STX, NSTOP -5042 DATA STY, $C40F: REM XXX + -5049 REM ABORT IF NSTOP <= NSTART -5050 DATA CPY, $C40D: REM XXX NSTART+ -5051 DATA BMIR, LCU1 -5052 DATA BNER, LCU2 -5053 DATA CPX, NSTART -5054 DATA BMIR, LCU1 -5055 DATA BNER, LCU2 -5056 DATA 'LCU1 -5058 DATA RTS -5059 DATA 'LCU2 +5010 DATA JSR, GETSTASTO +5011 DATA BCCR, LCU1: REM < +5012 DATA BNER, LCU2: REM > +5020 DATA 'LCU1 +5021 DATA RTS: REM NSTOP <= NSTART +5030 DATA 'LCU2 5060 REM LOCATE START -> PTR IN 251 -5070 DATA LDXZ, 43: REM TXTTAB -5071 DATA LDYZ, 44 -5080 DATA STXZ, 251 -5081 DATA STYZ, 252 -5089 DATA 'LCU3 -5090 DATA LDY#, 1: REM OFFS PNEXT + 1 -5091 DATA LDA(Y, 251 -5092 DATA BEQR, LCU1: REM NOT FOUND -5100 DATA LDY#, 3: REM OFFS LINENO + 1 -5101 DATA LDA(Y, 251 -5102 DATA CMP, $C40D: REM XXX NSTART+ -5103 DATA BMIR, LCU4 -5104 DATA BNER, LCU5 -5105 DATA DEY -5106 DATA LDA(Y, 251 -5107 DATA CMP, NSTART -5108 DATA BMIR, LCU4 -5109 DATA JMP, LCU5 -5110 DATA 'LCU4: REM NEXT LINE -5111 DATA LDY#, 0 -5112 DATA LDA(Y, 251 -5113 DATA TAX -5114 DATA INY -5115 DATA LDA(Y, 251 -5116 DATA STXZ, 251 -5117 DATA STAZ, 252 -5120 DATA JMP, LCU3 -5130 DATA 'LCU5: REM PSTART FOUND -5160 REM LOCATE STOP LINE -> PTR IN 253 -5170 DATA LDXZ, 251 -5171 DATA LDYZ, 252 -5180 DATA STXZ, 253 -5181 DATA STYZ, 254 -5189 DATA 'LCU6 -5190 DATA LDY#, 1: REM OFFS PNEXT + 1 -5191 DATA LDA(Y, 253 -5192 DATA BEQR, LCU8: REM END OF PROG -5200 DATA LDY#, 3: REM OFFS LINENO + 1 -5201 DATA LDA(Y, 253 -5202 DATA CMP, $C40F: REM XXX NSTOP+ -5203 DATA BMIR, LCU7 -5204 DATA BNER, LCU8 -5205 DATA DEY -5206 DATA LDA(Y, 253 -5207 DATA CMP, NSTOP -5208 DATA BMIR, LCU7 -5209 DATA JMP, LCU8 -5210 DATA 'LCU7: REM NEXT LINE -5211 DATA LDY#, 0 -5212 DATA LDA(Y, 253 -5213 DATA TAX -5214 DATA INY -5215 DATA LDA(Y, 253 -5216 DATA STXZ, 253 -5217 DATA STAZ, 254 -5220 DATA JMP, LCU6 -5230 DATA 'LCU8: REM PSTOP FOUND -5240 REM CALC DELTA=STOP-START -> 163 +5061 DATA LDX, NSTART +5062 DATA LDY, $C40D: REM XXX NSTART+ +5063 DATA JSR, FINDLINE +5064 DATA TXA +5065 DATA PHA +5066 DATA TYA +5067 DATA PHA +5070 REM LOCATE STOP LINE -> PTR IN 253 +5071 DATA LDX, NSTOP +5072 DATA LDY, $C40F: REM XXX NSTOP+ +5073 DATA JSR, FINDNEXT +5074 DATA STXZ, 253 +5075 DATA STYZ, 254 +5076 DATA PLA: REM PSTART HI +5077 DATA STAZ, 252 +5078 DATA PLA: REM PSTART LO +5079 DATA STAZ, 251 +5240 REM CALC DELTA=STOP-START 5250 DATA SEC 5251 DATA LDAZ, 253 5252 DATA SBCZ, 251 @@ -958,34 +1062,27 @@ 5465 DATA SBC, $C411: REM XXX + 5466 DATA STAZ, 50 5470 DATA RTS -5990 REM -5995 DATA .=, $C880 5999 REM 6000 DATA 'LINECAT -6010 DATA LDX#, S.DRVBRA -6011 DATA LDY#, $C5: REM XXX HI -6012 DATA JSR, PUTSTR -6013 DATA LDAZ, 186: REM CURRENT DEV -6014 DATA CLC -6015 DATA ADC#, 48: REM XXX PRINTBYTE -6016 DATA JSR, $FFD2: REM CHROUT -6017 DATA LDX#, S.KETCOL -6018 DATA LDY#, $C5: REM XXX HI -6019 DATA JSR, PUTSTR -6020 DATA JSR, READNAT -6021 DATA BNER, LCA1: REM LEN <> 0 -6022 DATA LDXZ, 186: REM DEFAULT -6023 DATA 'LCA1 -6024 DATA LDA#, 1: REM FILE NO -6025 DATA LDY#, 0: REM SEC ADDR -6026 DATA JSR, $FFBA: REM SETLFS -6030 DATA LDX#, S.FILE -6031 DATA LDY#, $C5: REM XXX HI -6032 DATA JSR, PUTSTR -6033 DATA LDX#, BUF -6034 DATA LDY#, $C7: REM XXX HI -6035 DATA JSR, GETSTR -6037 DATA JSR, $FFBD: REM SETNAM +6001 REM PUT LAST LINE NUMBER ON STACK +6002 DATA JSR, FINDLAST +6005 DATA LDY#, 1 +6006 DATA LDA(Y, 251 +6007 DATA BNER, LCA0: REM EMPTY PRG? +6010 DATA LDA#, 0: REM DEFAULT 0 +6011 DATA PHA +6012 DATA PHA +6013 DATA JMP, LCA1 +6015 DATA 'LCA0 +6016 DATA LDY#, 3 +6017 DATA LDA(Y, 251 +6018 DATA PHA +6019 DATA DEY +6020 DATA LDA(Y, 251 +6021 DATA PHA +6025 DATA 'LCA1 +6030 DATA LDA#, 1: REM FILE NO +6031 DATA JSR, GETFILE 6040 DATA SEC 6041 DATA LDAZ, 45: REM VARTAB 6042 DATA SBC#, 2: REM CUT NULL OFF @@ -998,31 +1095,31 @@ 6049 DATA LDA#, 0: REM L/V 6050 DATA JSR, $FFD5: REM LOAD 6051 DATA BCCR, LCA1.1 -6052 DATA LDA#, 1 -6053 DATA JSR, $FFC3: REM CLOSE -6054 DATA RTS +6055 DATA LDX#, S.ERROR +6056 DATA LDY#, $C5: REM XXX HI +6057 DATA JSR, PUTSTR +6058 DATA RTS 6060 DATA 'LCA1.1 6061 DATA STXZ, 253: REM PSTOP 6062 DATA STYZ, 254 6070 REM CHECK FOR LINE NUMBER CLASH -6071 DATA LDA#, 13 -6072 DATA JSR, $FFD2: REM CHROUT 6075 DATA JMP, LCACHK 6080 REM SCAN & RELINK LINES 6081 DATA 'LCA2: REM FOR EACH LINE 6090 DATA LDAZ, 252 6091 DATA CMPZ, 254 -6092 DATA BMIR, LCA3 +6092 DATA BCCR, LCA2.1 6093 DATA BNER, LCA4 6094 DATA LDAZ, 251 6095 DATA CMPZ, 253 -6096 DATA BPLR, LCA4: REM PSTOP REACHD -6097 DATA LDY#, 1 -6098 DATA LDA(Y, 251 -6099 DATA BEQR, LCA4: REM PAST LAST LN -6100 DATA LDY#, 3 -6105 DATA 'LCA3: REM SCAN FOR NUL -6110 DATA INY +6096 DATA BCSR, LCA4: REM PSTOP REACHD +6100 DATA 'LCA2.1 +6101 DATA LDY#, 1 +6102 DATA LDA(Y, 251 +6103 DATA BEQR, LCA4: REM PAST LAST LN +6105 DATA LDY#, 3 +6110 DATA 'LCA3: REM SCAN FOR NUL +6115 DATA INY 6120 DATA LDA(Y, 251 6121 DATA BNER, LCA3: REM NEXT CHAR 6122 DATA INY: REM GO PAST NUL @@ -1060,54 +1157,109 @@ 6197 DATA STYZ, 50 6198 DATA RTS 6200 DATA 'LCACHK -6210 REM FIND LAST LINE NUMBER -6220 DATA DECZ, 252 -6221 DATA LDY#, 255 -6230 DATA 'LCAC1 -6240 DATA DEY -6250 DATA LDA(Y, 251 -6260 DATA BNER, LCAC1 -6270 DATA INY -6271 DATA INY -6272 DATA INY -6280 DATA LDA(Y, 251 -6281 DATA TAX -6282 DATA INY -6283 DATA LDA(Y, 251 -6290 DATA INCZ, 252 -6291 DATA LDY#, 3 -6300 DATA CMP(Y, 251 -6301 DATA BMIR, LCACOK -6302 DATA BNER, LCACFAIL -6310 DATA DEY -6311 DATA TXA -6320 DATA CMP(Y, 251 -6321 DATA BMIR, LCACOK -6330 DATA 'LCACFAIL -6335 REM NULL OFF THE NEW LINES, ABORT -6340 DATA LDA#, 0 -6341 DATA TAY -6342 DATA STA(Y, 251 -6343 DATA INY -6344 DATA STA(Y, 251 -6350 DATA LDX#, S.ECLASH -6351 DATA LDY#, $C5: REM XXX HI -6352 DATA JSR, PUTSTR -6360 DATA LDX#, S.ABORT -6361 DATA LDY#, $C5: REM XXX HI -6362 DATA JSR, PUTSTR -6370 DATA RTS -6380 DATA 'LCACOK -6390 DATA JMP, LCA2 +6210 REM COMPARE VS LAST LINE NUMBER +6215 DATA PLA +6216 DATA TAX +6217 DATA PLA +6220 DATA LDY#, 3 +6221 DATA CMP(Y, 251 +6222 DATA BCCR, LCACOK +6223 DATA BNER, LCACFAIL +6230 DATA TXA +6231 DATA DEY +6232 DATA CMP(Y, 251 +6233 DATA BCCR, LCACOK +6235 DATA 'LCACFAIL +6240 REM NULL OFF THE NEW LINES, ABORT +6241 DATA LDA#, 0 +6242 DATA TAY +6243 DATA STA(Y, 251 +6244 DATA INY +6245 DATA STA(Y, 251 +6270 DATA LDX#, S.ECLASH +6271 DATA LDY#, $C5: REM XXX HI +6272 DATA JSR, PUTSTR +6280 DATA LDX#, S.ABORT +6281 DATA LDY#, $C5: REM XXX HI +6282 DATA JSR, PUTSTR +6283 DATA RTS +6290 DATA 'LCACOK +6291 DATA JMP, LCA2 +6299 REM +6400 DATA 'LINECLP +6410 DATA JSR, GETSTASTO +6411 DATA BCCR, LCLRET +6412 DATA BEQR, LCLRET +6420 DATA LDX, NSTART +6421 DATA LDY, $C40D: REM XXX + +6425 DATA JSR, FINDLINE +6430 DATA TXA +6431 DATA PHA +6432 DATA TYA +6433 DATA PHA +6440 DATA LDX, NSTOP +6441 DATA LDY, $C40F: REM XXX + +6442 DATA JSR, FINDLINE: REM XXX FNEXT +6445 DATA TXA +6446 DATA PHA +6447 DATA TYA +6448 DATA PHA +6450 DATA LDA#, 1: REM FILE NO +6451 DATA JSR, GETFILE +6452 DATA PLA: REM PSTOP HI +6453 DATA STAZ, 254 +6454 DATA PLA: REM PSTOP LO +6455 DATA STAZ, 253 +6456 DATA PLA: REM PSTART HI +6457 DATA STAZ, 252 +6458 DATA PLA: REM PSTART LO +6459 DATA STAZ, 251 +6460 REM SAVE NEXT PNEXT ON STACK +6461 REM REPLACE IT WITH NULL AND +6462 REM SET X.Y = PSTOP + 2 +6463 DATA LDY#, 0 +6464 DATA LDA(Y, 253 +6465 DATA PHA +6466 DATA INY +6467 DATA LDA(Y, 253 +6468 DATA PHA +6470 DATA LDA#, 0 +6471 DATA STA(Y, 253 +6472 DATA DEY +6473 DATA STA(Y, 253 +6475 DATA CLC +6476 DATA LDA#, 2 +6477 DATA ADCZ, 253 +6478 DATA TAX +6479 DATA LDA#, 0 +6480 DATA ADCZ, 254 +6481 DATA TAY +6482 DATA LDA#, 251 +6483 DATA JSR, $FFD8: REM SAVE +6484 DATA LDY#, 1 +6485 DATA PLA: REM PNEXT HI +6486 DATA STA(Y, 253: REM -> PSTOP[1] +6487 DATA DEY +6488 DATA PLA: REM PNEXT LO +6489 DATA STA(Y, 253: REM -> PSTOP[0] +6490 DATA BCCR, LCLRET +6491 DATA LDX#, S.ERROR +6492 DATA LDY#, $C5: REM XXX HI +6493 DATA JSR, PUTSTR +6495 DATA 'LCLRET +6496 DATA RTS +6499 REM 8000 REM 8001 REM - ENTRY POINTS - 8002 REM -8010 DATA .=, 51200: REM $C800 -8011 DATA JMP, LINECNT -8020 DATA .=, 51210 -8021 DATA JMP, LINECUT -8030 DATA .=, 51220 -8031 DATA JMP, LINECAT +8005 DATA .=, 51200: REM $C800 +8006 DATA JMP, LINECNT +8010 DATA .=, 51210 +8011 DATA JMP, LINECUT +8020 DATA .=, 51220 +8021 DATA JMP, LINECAT +8030 DATA .=, 51230 +8031 DATA JMP, LINECLP 9000 REM 9001 REM - STATIC DATA - 9002 REM @@ -1134,12 +1286,11 @@ 9180 DATA 'S.FILE, .DSZ,"FILE: " 9190 DATA 'S.DRVBRA, .DSZ,"DRIVE [" 9191 DATA 'S.KETCOL, .DSZ,"]: " -9500 DATA 'S.ABORT -9501 DATA .DS, " - ABORT" -9502 DATA .DB, 13 -9503 DATA .DB, 0 -9510 DATA 'S.ECLASH -9511 DATA .DSZ, "LINE NUMBER CLASH" +9500 DATA 'S.ERROR, .DSZ,"ERROR " +9505 DATA 'S.ABORT, .DB, 13 +9506 DATA .DSZ,"ABORTED" +9510 DATA 'S.ECLASH, .DSZ +9511 DATA " ! LINE NUMBER CLASH" 9700 DATA .=, $C700 9701 DATA 'BUF, .DZ,256 9999 DATA .END