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
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
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$)
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
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
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
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
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
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
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
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
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
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
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
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
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