commit 7889c72b765d5be3c74b02c0e6eaa2c2b5617b93 from: Sven M. Hallberg date: Thu Jun 11 18:38:40 2026 UTC LINEUTIL.B.10 - finish LINECHG commit - eb9ae0480b840f316f65a14c778441d4f7886942 commit + 7889c72b765d5be3c74b02c0e6eaa2c2b5617b93 blob - d9db77f6c3be99baf66c9acf551c018459770eda blob + 143e4e55292eeace153b5dc41d4de2d974c90628 Binary files LINEUTIL.B,PRG and LINEUTIL.B,PRG differ blob - 3c5236d22adc1a2fb809d599349a93a7803f703f blob + e18f5e224f32a3f9ad284577c47d3c5a2b3a531c --- LINEUTIL.B.lst +++ LINEUTIL.B.lst @@ -74,12 +74,10 @@ 1722 DATA 'S.KETCOL, .DSZ,"]: " 1730 DATA 'S.DEST, .DSZ,"DEST: " 1799 REM -1800 DATA 'S.ERROR, .DB, 13 -1801 DATA .DSZ,"ERROR " -1805 DATA 'S.ABORT, .DB, 13 -1806 DATA .DSZ,"ABORTED" +1800 DATA 'S.ERROR, .DSZ,"ERROR " +1805 DATA 'S.ABORT, .DSZ,"ABORTED" 1810 DATA 'S.ECLASH, .DSZ -1811 DATA " ! LINE NUMBER CLASH" +1811 DATA "LINE NUMBER CLASH" 1990 REM 1991 REM 1995 DATA .LIM, 50000: REM $C350 @@ -262,15 +260,16 @@ 3000 REM 3001 REM - SUBROUTINES - 3002 REM -3031 REM 3100 PUTSTR / PUTISTR / PUT*LN +3031 REM 3100 PUTSTR, PUTISTR, PUT*LN 3032 REM 3200 QUOTREM 3034 REM 3400 PRINTNAT 3036 REM 3600 GETSTR +3037 REM 3750 CMPLINENO 3038 REM 3800 ATOI 3040 REM 4000 READNAT 3041 REM 4100 MEMCPY 3042 REM 4200 GETSTASTO -3043 REM 4300 FINDLINE / FINDNEXT +3043 REM 4300 FINDLINE, FINDNEXT 3044 REM 4400 GETFILE 3045 REM 4500 FINDLAST,PUTNL,PRINTNATLN 3046 REM 4600 DELTAPPLY @@ -465,6 +464,31 @@ 3731 DATA LDYZ, P+ 3732 DATA LDAZ, T 3733 DATA RTS +3749 REM +3750 DATA 'CMPLINENO +3751 REM +3752 REM X.Y IN: LINE NUMBER +3753 REM P IN: LINE POINTER +3754 REM +3755 REM CLOBBERS: Y, T +3756 REM +3760 DATA STYZ, T +3761 DATA LDY#, 1: REM HI(PNEXT) +3762 DATA LDA(Y, P +3763 DATA BNER, CLN1 +3764 DATA CLC: REM < +3765 DATA RTS +3770 DATA 'CLN1 +3771 DATA LDAZ, T +3772 DATA LDY#, 3 +3773 DATA CMP(Y, P +3774 DATA BCCR, CLNRET +3775 DATA BNER, CLNRET +3780 DATA TXA +3781 DATA DEY +3782 DATA CMP(Y, P +3790 DATA 'CLNRET +3791 DATA RTS 3799 REM 3800 DATA 'ATOI 3801 REM @@ -840,35 +864,34 @@ 4842 DATA LDYZ, Q+ 4843 DATA STX, PPREV 4844 DATA STY, PPREV+ -4860 REM LOCATE STOP LINE -4861 DATA LDX, NSTOP -4862 DATA LDY, NSTOP+ -4863 DATA JSR, FINDNEXT -4864 DATA STX, PSTOP -4865 DATA STY, PSTOP+ -4879 REM SAVE PTR TO LAST LINE -4880 DATA LDXZ, Q -4881 DATA LDYZ, Q+ -4882 DATA STX, PLAST -4883 DATA STY, PLAST+ -4890 DATA CLC -4891 DATA RTS +4850 REM LOCATE STOP LINE +4851 DATA LDX, NSTOP +4852 DATA LDY, NSTOP+ +4853 DATA JSR, FINDNEXT +4854 DATA STX, PSTOP +4855 DATA STY, PSTOP+ +4860 REM SAVE PTR TO LAST LINE +4861 DATA LDXZ, Q +4862 DATA LDYZ, Q+ +4863 DATA STX, PLAST +4864 DATA STY, PLAST+ +4870 REM CALC. DELTA = PSTART - PSTOP +4871 DATA SEC +4872 DATA LDA, PSTART +4873 DATA SBC, PSTOP +4874 DATA STA, DELTA +4875 DATA LDA, PSTART+ +4876 DATA SBC, PSTOP+ +4877 DATA STA, DELTA+ +4880 DATA RTS 4999 REM 5000 DATA 'LINECUT 5001 DATA JSR, PUTISTRLN -5002 DATA .DSZ, "DELETE LINES" +5002 DATA .DSZ, "=DELETE LINES" 5010 DATA JSR, GETSTASTOLINE 5011 DATA BCCR, LCU2: REM START < STOP 5012 DATA RTS 5020 DATA 'LCU2 -5240 REM CALC. DELTA = PSTART - PSTOP -5250 DATA SEC -5251 DATA LDA, PSTART -5252 DATA SBC, PSTOP -5253 DATA STA, DELTA -5254 DATA LDA, PSTART+ -5255 DATA SBC, PSTOP+ -5256 DATA STA, DELTA+ 5260 REM SCAN AFTER STOP, ADJUST PTRS 5270 DATA LDX, PSTOP 5271 DATA LDY, PSTOP+ @@ -921,7 +944,7 @@ 5999 REM 6000 DATA 'LINECAT 6001 DATA JSR, PUTISTRLN -6002 DATA .DSZ, "APPEND PRG" +6002 DATA .DSZ, "=APPEND PRG" 6005 REM SAVE LAST LINE NUMBER IN TMP 6006 DATA JSR, FINDLAST 6007 DATA LDY#, 1 @@ -951,7 +974,8 @@ 6048 DATA TAY 6049 DATA LDA#, 0: REM L/V 6050 DATA JSR, LOAD -6051 DATA BCCR, LCA1.1 +6051 DATA JSR, PUTLN +6052 DATA BCCR, LCA1.1 6060 DATA LDA#, 0 6061 DATA TAY 6062 DATA STA(Y, P @@ -959,7 +983,7 @@ 6064 DATA STA(Y, P 6065 DATA LDX#, S.ERROR 6066 DATA LDY#, S.ERROR↑ -6067 DATA JSR, PUTSTR +6067 DATA JSR, PUTSTRLN 6068 DATA 'LCARET 6069 DATA RTS 6070 DATA 'LCA1.1 @@ -968,16 +992,9 @@ 6075 REM CHECK FOR LINE NUMBER CLASH 6080 REM COMPARE VS LAST LINE NUMBER 6085 DATA LDX, TMP -6086 DATA LDA, TMP+ -6090 DATA LDY#, 3 -6091 DATA CMP(Y, P -6092 DATA BCCR, LCACOK -6093 DATA BNER, LCACFAIL -6100 DATA TXA -6101 DATA DEY -6102 DATA CMP(Y, P -6103 DATA BCCR, LCACOK -6105 DATA 'LCACFAIL +6086 DATA LDY, TMP+ +6090 DATA JSR, CMPLINENO +6091 DATA BCCR, LCACOK 6110 REM NULL OFF THE NEW LINES, ABORT 6111 DATA LDA#, 0 6112 DATA TAY @@ -986,10 +1003,10 @@ 6115 DATA STA(Y, P 6120 DATA LDX#, S.ECLASH 6121 DATA LDY#, S.ECLASH↑ -6122 DATA JSR, PUTSTR +6122 DATA JSR, PUTSTRLN 6130 DATA LDX#, S.ABORT 6131 DATA LDY#, S.ABORT↑ -6132 DATA JSR, PUTSTR +6132 DATA JSR, PUTSTRLN 6135 DATA RTS 6140 DATA 'LCACOK 6170 REM SCAN & RELINK LINES @@ -1013,7 +1030,7 @@ 6399 REM 6400 DATA 'LINECLP 6401 DATA JSR, PUTISTRLN -6402 DATA .DSZ, "SAVE LINES" +6402 DATA .DSZ, "=SAVE LINES" 6410 DATA JSR, GETSTASTOLINE 6411 DATA BCCR, LCL1 6415 DATA RTS @@ -1072,26 +1089,27 @@ 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 +6566 DATA JSR, PUTLN +6567 DATA BCCR, LCLDONE +6570 DATA LDX#, S.ERROR +6571 DATA LDY#, S.ERROR↑ +6572 DATA JSR, PUTSTRLN +6580 DATA 'LCLDONE +6581 DATA LDY#, 0 +6582 DATA LDA, TMP: REM PNEXT LO +6583 DATA STA(Y, Q: REM -> PSTOP[0] +6584 DATA INY +6585 DATA LDA, TMP+: REM PNEXT HI +6586 DATA STA(Y, Q: REM -> PSTOP[1] +6590 DATA LDX, PSTART +6591 DATA LDY, PSTART+ +6592 DATA STXZ, P +6593 DATA STYZ, P+ +6594 DATA JMP, RELINK: REM TAIL CALL 6599 REM 6600 DATA 'LINECHG 6601 DATA JSR, PUTISTRLN -6602 DATA .DSZ, "SHIFT LINES" +6602 DATA .DSZ, "=SHIFT LINES" 6610 DATA JSR, GETSTASTOLINE 6611 DATA BCCR, LCH1 6612 DATA RTS @@ -1104,8 +1122,80 @@ 6635 DATA STY, NDEST+ 6640 REM MUST VALIDATE: 6641 REM 1. NDEST > NPREV -6642 REM 2. NLAST + DELTA < NNEXT -6643 REM WHERE DELTA = NDEST - NSTART +6642 REM 2. NLAST + DELTA < 64000 +6643 REM 3. NLAST + DELTA < NNEXT +6644 REM WHERE DELTA = NDEST - NSTART +6645 REM AND NPREV/NNEXT EXIST, RSP. +6650 DATA LDA, PPREV+ +6651 DATA BEQR, LCH2 +6652 DATA STAZ, P+ +6653 DATA LDA, PPREV +6654 DATA STAZ, P +6655 DATA LDX, NDEST +6656 DATA LDY, NDEST+ +6660 DATA JSR, CMPLINENO +6661 DATA BCCR, LCHCLASH +6662 DATA BEQR, LCHCLASH +6665 DATA 'LCH2 +6669 REM CALC. DELTA = NDEST - NSTART +6670 DATA SEC +6671 DATA LDA, NDEST +6672 DATA SBC, NSTART +6673 DATA STA, DELTA +6674 DATA LDA, NDEST+ +6675 DATA SBC, NSTART+ +6676 DATA STA, DELTA+ +6677 DATA BCCR, LCH3: REM DELTA < 0 +6680 REM DETERMINE NLAST +6681 DATA LDA, PLAST +6682 DATA STAZ, P +6683 DATA LDA, PLAST+ +6684 DATA STAZ, P+ +6690 DATA LDY#, 2 +6691 DATA LDA(Y, P +6692 DATA STA, NLAST +6693 DATA INY +6694 DATA LDA(Y, P +6695 DATA STA, NLAST+ +6700 REM 2. NLAST + DELTA < 64000=FA00 +6701 DATA CLC +6702 DATA LDA, NLAST +6703 DATA ADC, DELTA +6704 DATA TAX: REM LO BYTE -> X +6705 DATA LDA, NLAST+ +6706 DATA ADC, DELTA+ +6707 DATA BCSR, LCHCLASH +6708 DATA CMP#, 250: REM = $FA +6709 DATA BCSR, LCHCLASH +6710 REM 3. NLAST + DELTA < NNEXT +6711 DATA TAY: REM HI BYTE -> Y +6712 DATA LDA, PSTOP+ +6713 DATA BEQR, LCH3 +6714 DATA STAZ, P+ +6715 DATA LDA, PSTOP +6716 DATA STAZ, P +6720 DATA JSR, CMPLINENO +6721 DATA BCSR, LCHCLASH +6730 DATA 'LCH3 +6740 DATA LDX, PSTART +6741 DATA LDY, PSTART+ +6742 DATA STXZ, P +6743 DATA STYZ, P+ +6744 DATA LDX, PSTOP +6745 DATA LDY, PSTOP+ +6746 DATA STXZ, Q +6747 DATA STYZ, Q+ +6750 DATA LDA#, 2: REM LINE NUMBER +6751 DATA JSR, DELTAPPLY +6752 DATA RTS +6760 DATA 'LCHCLASH +6761 DATA LDX#, S.ECLASH +6762 DATA LDY#, S.ECLASH↑ +6763 DATA JSR, PUTSTRLN +6764 DATA LDX#, S.ABORT +6765 DATA LDY#, S.ABORT↑ +6766 DATA JSR, PUTSTRLN +6767 DATA RTS 9900 REM 9901 REM ENTRY POINTS: $C350 - $C3B4 9902 REM