commit 65a8a8f00044d5d4e6be1ac5651cd656bbe191c4 from: Sven M. Hallberg date: Sun May 31 18:15:35 2026 UTC LINEUTIL.B.8 commit - a82c27fe5ea67b4c71f1390bd67d74b932f367b3 commit + 65a8a8f00044d5d4e6be1ac5651cd656bbe191c4 blob - fa65d6dd2d09c6fe22921fcec06e62fc121bc4f0 blob + 0fac35319e5e8cd1e4bc05113386810cb7a2a5a5 Binary files LINEUTIL.B,PRG and LINEUTIL.B,PRG differ blob - 966ae34f817b75e61a3c3fd00c9a35488748b848 blob + dc96c2e69c87f0dedeff7a643ff3d45368323d11 --- LINEUTIL.B.lst +++ LINEUTIL.B.lst @@ -265,6 +265,7 @@ 3044 REM 4400 GETFILE 3045 REM 4500 FINDLAST,PUTNL,PRINTNATLN 3046 REM 4600 DELTAPPLY +3047 REM 4700 RELINK 3099 REM 3100 DATA 'PUTSTR 3101 REM @@ -517,9 +518,10 @@ 4200 DATA 'GETSTASTO 4201 REM 4202 REM X.Y OUT: NSTOP -4203 REM -4204 REM CLOBBERS: A, X, Y, 2, P, Q -4205 REM +4203 REM C,Z OUT: CMP NSTOP-NSTART +4204 REM +4205 REM CLOBBERS: A, X, Y, 2, P, Q +4206 REM 4210 DATA LDX#, S.START 4211 DATA LDY#, S.START^ 4212 DATA JSR, PUTSTR @@ -710,6 +712,52 @@ 4691 DATA 'DEA3 4692 DATA RTS 4699 REM +4700 DATA 'RELINK +4701 REM +4702 REM P IN: PTR TO START LINE +4703 REM Q IN: PTR TO STOP LINE +4704 REM P OUT: PTR BEYOND LAST LINE +4705 REM +4706 REM CLOBBERS: A, X, Y, T +4709 REM +4710 DATA 'RL1 +4711 DATA LDAZ, P+ +4712 DATA CMPZ, Q+ +4713 DATA BCCR, RL2 +4714 DATA BNER, RL4 +4715 DATA LDAZ, P +4716 DATA CMPZ, Q +4717 DATA BCSR, RL4: REM PSTOP REACHD +4720 DATA 'RL2 +4721 DATA LDY#, 1 +4722 DATA LDA(Y, P +4723 DATA BEQR, RL4: REM PAST LAST LN +4725 DATA LDY#, 3 +4730 DATA 'RL3: REM SCAN FOR NUL +4735 DATA INY +4740 DATA LDA(Y, P +4741 DATA BNER, RL3: REM NEXT CHAR +4742 DATA INY: REM GO PAST NUL +4750 DATA CLC: REM ADV POINTER +4751 DATA TYA +4752 DATA ADCZ, P +4753 DATA TAX +4754 DATA LDA#, 0 +4755 DATA ADCZ, P+ +4760 DATA LDY#, 1 +4761 DATA STA(Y, P +4762 DATA STAZ, T: REM SAVE HI BYTE +4763 DATA TXA +4764 DATA DEY +4765 DATA STA(Y, P +4766 DATA LDYZ, T +4770 DATA STXZ, P +4771 DATA STYZ, P+ +4780 DATA JMP, RL1: REM NEXT LINE +4790 DATA 'RL4 +4791 DATA RTS +4799 REM +4999 REM 5000 DATA 'LINECUT 5010 DATA JSR, GETSTASTO 5011 DATA BCCR, LCU1: REM < @@ -826,48 +874,16 @@ 6065 DATA LDX#, S.ERROR 6066 DATA LDY#, S.ERROR^ 6067 DATA JSR, PUTSTR -6068 DATA RTS +6068 DATA 'LCARET +6069 DATA RTS 6070 DATA 'LCA1.1 6071 DATA STXZ, Q: REM PSTOP 6072 DATA STYZ, Q+ 6075 REM CHECK FOR LINE NUMBER CLASH -6076 DATA JMP, LCACHK +6076 DATA JSR, LCACHK +6077 DATA BCSR, LCARET 6080 REM SCAN & RELINK LINES -6081 DATA 'LCA2: REM FOR EACH LINE -6090 DATA LDAZ, P+ -6091 DATA CMPZ, Q+ -6092 DATA BCCR, LCA2.1 -6093 DATA BNER, LCA4 -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, 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, 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, P -6133 DATA TAX -6134 DATA LDA#, 0 -6135 DATA ADCZ, P+ -6140 DATA LDY#, 1 -6141 DATA STA(Y, P -6142 DATA STAZ, T: REM SAVE HI BYTE -6143 DATA TXA -6144 DATA DEY -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 +6081 DATA JSR, RELINK 6180 REM REWRITE TERMINATOR TO BE SAFE 6181 DATA LDA#, 0 6182 DATA TAY @@ -909,14 +925,17 @@ 6280 DATA LDX#, S.ABORT 6281 DATA LDY#, S.ABORT^ 6282 DATA JSR, PUTSTR -6283 DATA RTS +6285 DATA SEC 6290 DATA 'LCACOK -6291 DATA JMP, LCA2 +6291 DATA RTS 6299 REM 6400 DATA 'LINECLP 6410 DATA JSR, GETSTASTO 6411 DATA BCCR, LCLRET -6412 DATA BEQR, LCLRET +6412 DATA BNER, LCL1 +6415 DATA 'LCLRET +6416 DATA RTS +6419 DATA 'LCL1 6420 DATA LDX, NSTART 6421 DATA LDY, NSTART+ 6425 DATA JSR, FINDLINE @@ -929,49 +948,65 @@ 6446 DATA STY, PSTOP+ 6450 DATA LDA#, 1: REM FILE NO 6451 DATA JSR, GETFILE -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, Q -6465 DATA STA, TMP -6466 DATA INY -6467 DATA LDA(Y, Q -6468 DATA STA, TMP+ -6470 DATA LDA#, 0 -6471 DATA STA(Y, Q -6472 DATA DEY -6473 DATA STA(Y, Q -6475 DATA CLC -6476 DATA LDA#, 2 -6477 DATA ADCZ, Q -6478 DATA TAX -6479 DATA LDA#, 0 -6480 DATA ADCZ, Q+ -6481 DATA TAY -6482 DATA LDA#, P -6483 DATA JSR, SAVE -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^ -6493 DATA JSR, PUTSTR -6495 DATA 'LCLRET -6496 DATA RTS -6499 REM +6455 REM "RELOCATE" PTRS REL TO 2049 +6456 DATA LDX, PSTART +6457 DATA LDY, PSTART+ +6458 DATA STXZ, P +6459 DATA STYZ, P+ +6460 DATA SEC +6461 DATA LDA#, 2049 +6462 DATA SBCZ, P +6463 DATA STA, DELTA +6464 DATA LDA#, 2049^ +6465 DATA SBCZ, P+ +6466 DATA STA, DELTA+ +6470 DATA LDX, PSTOP +6471 DATA LDY, PSTOP+ +6475 DATA LDA#, 0 +6476 DATA JSR, DELTAPPLY +6480 REM SAVE NEXT PNEXT +6481 REM REPLACE IT WITH NULL AND +6482 REM SET X.Y = PSTOP + 2 +6483 DATA LDY#, 0 +6484 DATA LDA(Y, Q +6485 DATA STA, TMP +6486 DATA INY +6487 DATA LDA(Y, Q +6488 DATA STA, TMP+ +6490 DATA LDA#, 0 +6491 DATA STA(Y, Q +6492 DATA DEY +6493 DATA STA(Y, Q +6550 DATA CLC +6551 DATA LDA#, 2 +6552 DATA ADCZ, Q +6553 DATA TAX +6554 DATA LDA#, 0 +6555 DATA ADCZ, Q+ +6556 DATA TAY +6560 DATA LDA, PSTART +6561 DATA STAZ, P +6562 DATA LDA, PSTART+ +6563 DATA STAZ, P+ +6564 DATA LDA#, P +6565 DATA JSR, SAVE +6566 DATA BCCR, LCLDONE +6567 DATA LDX#, S.ERROR +6568 DATA LDY#, S.ERROR^ +6569 DATA JSR, PUTSTR +6570 DATA 'LCLDONE +6571 DATA LDY#, 0 +6572 DATA LDA, TMP: REM PNEXT LO +6573 DATA STA(Y, Q: REM -> PSTOP[0] +6574 DATA INY +6575 DATA LDA, TMP+: REM PNEXT HI +6576 DATA STA(Y, Q: REM -> PSTOP[1] +6580 DATA LDX, PSTART +6581 DATA LDY, PSTART+ +6582 DATA STXZ, P +6583 DATA STYZ, P+ +6584 DATA JMP, RELINK: REM TAIL CALL +6599 REM 9900 REM 9901 REM ENTRY POINTS: $C350 - $C3B4 9902 REM