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
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+
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
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
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
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
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"
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
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
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
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
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"
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
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
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^
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
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
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 <
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
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
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^
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