Commit Diff


commit - 93808d44910f1689e7e65a3485be4347f7754c7b
commit + a82c27fe5ea67b4c71f1390bd67d74b932f367b3
blob - 1b75f998e72033242211a2acd2560b2bde5c579b
blob + fa65d6dd2d09c6fe22921fcec06e62fc121bc4f0
Binary files LINEUTIL.B,PRG and LINEUTIL.B,PRG differ
blob - cbe6d493723f9a768af3186ee2b695e54de35de9
blob + 966ae34f817b75e61a3c3fd00c9a35488748b848
--- LINEUTIL.B.lst
+++ LINEUTIL.B.lst
@@ -6,42 +6,83 @@
 1005 REM
 1009 REM -999 [BASASM]
 1010 REM 1000 TOP COMMENT
-1015 REM 1500 SYMBOL DEFINITIONS
+1011 REM 1100 SYMBOL DEFINITIONS
+1015 REM 1500 VARIABLES & STATIC DATA
 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
+1099 REM 9900 ENTRY POINTS
+1100 REM
+1101 REM - SYMBOL DEFINITIONS -
+1102 REM
+1110 DATA CHROUT=, $FFD2
+1120 DATA GETIN=,  $FFE4
+1130 DATA SETLFS=, $FFBA
+1140 DATA SETNAM=, $FFBD
+1150 DATA LOAD=,   $FFD5
+1160 DATA SAVE=,   $FFD8
+1200 DATA TXTTAB=, 43
+1201 DATA VARTAB=, 45
+1202 DATA ARYTAB=, 47
+1203 DATA STREND=, 49
+1204 DATA FRETOP=, 51
+1205 DATA FRESPC=, 53
+1206 DATA MEMSIZ=, 55
+1210 DATA FA=,     186: REM CURRENT DEV
+1220 DATA BLNSW=,  204: REM CURSOR BLNK
+1300 DATA T=,      2:   REM TEMPORARY
+1310 DATA P=,      251: REM WORD/PTR 1
+1320 DATA Q=,      253: REM WORD/PTR 2
+1330 DATA B=,      255: REM BKUP/AUX
 1500 REM
-1501 REM - SYMBOL DEFINITIONS -
+1501 REM - STATIC DATA / VARIABLES -
 1502 REM
-1510 DATA CHROUT=, $FFD2
-1520 DATA GETIN=,  $FFE4
-1530 DATA SETLFS=, $FFBA
-1540 DATA SETNAM=, $FFBD
-1550 DATA LOAD=,   $FFD5
-1560 DATA SAVE=,   $FFD8
-1600 DATA TXTTAB=, 43
-1601 DATA VARTAB=, 45
-1602 DATA ARYTAB=, 47
-1603 DATA STREND=, 49
-1604 DATA FRETOP=, 51
-1605 DATA FRESPC=, 53
-1606 DATA MEMSIZ=, 55
-1610 DATA FA=,     186: REM CURRENT DEV
-1620 DATA BLNSW=,  204: REM CURSOR BLNK
-1700 DATA T=,      2:   REM TEMPORARY
-1710 DATA P=,      251: REM WORD/PTR 1
-1720 DATA Q=,      253: REM WORD/PTR 2
+1510 DATA .=, $C000
+1511 DATA 'BUF,      .DZ,256
+1520 DATA 'CNT,      .DW,0
+1521 DATA 'CNT.REM,  .DW,0
+1522 DATA 'CNT.DATA, .DW,0
+1523 DATA 'CNT.JUNK, .DW,0
+1524 DATA 'CNT.SPC,  .DW,0
+1525 DATA 'CNT.BS,   .DW,0
+1530 DATA 'NSTART,   .DW,0
+1531 DATA 'NSTOP,    .DW,0
+1532 DATA 'PSTART,   .DW,0
+1533 DATA 'PSTOP,    .DW,0
+1540 DATA 'DELTA,    .DW,0
+1541 DATA 'TMP,      .DW,0
+1599 REM
+1700 DATA 'S.REM,    .DSZ," REM  "
+1701 DATA 'S.DATA,   .DSZ," DATA  "
+1702 DATA 'S.LINES,  .DSZ," LINES  "
+1703 DATA 'S.BYTES,  .DSZ," BYTES  "
+1704 DATA 'S.JUNK,   .DSZ," JUNK  "
+1705 DATA 'S.SPC,    .DSZ," SPC  "
+1710 DATA 'S.START,  .DSZ,"START: "
+1711 DATA 'S.STOP,   .DSZ,"STOP: "
+1720 DATA 'S.FILE,   .DSZ,"FILE: "
+1721 DATA 'S.DRVBRA, .DSZ,"DRIVE ["
+1722 DATA 'S.KETCOL, .DSZ,"]: "
+1799 REM
+1800 DATA 'S.ERROR,  .DSZ,"ERROR "
+1805 DATA 'S.ABORT,  .DB, 13
+1806 DATA            .DSZ,"ABORTED"
+1810 DATA 'S.ECLASH, .DSZ
+1811 DATA  " ! LINE NUMBER CLASH"
+1990 REM
+1991 REM
+1995 DATA .LIM, 50000: REM $C350
+1996 REM -ENTRY POINT TABLE GOES HERE-
+1997 DATA .=,   50100: REM $C3B4
+1998 REM
 1999 REM
 2000 DATA 'LINECNT
 2001 DATA  LDXZ, TXTTAB
 2002 DATA  LDYZ, TXTTAB+
-2003 DATA  STXZ, 251
-2004 DATA  STYZ, 252
+2003 DATA  STXZ, P
+2004 DATA  STYZ, P+
 2005 DATA  LDA#, 0
 2006 DATA  STA, CNT
 2007 DATA  STA, CNT+
@@ -56,7 +97,7 @@
 2020 DATA 'LOOP
 2021 DATA  LDA#, 1
 2022 DATA  TAY
-2023 DATA  LDA(Y, 251
+2023 DATA  LDA(Y, P
 2024 DATA  BNER, NOTDONE
 2025 REM COUNT THE TERMINATING NULL PTR
 2026 DATA  CLC
@@ -78,7 +119,7 @@
 2101 DATA  TAY
 2105 DATA 'LC1
 2107 DATA  INY:        REM NEXT CHAR
-2110 DATA  LDA(Y, 251: REM LOAD CHAR
+2110 DATA  LDA(Y, P:   REM LOAD CHAR
 2120 DATA  BEQR, NEXT: REM END OF LINE
 2130 DATA  CMP#, $20:  REM SPACE
 2140 DATA  BNER, LC1.1:REM EXIT LOOP
@@ -104,7 +145,7 @@
 2229 REM 3. SCAN REST OF LINE
 2230 DATA 'LC3
 2231 DATA  INY:        REM NEXT CHAR
-2232 DATA  LDA(Y, 251: REM LOAD CHAR
+2232 DATA  LDA(Y, P:   REM LOAD CHAR
 2233 DATA  BEQR, NEXT: REM END OF LINE
 2235 DATA  CMP#, $20:  REM SPACE
 2240 DATA  BNER, LC3.1
@@ -117,7 +158,7 @@
 2252 DATA  BNER, LC3
 2260 DATA 'LC3.2:      REM SKIP STRING
 2261 DATA  INY
-2262 DATA  LDA(Y, 251: REM LOAD NXT CHR
+2262 DATA  LDA(Y, P:   REM LOAD NXT CHR
 2263 DATA  BEQR, NEXT: REM END OF LINE
 2265 DATA  CMP#, $22
 2266 DATA  BEQR, LC3:  REM QUOTE CLOSED
@@ -135,29 +176,29 @@
 2420 REM ADVANCE (DEREF) LINE PTR
 2421 DATA  LDA#, 0
 2422 DATA  TAY
-2423 DATA  LDA(Y, 251
+2423 DATA  LDA(Y, P
 2425 DATA  TAX
 2426 DATA  INY
-2427 DATA  LDA(Y, 251
+2427 DATA  LDA(Y, P
 2428 DATA  TAY
-2430 DATA  STXZ, 251
-2431 DATA  STYZ, 252
+2430 DATA  STXZ, P
+2431 DATA  STYZ, P+
 2490 DATA  JMP, LOOP
 2500 DATA 'DONE
-2501 REM PUSH 251 PAST THE END
+2501 REM PUSH "P" (251) PAST THE END
 2502 DATA  CLC
-2503 DATA  LDAZ, 251
+2503 DATA  LDAZ, P
 2504 DATA  ADC#, 2
-2505 DATA  STAZ, 251
+2505 DATA  STAZ, P
 2506 DATA  BCCR, DONE.1
-2507 DATA  INCZ, 252
+2507 DATA  INCZ, P+
 2508 DATA 'DONE.1
 2509 REM CALCULATE TOTAL BYTES
 2510 DATA  SEC
-2511 DATA  LDAZ, 251
+2511 DATA  LDAZ, P
 2512 DATA  SBCZ, TXTTAB
 2513 DATA  STA, CNT.BS
-2514 DATA  LDAZ, 252
+2514 DATA  LDAZ, P+
 2515 DATA  SBCZ, TXTTAB+
 2516 DATA  STA, CNT.BS+
 2520 REM CALCULATE JUNK = BS - "JUNK"
@@ -223,26 +264,27 @@
 3043 REM 4300 FINDLINE / FINDNEXT
 3044 REM 4400 GETFILE
 3045 REM 4500 FINDLAST,PUTNL,PRINTNATLN
+3046 REM 4600 DELTAPPLY
 3099 REM
 3100 DATA 'PUTSTR
 3101 REM
 3102 REM X.Y  IN:  PTR TO NULL-TERM STR
 3103 REM A    OUT: LENGTH OF STRING
 3104 REM
-3105 REM CLOBBERS: A, 251-252
+3105 REM CLOBBERS: A, 251-252 (P)
 3106 REM
-3110 DATA  STXZ, 251: REM USER Z/P AREA
-3111 DATA  STYZ, 252
+3110 DATA  STXZ, P:   REM USER ZP AREA
+3111 DATA  STYZ, P+
 3112 DATA  LDY#, 0
 3120 DATA 'PS1
-3130 DATA  LDA(Y, 251
+3130 DATA  LDA(Y, P
 3135 DATA  BEQR, PS2
 3140 DATA  JSR, CHROUT
 3150 DATA  INY
 3160 DATA  JMP, PS1
 3170 DATA 'PS2
 3175 DATA  TYA
-3176 DATA  LDYZ, 252
+3176 DATA  LDYZ, P+
 3180 DATA  RTS
 3199 REM
 3200 DATA 'QUOTREM
@@ -252,30 +294,30 @@
 3204 REM A        RESULT: QUOTIENT
 3205 REM X.Y      RESULT: REMAINDER
 3206 REM
-3207 REM CLOBBERS 2 AND C
+3207 REM CLOBBERS: C, T
 3208 REM
 3209 REM
 3210 DATA  LDA#, 0
-3211 DATA  STAZ, 2
+3211 DATA  STAZ, T
 3220 DATA 'QR1
 3225 DATA  SEC
 3230 DATA  TXA
-3240 DATA  SBCZ, 251
+3240 DATA  SBCZ, P
 3245 DATA  TAX
 3250 DATA  TYA
-3260 DATA  SBCZ, 252
+3260 DATA  SBCZ, P+
 3265 DATA  TAY
 3270 DATA  BCCR, QR2
-3280 DATA  INCZ, 2
+3280 DATA  INCZ, T
 3290 DATA  JMP, QR1
 3300 DATA 'QR2
 3310 DATA  TXA
-3312 DATA  ADCZ, 251
+3312 DATA  ADCZ, P
 3314 DATA  TAX
 3316 DATA  TYA
-3318 DATA  ADCZ, 252
+3318 DATA  ADCZ, P+
 3320 DATA  TAY
-3322 DATA  LDAZ, 2
+3322 DATA  LDAZ, T
 3323 DATA  CLC
 3324 DATA  RTS
 3390 REM
@@ -283,33 +325,33 @@
 3401 REM
 3402 REM X.Y  IN: NUMBER TO PRINT
 3403 REM
-3404 REM CLOBBERS: A, X, Y, 2, 251-252
+3404 REM CLOBBERS: A, X, Y, T, P
 3405 REM
 3410 DATA  LDA#, 10000
-3411 DATA  STAZ, 251
+3411 DATA  STAZ, P
 3412 DATA  LDA#, 10000^
-3413 DATA  STAZ, 252
+3413 DATA  STAZ, P+
 3420 DATA  JSR, QUOTREM
 3430 DATA  ADC#, $30:   REM "0"
 3440 DATA  JSR, CHROUT
 3450 DATA  LDA#, 1000
-3451 DATA  STAZ, 251
+3451 DATA  STAZ, P
 3452 DATA  LDA#, 1000^
-3453 DATA  STAZ, 252
+3453 DATA  STAZ, P+
 3460 DATA  JSR, QUOTREM
 3470 DATA  ADC#, $30
 3480 DATA  JSR, CHROUT
 3490 DATA  LDA#, 100
-3491 DATA  STAZ, 251
+3491 DATA  STAZ, P
 3492 DATA  LDA#, 0
-3493 DATA  STAZ, 252
+3493 DATA  STAZ, P+
 3500 DATA  JSR, QUOTREM
 3510 DATA  ADC#, $30
 3520 DATA  JSR, CHROUT
 3530 DATA  LDA#, 10
-3531 DATA  STAZ, 251
+3531 DATA  STAZ, P
 3532 DATA  LDA#, 0
-3533 DATA  STAZ, 252
+3533 DATA  STAZ, P+
 3540 DATA  JSR, QUOTREM
 3550 DATA  ADC#, $30
 3551 DATA  JSR, CHROUT
@@ -320,20 +362,20 @@
 3599 REM
 3600 DATA 'GETSTR
 3601 REM
-3602 REM X/Y  IN/OUT: PTR TO STR BUF
+3602 REM X.Y  IN/OUT: PTR TO STR BUF
 3603 REM A    OUT:    LEN OF STRING
 3604 REM
-3605 REM CLOBBERS: 2, 251-252
+3605 REM CLOBBERS: T, P
 3606 REM
-3610 DATA  STXZ, 251
-3611 DATA  STYZ, 252
+3610 DATA  STXZ, P
+3611 DATA  STYZ, P+
 3620 DATA  LDY#, 0
 3625 DATA  STYZ, BLNSW: REM CURSOR ON
 3630 DATA 'GS1
-3635 DATA  STYZ, 2:    REM SAVE Y
+3635 DATA  STYZ, T:    REM SAVE Y
 3640 DATA  JSR, GETIN
 3641 DATA  BEQR, GS1
-3645 DATA  LDYZ, 2:    REM RESTORE Y
+3645 DATA  LDYZ, T:    REM RESTORE Y
 3650 DATA  CMP#, 13:   REM CR
 3651 DATA  BEQR, GS3
 3660 DATA  CMP#, 20:   REM DEL
@@ -349,41 +391,41 @@
 3682 DATA  BCCR, GS1
 3683 DATA  CMP#, 127:  REM DEL
 3684 DATA  BCSR, GS1
-3690 DATA  STA(Y, 251
+3690 DATA  STA(Y, P
 3691 DATA  INY
 3695 DATA  JSR, CHROUT
 3696 DATA  JMP, GS1
 3700 DATA 'GS3
 3710 DATA  LDA#, 0
-3720 DATA  STA(Y, 251
-3721 DATA  STYZ, 2
+3720 DATA  STA(Y, P
+3721 DATA  STYZ, T
 3722 DATA  LDA#, 1
 3723 DATA  STAZ, BLNSW: REM CURSOR OFF
 3724 DATA  LDA#, 32:   REM ERASE CRSR
 3725 DATA  JSR, CHROUT
 3726 DATA  LDA#, 13
 3727 DATA  JSR, CHROUT
-3730 DATA  LDXZ, 251
-3731 DATA  LDYZ, 252
-3732 DATA  LDAZ, 2
+3730 DATA  LDXZ, P
+3731 DATA  LDYZ, P+
+3732 DATA  LDAZ, T
 3733 DATA  RTS
 3799 REM
 3800 DATA 'ATOI
 3801 REM
-3802 REM X/Y  IN:  PTR TO STR
-3803 REM X/Y  OUT: RESULT
+3802 REM X.Y  IN:  PTR TO STR
+3803 REM X.Y  OUT: RESULT
 3804 REM A    OUT: LEN CONSUMED
 3805 REM
-3806 REM CLOBBERS: 2, 251-254
+3806 REM CLOBBERS: T, P, Q
 3807 REM
-3810 DATA  STXZ, 251
-3811 DATA  STYZ, 252
+3810 DATA  STXZ, P
+3811 DATA  STYZ, P+
 3820 DATA  LDX#, 0
 3821 DATA  LDY#, 0
-3825 DATA  STXZ, 253
-3826 DATA  STXZ, 254
+3825 DATA  STXZ, Q
+3826 DATA  STXZ, Q+
 3830 DATA 'AI1
-3840 DATA  LDA(Y, 251
+3840 DATA  LDA(Y, P
 3841 DATA  BEQR, AI2
 3849 REM
 3850 DATA  CMP#, 48:   REM "0"
@@ -392,39 +434,39 @@
 3861 DATA  BCSR, AI2
 3870 DATA  SEC
 3871 DATA  SBC#, 48
-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
-3891 DATA  ROLZ, 254
-3892 DATA  ASLZ, 253:  REM DBL   4X
-3893 DATA  ROLZ, 254
+3880 DATA  STAZ, T:    REM SAVE DIGIT
+3885 DATA  LDAZ, Q:    REM SAVE VALUE
+3886 DATA  LDXZ, Q+
+3890 DATA  ASLZ, Q:    REM DBL   2X
+3891 DATA  ROLZ, Q+
+3892 DATA  ASLZ, Q:    REM DBL   4X
+3893 DATA  ROLZ, Q+
 3900 DATA  CLC:        REM ADD   5X
-3901 DATA  ADCZ, 253
-3902 DATA  STAZ, 253
+3901 DATA  ADCZ, Q
+3902 DATA  STAZ, Q
 3903 DATA  TXA
-3904 DATA  ADCZ, 254
-3905 DATA  STAZ, 254
-3910 DATA  ASLZ, 253:  REM DBL  10X
-3911 DATA  ROLZ, 254
+3904 DATA  ADCZ, Q+
+3905 DATA  STAZ, Q+
+3910 DATA  ASLZ, Q:    REM DBL  10X
+3911 DATA  ROLZ, Q+
 3920 DATA  CLC:        REM ADD DIGIT
-3921 DATA  LDAZ, 2
-3922 DATA  ADCZ, 253
-3923 DATA  STAZ, 253
+3921 DATA  LDAZ, T
+3922 DATA  ADCZ, Q
+3923 DATA  STAZ, Q
 3924 DATA  BCCR, AI3
-3925 DATA  INCZ, 254
+3925 DATA  INCZ, Q+
 3926 DATA 'AI3
 3930 DATA  INY
 3940 DATA  BNER, AI1
 3950 DATA 'AI2
 3955 DATA  TYA
-3956 DATA  LDXZ, 253
-3957 DATA  LDYZ, 254
+3956 DATA  LDXZ, Q
+3957 DATA  LDYZ, Q+
 3960 DATA  RTS
 3999 REM
 4000 DATA 'READNAT
 4001 REM
-4002 REM X/Y  OUT: RESULT
+4002 REM X.Y  OUT: RESULT
 4003 REM A    OUT: LENGTH CONSUMED
 4004 REM
 4010 DATA  LDX#, BUF
@@ -436,11 +478,11 @@
 4099 REM
 4100 DATA 'MEMCPY
 4101 REM
-4102 REM 251-252  IN: DST POINTER
-4103 REM 253-254  IN: SRC POINTER
+4102 REM P (251)  IN: DST POINTER
+4103 REM Q (253)  IN: SRC POINTER
 4104 REM Y.X      IN: LEN !X=MSB!
 4105 REM
-4106 REM CLOBBERS: A, X, Y, 2, 251-254
+4106 REM CLOBBERS: A, X, Y, T, P, Q
 4107 REM
 4108 REM NB: OVERLAP OKAY IF DST < SRC
 4109 REM
@@ -476,7 +518,7 @@
 4201 REM
 4202 REM X.Y    OUT: NSTOP
 4203 REM
-4204 REM CLOBBERS: A, X, Y, 2, 251-254
+4204 REM CLOBBERS: A, X, Y, 2, P, Q
 4205 REM
 4210 DATA  LDX#, S.START
 4211 DATA  LDY#, S.START^
@@ -502,58 +544,58 @@
 4301 REM
 4302 REM X.Y      IN: LINE NUMBER
 4303 REM X.Y     OUT: LINE POINTER
-4304 REM 251.252 OUT: -"-
+4304 REM P (251) OUT: -"-
 4305 REM
-4306 REM CLOBBERS: A, X, Y, 251-254
+4306 REM CLOBBERS: A, X, Y, P, Q
 4307 REM
 4310 DATA  LDAZ, TXTTAB
-4311 DATA  STAZ, 251:  REM -> 251
+4311 DATA  STAZ, P:    REM -> P
 4312 DATA  LDAZ, TXTTAB+
-4313 DATA  STAZ, 252
+4313 DATA  STAZ, P+
 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: -"-
+4324 REM P (251) IN/OUT: -"-
 4325 REM
-4326 REM CLOBBERS: A, X, Y, 251-254
+4326 REM CLOBBERS: A, X, Y, P, Q
 4327 REM
-4330 DATA  STXZ, 253
-4331 DATA  STYZ, 254
+4330 DATA  STXZ, Q
+4331 DATA  STYZ, Q+
 4340 DATA 'FN3
 4350 DATA  LDY#, 1:    REM -> PNEXT HI
-4351 DATA  LDA(Y, 251
+4351 DATA  LDA(Y, P
 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
+4361 DATA  LDA(Y, P
+4362 DATA  CMPZ, Q+:   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
+4366 DATA  LDA(Y, P
+4367 DATA  CMPZ, Q:    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
+4372 DATA  LDA(Y, P
 4373 DATA  TAX
 4374 DATA  INY
-4375 DATA  LDA(Y, 251
-4376 DATA  STXZ, 251
-4377 DATA  STAZ, 252
+4375 DATA  LDA(Y, P
+4376 DATA  STXZ, P
+4377 DATA  STAZ, P+
 4380 DATA  JMP, FN3
 4390 DATA 'FN5
-4391 DATA  LDXZ, 251
-4392 DATA  LDYZ, 252
+4391 DATA  LDXZ, P
+4392 DATA  LDYZ, P+
 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
+4404 REM CLOBBERS: A,X,Y,T,P,Q
 4405 REM
 4409 DATA  PHA:        REM SAVE FILE NO
 4410 DATA  LDX#, S.DRVBRA
@@ -585,34 +627,34 @@
 4500 DATA 'FINDLAST
 4501 REM
 4502 REM X.Y      OUT: PTR TO LAST LINE
-4503 REM 251-252  OUT: SAME
+4503 REM P (251)  OUT: SAME
 4504 REM
-4505 REM CLOBBERS: A, X, Y, 251-254
+4505 REM CLOBBERS: A, X, Y, P, Q
 4506 REM
 4510 DATA  LDXZ, TXTTAB
 4511 DATA  LDYZ, TXTTAB+
-4512 DATA  STXZ, 251
-4513 DATA  STYZ, 252
+4512 DATA  STXZ, P
+4513 DATA  STYZ, P+
 4520 DATA  LDY#, 1
-4521 DATA  LDA(Y, 251
+4521 DATA  LDA(Y, P
 4522 DATA  BEQR, FL2:  REM EMPTY PRG
 4530 DATA 'FL1
 4531 DATA  LDY#, 0
-4532 DATA  LDA(Y, 251
-4533 DATA  STAZ, 253
+4532 DATA  LDA(Y, P
+4533 DATA  STAZ, Q
 4534 DATA  INY
-4535 DATA  LDA(Y, 251
-4536 DATA  STAZ, 254
-4540 DATA  LDA(Y, 253
+4535 DATA  LDA(Y, P
+4536 DATA  STAZ, Q+
+4540 DATA  LDA(Y, Q
 4541 DATA  BEQR, FL2
-4550 DATA  LDXZ, 253
-4551 DATA  LDYZ, 254
-4552 DATA  STXZ, 251
-4553 DATA  STYZ, 252
+4550 DATA  LDXZ, Q
+4551 DATA  LDYZ, Q+
+4552 DATA  STXZ, P
+4553 DATA  STYZ, P+
 4555 DATA  JMP, FL1
 4560 DATA 'FL2
-4570 DATA  LDXZ, 251
-4571 DATA  LDYZ, 252
+4570 DATA  LDXZ, P
+4571 DATA  LDYZ, P+
 4572 DATA  RTS
 4579 REM
 4580 DATA 'PUTNL
@@ -623,9 +665,51 @@
 4591 DATA  JSR, PRINTNAT
 4592 DATA  JMP, PUTNL
 4599 REM
-4990 REM
-4995 DATA .=, $C880
-4999 REM
+4600 DATA 'DELTAPPLY
+4601 REM
+4602 REM P (251)  IN: PTR TO START LINE
+4603 REM X.Y      IN: PTR TO STOP  LINE
+4604 REM A        IN: OFFSET TO MODIFY
+4605 REM DELTA    IN: VALUE TO ADD
+4606 REM Q (253) OUT: COPY OF X.Y INPUT
+4607 REM
+4608 REM CLOBBERS: A,X,Y,P,Q,T,B
+4609 REM
+4610 DATA  STXZ, Q
+4611 DATA  STYZ, Q+
+4612 DATA  STAZ, B
+4620 DATA 'DEA1
+4630 DATA  LDAZ, P+
+4631 DATA  CMPZ, Q+
+4632 DATA  BCCR, DEA2: REM P < Q
+4633 DATA  BNER, DEA3: REM P > Q
+4634 DATA  LDAZ, P
+4635 DATA  CMPZ, Q
+4636 DATA  BCSR, DEA3
+4637 DATA 'DEA2
+4640 DATA  LDY#, 1
+4641 DATA  LDA(Y, P
+4642 DATA  BEQR, DEA3: REM DONE
+4645 DATA  STAZ, T: REM SAVE PNEXT (HI)
+4646 DATA  DEY
+4647 DATA  LDA(Y, P
+4648 DATA  TAX:     REM SAVE PNEXT (LO)
+4650 DATA  LDYZ, B
+4651 DATA  LDA(Y, P
+4660 DATA  CLC
+4661 DATA  ADC, DELTA
+4662 DATA  STA(Y, P
+4663 DATA  INY
+4664 DATA  LDA(Y, P
+4665 DATA  ADC, DELTA+
+4666 DATA  STA(Y, P
+4680 DATA  LDYZ, T
+4681 DATA  STXZ, P:   REM NEXT LINE
+4682 DATA  STYZ, P+
+4690 DATA  JMP, DEA1
+4691 DATA 'DEA3
+4692 DATA  RTS
+4699 REM
 5000 DATA 'LINECUT
 5010 DATA  JSR, GETSTASTO
 5011 DATA  BCCR, LCU1: REM <
@@ -637,182 +721,162 @@
 5061 DATA  LDX, NSTART
 5062 DATA  LDY, NSTART+
 5063 DATA  JSR, FINDLINE
-5064 DATA  TXA
-5065 DATA  PHA
-5066 DATA  TYA
-5067 DATA  PHA
+5064 DATA  STX, PSTART
+5065 DATA  STY, PSTART+
 5070 REM LOCATE STOP LINE -> PTR IN Q
 5071 DATA  LDX, NSTOP
 5072 DATA  LDY, NSTOP+
 5073 DATA  JSR, FINDNEXT
-5074 DATA  STXZ, Q
-5075 DATA  STYZ, Q+
-5076 DATA  PLA:        REM PSTART HI
-5077 DATA  STAZ, P+
-5078 DATA  PLA:        REM PSTART LO
-5079 DATA  STAZ, P
-5240 REM CALC. DELTA = PSTOP - PSTART
+5074 DATA  STX, PSTOP
+5075 DATA  STY, PSTOP+
+5240 REM CALC. DELTA = PSTART - PSTOP
 5250 DATA  SEC
-5251 DATA  LDAZ, Q
-5252 DATA  SBCZ, P
+5251 DATA  LDA, PSTART
+5252 DATA  SBC, PSTOP
 5253 DATA  STA, DELTA
-5254 DATA  LDAZ, Q+
-5255 DATA  SBCZ, P+
+5254 DATA  LDA, PSTART+
+5255 DATA  SBC, PSTOP+
 5256 DATA  STA, DELTA+
 5260 REM SCAN AFTER STOP, ADJUST PTRS
-5270 DATA  LDXZ, Q
-5271 DATA  LDYZ, Q+
-5280 DATA  STX, TMP:   REM SAVE PSTOP
-5281 DATA  STY, TMP+
-5290 DATA 'LCU9
-5300 DATA  LDY#, 1
-5301 DATA  LDA(Y, Q
-5302 DATA  BEQR, LCU10: REM DONE
-5310 DATA  DEY
-5320 DATA  LDA(Y, Q
-5321 DATA  TAX:     REM SAVE LO(PNEXT)
-5330 DATA  SEC
-5331 DATA  SBC, DELTA
-5340 DATA  STA(Y, Q
-5341 DATA  INY
-5350 DATA  LDA(Y, Q
-5351 DATA  STAZ, T: REM SAVE HI(PNEXT)
-5360 DATA  SBC, DELTA+
-5370 DATA  STA(Y, Q
-5380 DATA  LDYZ, T
-5381 DATA  STXZ, Q:   REM NEXT LINE
-5382 DATA  STYZ, Q+
-5390 DATA  JMP, LCU9
-5391 DATA 'LCU10
-5392 DATA  LDX, TMP: REM SAVED PSTOP
-5393 DATA  LDY, TMP+
-5394 DATA  STXZ, Q
-5395 DATA  STYZ, Q+
-5400 REM COPY THE REMAINING DATA DOWN
-5410 DATA  SEC:    REM LEN=STREND-PSTOP
-5411 DATA  LDAZ, STREND
-5412 DATA  SBCZ, Q
-5413 DATA  TAY:       REM Y = LO BYTE!
-5414 DATA  LDAZ, STREND+
-5415 DATA  SBCZ, Q+
-5416 DATA  TAX:       REM X = HI BYTE!
-5420 DATA  JSR, MEMCPY
-5430 REM ADJUST VARTAB, ARYTAB, STREND
-5440 DATA  SEC
-5441 DATA  LDAZ, VARTAB
-5442 DATA  SBC, DELTA
-5443 DATA  STAZ, VARTAB
-5444 DATA  LDAZ, VARTAB+
-5445 DATA  SBC, DELTA+
-5446 DATA  STAZ, VARTAB+
-5450 DATA  SEC
-5451 DATA  LDAZ, ARYTAB
-5452 DATA  SBC, DELTA
-5453 DATA  STAZ, ARYTAB
-5454 DATA  LDAZ, ARYTAB+
-5455 DATA  SBC, DELTA+
-5456 DATA  STAZ, ARYTAB+
-5460 DATA  SEC
-5461 DATA  LDAZ, STREND
-5462 DATA  SBC, DELTA
-5463 DATA  STAZ, STREND
-5464 DATA  LDAZ, STREND+
-5465 DATA  SBC, DELTA+
-5466 DATA  STAZ, STREND+
-5470 DATA  RTS
+5270 DATA  LDX, PSTOP
+5271 DATA  LDY, PSTOP+
+5272 DATA  STXZ, P
+5273 DATA  STYZ, P+
+5280 DATA  LDXZ, STREND
+5281 DATA  LDYZ, STREND+
+5290 DATA  LDA#, 0:   REM MODIFY PNEXT
+5291 DATA  JSR, DELTAPPLY
+5300 REM COPY THE REMAINING DATA DOWN
+5301 DATA  LDX, PSTART:   REM DST
+5302 DATA  LDY, PSTART+
+5303 DATA  STXZ, P
+5304 DATA  STYZ, P+
+5305 DATA  LDX, PSTOP:    REM SRC
+5306 DATA  LDY, PSTOP+
+5307 DATA  STXZ, Q
+5308 DATA  STYZ, Q+
+5310 DATA  SEC:    REM LEN=STREND-PSTOP
+5311 DATA  LDA, STREND
+5312 DATA  SBCZ, Q
+5313 DATA  TAY:       REM Y = LO BYTE!
+5314 DATA  LDA, STREND+
+5315 DATA  SBCZ, Q+
+5316 DATA  TAX:       REM X = HI BYTE!
+5320 DATA  JSR, MEMCPY
+5330 REM ADJUST VARTAB, ARYTAB, STREND
+5340 DATA  CLC
+5341 DATA  LDAZ, VARTAB
+5342 DATA  ADC, DELTA
+5343 DATA  STAZ, VARTAB
+5344 DATA  LDAZ, VARTAB+
+5345 DATA  ADC, DELTA+
+5346 DATA  STAZ, VARTAB+
+5350 DATA  CLC
+5351 DATA  LDAZ, ARYTAB
+5352 DATA  ADC, DELTA
+5353 DATA  STAZ, ARYTAB
+5354 DATA  LDAZ, ARYTAB+
+5355 DATA  ADC, DELTA+
+5356 DATA  STAZ, ARYTAB+
+5360 DATA  CLC
+5361 DATA  LDAZ, STREND
+5362 DATA  ADC, DELTA
+5363 DATA  STAZ, STREND
+5364 DATA  LDAZ, STREND+
+5365 DATA  ADC, DELTA+
+5366 DATA  STAZ, STREND+
+5370 DATA  RTS
 5999 REM
 6000 DATA 'LINECAT
-6001 REM PUT LAST LINE NUMBER ON STACK
+6001 REM SAVE LAST LINE NUMBER IN TMP
 6002 DATA  JSR, FINDLAST
 6005 DATA  LDY#, 1
-6006 DATA  LDA(Y, 251
+6006 DATA  LDA(Y, P
 6007 DATA  BNER, LCA0: REM EMPTY PRG?
 6010 DATA  LDA#, 0:    REM DEFAULT 0
-6011 DATA  PHA
-6012 DATA  PHA
+6011 DATA  STA, TMP
+6012 DATA  STA, TMP+
 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
+6016 DATA  LDY#, 2
+6017 DATA  LDA(Y, P
+6018 DATA  STA, TMP
+6019 DATA  INY
+6020 DATA  LDA(Y, P
+6021 DATA  STA, TMP+
 6025 DATA 'LCA1
 6030 DATA  JSR, GETFILE
 6040 DATA  SEC
 6041 DATA  LDAZ, VARTAB
 6042 DATA  SBC#, 2:    REM CUT NULL OFF
-6043 DATA  STAZ, 251:  REM PSTART
+6043 DATA  STAZ, P:    REM PSTART
 6044 DATA  TAX
 6045 DATA  LDAZ, VARTAB+
 6046 DATA  SBC#, 0
-6047 DATA  STAZ, 252
+6047 DATA  STAZ, P+
 6048 DATA  TAY
 6049 DATA  LDA#, 0:    REM L/V
 6050 DATA  JSR, LOAD
 6051 DATA  BCCR, LCA1.1
-6055 DATA  PLA
-6056 DATA  PLA
 6060 DATA  LDA#, 0
 6061 DATA  TAY
-6062 DATA  STA(Y, 251
+6062 DATA  STA(Y, P
 6063 DATA  INY
-6064 DATA  STA(Y, 251
+6064 DATA  STA(Y, P
 6065 DATA  LDX#, S.ERROR
 6066 DATA  LDY#, S.ERROR^
 6067 DATA  JSR, PUTSTR
 6068 DATA  RTS
 6070 DATA 'LCA1.1
-6071 DATA  STXZ, 253:  REM PSTOP
-6072 DATA  STYZ, 254
+6071 DATA  STXZ, Q:    REM PSTOP
+6072 DATA  STYZ, Q+
 6075 REM CHECK FOR LINE NUMBER CLASH
 6076 DATA  JMP, LCACHK
 6080 REM SCAN & RELINK LINES
 6081 DATA 'LCA2:      REM FOR EACH LINE
-6090 DATA  LDAZ, 252
-6091 DATA  CMPZ, 254
+6090 DATA  LDAZ, P+
+6091 DATA  CMPZ, Q+
 6092 DATA  BCCR, LCA2.1
 6093 DATA  BNER, LCA4
-6094 DATA  LDAZ, 251
-6095 DATA  CMPZ, 253
+6094 DATA  LDAZ, P
+6095 DATA  CMPZ, Q
 6096 DATA  BCSR, LCA4: REM PSTOP REACHD
 6100 DATA 'LCA2.1
 6101 DATA  LDY#, 1
-6102 DATA  LDA(Y, 251
+6102 DATA  LDA(Y, P
 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
+6120 DATA  LDA(Y, P
 6121 DATA  BNER, LCA3: REM NEXT CHAR
 6122 DATA  INY:        REM GO PAST NUL
 6130 DATA  CLC:        REM ADV POINTER
 6131 DATA  TYA
-6132 DATA  ADCZ, 251
+6132 DATA  ADCZ, P
 6133 DATA  TAX
 6134 DATA  LDA#, 0
-6135 DATA  ADCZ, 252
+6135 DATA  ADCZ, P+
 6140 DATA  LDY#, 1
-6141 DATA  STA(Y, 251
-6142 DATA  STAZ, 2:    REM SAVE HI BYTE
+6141 DATA  STA(Y, P
+6142 DATA  STAZ, T:    REM SAVE HI BYTE
 6143 DATA  TXA
 6144 DATA  DEY
-6145 DATA  STA(Y, 251
-6146 DATA  LDYZ, 2
-6150 DATA  STXZ, 251
-6151 DATA  STYZ, 252
+6145 DATA  STA(Y, P
+6146 DATA  LDYZ, T
+6150 DATA  STXZ, P
+6151 DATA  STYZ, P+
 6160 DATA  JMP, LCA2:  REM NEXT LINE
 6170 DATA 'LCA4
 6180 REM REWRITE TERMINATOR TO BE SAFE
 6181 DATA  LDA#, 0
 6182 DATA  TAY
-6183 DATA  STA(Y, 251
+6183 DATA  STA(Y, P
 6184 DATA  INY
-6185 DATA  STA(Y, 251
+6185 DATA  STA(Y, P
 6189 REM ADJUST VARTAB &C AND RET PSTOP
-6190 DATA  LDXZ, 253
-6191 DATA  LDYZ, 254
+6190 DATA  LDXZ, Q
+6191 DATA  LDYZ, Q+
 6192 DATA  STXZ, VARTAB
 6193 DATA  STYZ, VARTAB+
 6194 DATA  STXZ, ARYTAB
@@ -822,24 +886,23 @@
 6198 DATA  RTS
 6200 DATA 'LCACHK
 6210 REM COMPARE VS LAST LINE NUMBER
-6215 DATA  PLA
-6216 DATA  TAX
-6217 DATA  PLA
+6215 DATA  LDX, TMP
+6216 DATA  LDA, TMP+
 6220 DATA  LDY#, 3
-6221 DATA  CMP(Y, 251
+6221 DATA  CMP(Y, P
 6222 DATA  BCCR, LCACOK
 6223 DATA  BNER, LCACFAIL
 6230 DATA  TXA
 6231 DATA  DEY
-6232 DATA  CMP(Y, 251
+6232 DATA  CMP(Y, P
 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
+6243 DATA  STA(Y, P
 6244 DATA  INY
-6245 DATA  STA(Y, 251
+6245 DATA  STA(Y, P
 6270 DATA  LDX#, S.ECLASH
 6271 DATA  LDY#, S.ECLASH^
 6272 DATA  JSR, PUTSTR
@@ -857,55 +920,51 @@
 6420 DATA  LDX, NSTART
 6421 DATA  LDY, NSTART+
 6425 DATA  JSR, FINDLINE
-6430 DATA  TXA
-6431 DATA  PHA
-6432 DATA  TYA
-6433 DATA  PHA
+6430 DATA  STX, PSTART
+6431 DATA  STY, PSTART+
 6440 DATA  LDX, NSTOP
 6441 DATA  LDY, NSTOP+
 6442 DATA  JSR, FINDNEXT
-6445 DATA  TXA
-6446 DATA  PHA
-6447 DATA  TYA
-6448 DATA  PHA
+6445 DATA  STX, PSTOP
+6446 DATA  STY, PSTOP+
 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
+6452 DATA  LDX, PSTART
+6453 DATA  LDY, PSTART+
+6454 DATA  STXZ, P
+6455 DATA  STYZ, P+
+6456 DATA  LDX, PSTOP
+6457 DATA  LDY, PSTOP+
+6458 DATA  STXZ, Q
+6459 DATA  STYZ, Q+
+6460 REM SAVE NEXT PNEXT
 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
+6464 DATA  LDA(Y, Q
+6465 DATA  STA, TMP
 6466 DATA  INY
-6467 DATA  LDA(Y, 253
-6468 DATA  PHA
+6467 DATA  LDA(Y, Q
+6468 DATA  STA, TMP+
 6470 DATA  LDA#, 0
-6471 DATA  STA(Y, 253
+6471 DATA  STA(Y, Q
 6472 DATA  DEY
-6473 DATA  STA(Y, 253
+6473 DATA  STA(Y, Q
 6475 DATA  CLC
 6476 DATA  LDA#, 2
-6477 DATA  ADCZ, 253
+6477 DATA  ADCZ, Q
 6478 DATA  TAX
 6479 DATA  LDA#, 0
-6480 DATA  ADCZ, 254
+6480 DATA  ADCZ, Q+
 6481 DATA  TAY
-6482 DATA  LDA#, 251
+6482 DATA  LDA#, P
 6483 DATA  JSR, 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]
+6484 DATA  LDY#, 0
+6485 DATA  LDA, TMP:   REM PNEXT LO
+6486 DATA  STA(Y, Q:   REM -> PSTOP[0]
+6487 DATA  INY
+6488 DATA  LDA, TMP+:  REM PNEXT HI
+6489 DATA  STA(Y, Q:   REM -> PSTOP[1]
 6490 DATA  BCCR, LCLRET
 6491 DATA  LDX#, S.ERROR
 6492 DATA  LDY#, S.ERROR^
@@ -913,48 +972,12 @@
 6495 DATA 'LCLRET
 6496 DATA  RTS
 6499 REM
-8000 REM
-8001 REM - ENTRY POINTS -
-8002 REM
-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
-9009 DATA .=, $C400
-9010 DATA 'CNT,      .DW,0
-9020 DATA 'CNT.REM,  .DW,0
-9030 DATA 'CNT.DATA, .DW,0
-9040 DATA 'CNT.JUNK, .DW,0
-9050 DATA 'CNT.SPC,  .DW,0
-9060 DATA 'CNT.BS,   .DW,0
-9070 DATA 'NSTART,   .DW,0
-9071 DATA 'NSTOP,    .DW,0
-9072 DATA 'DELTA,    .DW,0
-9073 DATA 'TMP,      .DW,0
-9099 DATA .=, $C500
-9100 DATA 'S.REM,    .DSZ," REM  "
-9110 DATA 'S.DATA,   .DSZ," DATA  "
-9120 DATA 'S.LINES,  .DSZ," LINES  "
-9130 DATA 'S.BYTES,  .DSZ," BYTES  "
-9140 DATA 'S.JUNK,   .DSZ," JUNK  "
-9150 DATA 'S.SPC,    .DSZ," SPC  "
-9160 DATA 'S.START,  .DSZ,"START: "
-9170 DATA 'S.STOP,   .DSZ,"STOP: "
-9180 DATA 'S.FILE,   .DSZ,"FILE: "
-9190 DATA 'S.DRVBRA, .DSZ,"DRIVE ["
-9191 DATA 'S.KETCOL, .DSZ,"]: "
-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
+9900 REM
+9901 REM ENTRY POINTS: $C350 - $C3B4
+9902 REM
+9904 DATA .=, 50000,  JMP, LINECNT
+9910 DATA .=, 50010,  JMP, LINECUT
+9920 DATA .=, 50020,  JMP, LINECAT
+9930 DATA .=, 50030,  JMP, LINECLP
+9998 DATA .LIM, 50100
 9999 DATA .END