commit 09d199d623ec10bec6ec8055610375c0407cc5ae from: Sven M. Hallberg date: Sun May 31 18:14:32 2026 UTC LINEUTIL.B.6 commit - 2b548c651f8388d9bfaf8faec2f7deb57dfce552 commit + 09d199d623ec10bec6ec8055610375c0407cc5ae blob - 6b8d83420498126b8fafe2d41aed1485164f430a blob + 1b75f998e72033242211a2acd2560b2bde5c579b Binary files LINEUTIL.B,PRG and LINEUTIL.B,PRG differ blob - f44362a35f3657799cb9ee508a4fc93acaea5d88 blob + cbe6d493723f9a768af3186ee2b695e54de35de9 --- LINEUTIL.B.lst +++ LINEUTIL.B.lst @@ -6,7 +6,7 @@ 1005 REM 1009 REM -999 [BASASM] 1010 REM 1000 TOP COMMENT -1015 REM 1500 (SYMBOL DEFINITIONS) +1015 REM 1500 SYMBOL DEFINITIONS 1020 REM 2000 LINECNT 1030 REM 3000 SUBROUTINES 1050 REM 5000 LINECUT @@ -33,6 +33,9 @@ 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 1999 REM 2000 DATA 'LINECNT 2001 DATA LDXZ, TXTTAB @@ -360,9 +363,9 @@ 3725 DATA JSR, CHROUT 3726 DATA LDA#, 13 3727 DATA JSR, CHROUT -3730 DATA LDAZ, 2 -3731 DATA LDXZ, 251 -3732 DATA LDYZ, 252 +3730 DATA LDXZ, 251 +3731 DATA LDYZ, 252 +3732 DATA LDAZ, 2 3733 DATA RTS 3799 REM 3800 DATA 'ATOI @@ -435,42 +438,39 @@ 4101 REM 4102 REM 251-252 IN: DST POINTER 4103 REM 253-254 IN: SRC POINTER -4104 REM X/Y IN: LEN X=MSB! +4104 REM Y.X IN: LEN !X=MSB! 4105 REM 4106 REM CLOBBERS: A, X, Y, 2, 251-254 4107 REM -4110 DATA CPY#, 0 -4111 DATA BEQR, MC2 -4115 DATA STYZ, 2: REM SAVE LO(LEN) -4120 DATA 'MC1 -4130 DATA DEY -4140 DATA LDA(Y, 253 -4141 DATA STA(Y, 251 -4150 DATA CPY#, 0 -4151 DATA BNER, MC1 -4155 DATA CLC -4156 DATA LDAZ, 251 -4157 DATA ADCZ, 2 -4158 DATA STAZ, 251 -4159 DATA LDAZ, 252 -4160 DATA ADC#, 0 -4161 DATA STAZ, 252 -4162 DATA CLC -4163 DATA LDAZ, 253 -4164 DATA ADCZ, 2 -4165 DATA STAZ, 253 -4166 DATA LDAZ, 254 -4167 DATA ADC#, 0 -4168 DATA STAZ, 254 -4170 DATA 'MC2 -4175 DATA CPX#, 0 -4176 DATA BEQR, MC3 -4180 DATA DEX -4181 DATA INCZ, 252 -4182 DATA INCZ, 254 -4185 DATA JMP, MC1 -4190 DATA 'MC3 -4195 DATA RTS +4108 REM NB: OVERLAP OKAY IF DST < SRC +4109 REM +4110 DATA STYZ, T: REM SAVE LO(LEN) +4111 DATA LDY#, 0 +4115 DATA CPX#, 0 +4116 DATA BEQR, MC3 +4130 DATA 'MC2: REM BLOCK COPY +4140 DATA LDA(Y, Q +4141 DATA STA(Y, P +4142 DATA INY +4145 DATA LDA(Y, Q: REM UNROLL (11%) +4146 DATA STA(Y, P +4147 DATA INY +4150 DATA BNER, MC2 +4160 DATA INCZ, P+ +4161 DATA INCZ, Q+ +4165 DATA DEX +4166 DATA BNER, MC2 +4170 DATA 'MC3: REM PARTIAL BLOCK +4175 DATA LDAZ, T: REM LO(LEN) +4176 DATA BEQR, MCRET +4180 DATA 'MC4 +4181 DATA LDA(Y, Q +4182 DATA STA(Y, P +4183 DATA INY +4184 DATA CPYZ, T +4185 DATA BCCR, MC4 +4190 DATA 'MCRET +4191 DATA RTS 4199 REM 4200 DATA 'GETSTASTO 4201 REM @@ -580,7 +580,7 @@ 4434 DATA LDY#, BUF^ 4435 DATA JSR, GETSTR 4437 DATA JSR, SETNAM -4440 DATA RTS +4441 DATA RTS 4499 REM 4500 DATA 'FINDLAST 4501 REM @@ -633,7 +633,7 @@ 5020 DATA 'LCU1 5021 DATA RTS: REM NSTOP <= NSTART 5030 DATA 'LCU2 -5060 REM LOCATE START -> PTR IN 251 +5060 REM LOCATE START -> PTR IN P (251) 5061 DATA LDX, NSTART 5062 DATA LDY, NSTART+ 5063 DATA JSR, FINDLINE @@ -641,60 +641,60 @@ 5065 DATA PHA 5066 DATA TYA 5067 DATA PHA -5070 REM LOCATE STOP LINE -> PTR IN 253 +5070 REM LOCATE STOP LINE -> PTR IN Q 5071 DATA LDX, NSTOP 5072 DATA LDY, NSTOP+ 5073 DATA JSR, FINDNEXT -5074 DATA STXZ, 253 -5075 DATA STYZ, 254 +5074 DATA STXZ, Q +5075 DATA STYZ, Q+ 5076 DATA PLA: REM PSTART HI -5077 DATA STAZ, 252 +5077 DATA STAZ, P+ 5078 DATA PLA: REM PSTART LO -5079 DATA STAZ, 251 -5240 REM CALC DELTA=STOP-START +5079 DATA STAZ, P +5240 REM CALC. DELTA = PSTOP - PSTART 5250 DATA SEC -5251 DATA LDAZ, 253 -5252 DATA SBCZ, 251 +5251 DATA LDAZ, Q +5252 DATA SBCZ, P 5253 DATA STA, DELTA -5254 DATA LDAZ, 254 -5255 DATA SBCZ, 252 +5254 DATA LDAZ, Q+ +5255 DATA SBCZ, P+ 5256 DATA STA, DELTA+ 5260 REM SCAN AFTER STOP, ADJUST PTRS -5270 DATA LDXZ, 253 -5271 DATA LDYZ, 254 +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, 253 +5301 DATA LDA(Y, Q 5302 DATA BEQR, LCU10: REM DONE -5310 DATA LDY#, 0 -5320 DATA LDA(Y, 253 +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, 253 +5340 DATA STA(Y, Q 5341 DATA INY -5350 DATA LDA(Y, 253 -5351 DATA STAZ, 2: REM SAVE HI(PNEXT) +5350 DATA LDA(Y, Q +5351 DATA STAZ, T: REM SAVE HI(PNEXT) 5360 DATA SBC, DELTA+ -5370 DATA STA(Y, 253 -5380 DATA LDYZ, 2 -5381 DATA STXZ, 253: REM NEXT LINE -5382 DATA STYZ, 254 +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, 253 -5395 DATA STYZ, 254 +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, 253 +5412 DATA SBCZ, Q 5413 DATA TAY: REM Y = LO BYTE! 5414 DATA LDAZ, STREND+ -5415 DATA SBCZ, 254 +5415 DATA SBCZ, Q+ 5416 DATA TAX: REM X = HI BYTE! 5420 DATA JSR, MEMCPY 5430 REM ADJUST VARTAB, ARYTAB, STREND @@ -739,8 +739,7 @@ 6020 DATA LDA(Y, 251 6021 DATA PHA 6025 DATA 'LCA1 -6030 DATA LDA#, 1: REM FILE NO -6031 DATA JSR, GETFILE +6030 DATA JSR, GETFILE 6040 DATA SEC 6041 DATA LDAZ, VARTAB 6042 DATA SBC#, 2: REM CUT NULL OFF @@ -753,15 +752,22 @@ 6049 DATA LDA#, 0: REM L/V 6050 DATA JSR, LOAD 6051 DATA BCCR, LCA1.1 -6055 DATA LDX#, S.ERROR -6056 DATA LDY#, S.ERROR^ -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 -6075 DATA JMP, LCACHK +6055 DATA PLA +6056 DATA PLA +6060 DATA LDA#, 0 +6061 DATA TAY +6062 DATA STA(Y, 251 +6063 DATA INY +6064 DATA STA(Y, 251 +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 +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