commit d7bdf931da0d9279831a3e2339fbbfaa48e3e09a from: Sven M. Hallberg date: Sun May 31 18:14:04 2026 UTC LINEUTIL.B.2 commit - 54a0914502c40d3bceee09d939958dda0ba5cf31 commit + d7bdf931da0d9279831a3e2339fbbfaa48e3e09a blob - 5785d55b4029f25b4f3a92b2a08bf0ead1d83fae blob + 78c299b343ff32a7f5120f499183b0aa251ade16 Binary files LINEUTIL.B,PRG and LINEUTIL.B,PRG differ blob - 1bc881c1b8aa419b202e34a272db8041e44fe2c8 blob + 19dfef47214b1c3cfb8df71f3b4dfd0f6963ff90 --- LINEUTIL.B.lst +++ LINEUTIL.B.lst @@ -1,13 +1,13 @@ 0 REM BASASM - A SIMPLISTIC ASSEMBLER 1 REM MADE IN BASIC. PESCO 2026 2 REM -3 REM 10 VARIABLES 400 .DIRECTIVES -4 REM 100 LOAD OPCODES 700 *SAVE TO PRG -5 REM 130 SUBROUTINES 720 *PRINT SEQ F -6 REM 200 MAIN LOOP 800 *HEXDUMP MEM -7 REM 300 FORWARD REFS 900 OPCODE TABLE -8 REM 1000 ASSEMBLY PGM -9 REM +3 REM 10 VARIABLES 700 *SAVE TO PRG +4 REM 100 LOAD OPCODES 720 *PRINT SEQ F +5 REM 130 SUBROUTINES 740 *MEMSTAT +6 REM 200 MAIN LOOP 750 *READ IO ERR +7 REM 300 FORWARD REFS 800 *HEXDUMP MEM +8 REM 400 .DIRECTIVES 900 OPCODE TABLE +9 REM 1000 ASSEMBLY PGM 10 O = 49152 :REM STARTING POSITION 11 P = O :REM CURRENT POSITION 13 UN = 0 :REM UNDEF SYMBOL COUNT @@ -21,7 +21,7 @@ 27 DIM SY$(SM%) :REM SYMBOL NAMES 28 DIM SY(SM%) :REM SYMBOL VALUES 30 PA% = 0 :REM PATCH COUNT -31 PM% = 99 :REM PATCH MAX +31 PM% = 255 :REM PATCH MAX 32 DIM PA(PM%) :REM PATCH POSITION 33 DIM PA%(PM%) :REM PATCH LENGTH 34 DIM PA$(PM%) :REM PATCH MODE (INST) @@ -135,7 +135,7 @@ 371 FOR I = 0 TO PA% - 1 372 P = PA(I): L% = PA%(I) 373 A = PS(I): M$ = PA$(I) -374 IF SY(A) = -1 THEN NEXT +374 IF SY(A) = -1 THEN 378 375 PRINT P + 1; TAB(13); 376 PRINT "["; SY$(A); "] "; 377 A = SY(A): GOSUB 190: PRINT @@ -226,6 +226,28 @@ 728 OPEN 1,D,2,F$ + ",SEQ,R" 729 IF ST THEN CLOSE 1: END 732 GET# 1, A$: PRINT A$;: GOTO 729 +737 REM +738 REM *RUN 740* PRINT MEM STATS/PTRS +739 REM +740 PRINT 43,"TXTTAB",PEEK(43)+PEEK(44)*256 +741 PRINT 45,"VARTAB",PEEK(45)+PEEK(46)*256 +742 PRINT 47,"ARYTAB",PEEK(47)+PEEK(48)*256 +743 PRINT 49,"STREND",PEEK(49)+PEEK(50)*256 +744 PRINT 51,"FRETOP",PEEK(51)+PEEK(52)*256 +745 PRINT 53,"FRESPC",PEEK(53)+PEEK(54)*256 +746 PRINT 55,"MEMSIZ",PEEK(55)+PEEK(56)*256 +747 END +748 REM +749 REM *RUN 750* READ IO ERROR CHANNEL +750 FA = PEEK(186) +751 PRINT "DRIVE [";FA;"]";: INPUT A$ +752 A=FA: IF A$ <>"" THEN A=VAL(A$) +753 OPEN 15, A, 15 +754 INPUT# 15, A, B$, C, D +755 CLOSE 15 +756 PRINT A; B$; C; D +757 END +799 REM 800 REM *RUN 800* HEXDUMP MEMORY 801 REM 802 INPUT "START"; A$: GOSUB 130: P=A @@ -345,6 +367,8 @@ 1030 REM 2000 LINECNT 1040 REM 3000 SUBROUTINES 1050 REM 5000 LINECUT +1060 REM 6000 LINECAT +1080 REM 8000 ENTRY POINTS 1090 REM 9000 VARIABLES & STATIC DATA 1099 REM 1500 REM @@ -529,11 +553,20 @@ 3020 REM 3200 QUOTREM 3030 REM 3400 PRINTNAT 3040 REM 3600 GETSTR +3050 REM 3800 ATOI +3060 REM 4000 READNAT +3070 REM 4100 MEMCPY 3099 REM 3100 DATA 'PUTSTR -3105 DATA STXZ, 251: REM USER Z/P AREA -3106 DATA STYZ, 252 -3110 DATA LDY#, 0 +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 +3106 REM +3110 DATA STXZ, 251: REM USER Z/P AREA +3111 DATA STYZ, 252 +3112 DATA LDY#, 0 3120 DATA 'PS1 3130 DATA LDA(Y, 251 3135 DATA BEQR, PS2 @@ -541,6 +574,8 @@ 3150 DATA INY 3160 DATA JMP, PS1 3170 DATA 'PS2 +3175 DATA TYA +3176 DATA LDYZ, 252 3180 DATA RTS 3199 REM 3200 DATA 'QUOTREM @@ -550,11 +585,11 @@ 3204 REM A RESULT: QUOTIENT 3205 REM X.Y RESULT: REMAINDER 3206 REM -3207 REM CLOBBERS 253 AND C +3207 REM CLOBBERS 2 AND C 3208 REM 3209 REM 3210 DATA LDA#, 0 -3211 DATA STAZ, 253 +3211 DATA STAZ, 2 3220 DATA 'QR1 3225 DATA SEC 3230 DATA TXA @@ -564,7 +599,7 @@ 3260 DATA SBCZ, 252 3265 DATA TAY 3270 DATA BCCR, QR2 -3280 DATA INCZ, 253 +3280 DATA INCZ, 2 3290 DATA JMP, QR1 3300 DATA 'QR2 3310 DATA TXA @@ -573,11 +608,16 @@ 3316 DATA TYA 3318 DATA ADCZ, 252 3320 DATA TAY -3322 DATA LDAZ, 253 +3322 DATA LDAZ, 2 3323 DATA CLC 3324 DATA RTS 3390 REM 3400 DATA 'PRINTNAT +3401 REM +3402 REM X/Y IN: NUMBER TO PRINT +3403 REM +3404 REM CLOBBERS: A, X, Y, 2, 251-252 +3405 REM 3410 DATA LDA#, 16: REM 10000... 3411 DATA STAZ, 251 3412 DATA LDA#, 39 @@ -612,15 +652,21 @@ 3580 DATA RTS 3599 REM 3600 DATA 'GETSTR +3601 REM +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 +3606 REM 3610 DATA STXZ, 251 3611 DATA STYZ, 252 3620 DATA LDY#, 0 3625 DATA STYZ, 204: REM CURSOR ON 3630 DATA 'GS1 -3635 DATA STYZ, 215: REM SAVE Y +3635 DATA STYZ, 2: REM SAVE Y 3640 DATA JSR, $FFE4: REM GETIN 3641 DATA BEQR, GS1 -3645 DATA LDYZ, 215: REM RESTORE Y +3645 DATA LDYZ, 2: REM RESTORE Y 3650 DATA CMP#, 13: REM CR 3651 DATA BEQR, GS3 3660 DATA CMP#, 20: REM DEL @@ -634,7 +680,7 @@ 3680 DATA 'GS2 3681 DATA CMP#, 32: REM SPC 3682 DATA BMIR, GS1 -3683 DATA CMP#, 126: REM "{pi}" +3683 DATA CMP#, 127: REM DEL 3684 DATA BPLR, GS1 3690 DATA STA(Y, 251 3691 DATA INY @@ -643,29 +689,425 @@ 3700 DATA 'GS3 3710 DATA LDA#, 0 3720 DATA STA(Y, 251 -3725 DATA LDA#, 1 -3726 DATA STAZ, 204: REM CURSOR OFF -3727 DATA LDA#, 13 -3728 DATA JSR, $FFD2 -3730 DATA RTS +3721 DATA STYZ, 2 +3722 DATA LDA#, 1 +3723 DATA STAZ, 204: REM CURSOR OFF +3724 DATA LDA#, 32: REM ERASE CRSR +3725 DATA JSR, $FFD2 +3726 DATA LDA#, 13 +3727 DATA JSR, $FFD2 +3730 DATA LDAZ, 2 +3731 DATA LDXZ, 251 +3732 DATA LDYZ, 252 +3733 DATA RTS +3799 REM +3800 DATA 'ATOI +3801 REM +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: 215, 251-254 +3807 REM +3810 DATA STXZ, 251 +3811 DATA STYZ, 252 +3820 DATA LDX#, 0 +3821 DATA LDY#, 0 +3825 DATA STXZ, 253 +3826 DATA STXZ, 254 +3830 DATA 'AI1 +3840 DATA LDA(Y, 251 +3841 DATA BEQR, AI2 +3849 REM +3850 DATA CMP#, 48: REM "0" +3851 DATA BMIR, AI2 +3860 DATA CMP#, 58: REM "9" +3861 DATA BPLR, AI2 +3870 DATA SEC +3871 DATA SBC#, 48 +3880 DATA STAZ, 215: 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 +3900 DATA CLC: REM ADD 5X +3901 DATA ADCZ, 253 +3902 DATA STAZ, 253 +3903 DATA TXA +3904 DATA ADCZ, 254 +3905 DATA STAZ, 254 +3910 DATA ASLZ, 253: REM DBL 10X +3911 DATA ROLZ, 254 +3920 DATA CLC: REM ADD DIGIT +3921 DATA LDAZ, 215 +3922 DATA ADCZ, 253 +3923 DATA STAZ, 253 +3924 DATA BCCR, AI3 +3925 DATA INCZ, 254 +3926 DATA 'AI3 +3930 DATA INY +3940 DATA BNER, AI1 +3950 DATA 'AI2 +3955 DATA TYA +3956 DATA LDXZ, 253 +3957 DATA LDYZ, 254 +3960 DATA RTS +3999 REM +4000 DATA 'READNAT +4001 REM +4002 REM X/Y OUT: RESULT +4003 REM A OUT: LENGTH CONSUMED +4004 REM +4010 DATA LDX#, BUF +4011 DATA LDY#, $C7: REM XXX HI +4020 DATA JSR, GETSTR +4025 DATA JSR, ATOI +4026 DATA CMP#, 0: REM LEN -> FLAGS +4030 DATA RTS +4099 REM +4100 DATA 'MEMCPY +4101 REM +4102 REM 251-252 IN: DST POINTER +4103 REM 253-254 IN: SRC POINTER +4104 REM X/Y 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 4999 REM 5000 DATA 'LINECUT -5001 DATA LDX#, BUF -5002 DATA LDY#, $C7: REM XXX HI -5010 DATA JSR, GETSTR -5020 DATA LDA#, 13 -5030 DATA JSR, $FFD2 -5035 DATA LDX#, BUF -5036 DATA LDY#, $C7: REM XXX HI -5040 DATA JSR, PUTSTR -5050 DATA RTS +5010 DATA LDX#, S.START +5011 DATA LDY#, $C5: REM XXX HI +5012 DATA JSR, PUTSTR +5020 DATA JSR, READNAT +5021 DATA STX, NSTART +5022 DATA STY, $C40D: REM XXX + +5030 DATA LDX#, S.STOP +5031 DATA LDY#, $C5: REM XXX HI +5032 DATA JSR, PUTSTR +5040 DATA JSR, READNAT +5041 DATA STX, NSTOP +5042 DATA STY, $C40F: REM XXX + +5049 REM ABORT IF NSTOP <= NSTART +5050 DATA CPY, $C40D: REM XXX NSTART+ +5051 DATA BMIR, LCU1 +5052 DATA BNER, LCU2 +5053 DATA CPX, NSTART +5054 DATA BMIR, LCU1 +5055 DATA BNER, LCU2 +5056 DATA 'LCU1 +5058 DATA RTS +5059 DATA 'LCU2 +5060 REM LOCATE START -> PTR IN 251 +5070 DATA LDXZ, 43: REM TXTTAB +5071 DATA LDYZ, 44 +5080 DATA STXZ, 251 +5081 DATA STYZ, 252 +5089 DATA 'LCU3 +5090 DATA LDY#, 1: REM OFFS PNEXT + 1 +5091 DATA LDA(Y, 251 +5092 DATA BEQR, LCU1: REM NOT FOUND +5100 DATA LDY#, 3: REM OFFS LINENO + 1 +5101 DATA LDA(Y, 251 +5102 DATA CMP, $C40D: REM XXX NSTART+ +5103 DATA BMIR, LCU4 +5104 DATA BNER, LCU5 +5105 DATA DEY +5106 DATA LDA(Y, 251 +5107 DATA CMP, NSTART +5108 DATA BMIR, LCU4 +5109 DATA JMP, LCU5 +5110 DATA 'LCU4: REM NEXT LINE +5111 DATA LDY#, 0 +5112 DATA LDA(Y, 251 +5113 DATA TAX +5114 DATA INY +5115 DATA LDA(Y, 251 +5116 DATA STXZ, 251 +5117 DATA STAZ, 252 +5120 DATA JMP, LCU3 +5130 DATA 'LCU5: REM PSTART FOUND +5160 REM LOCATE STOP LINE -> PTR IN 253 +5170 DATA LDXZ, 251 +5171 DATA LDYZ, 252 +5180 DATA STXZ, 253 +5181 DATA STYZ, 254 +5189 DATA 'LCU6 +5190 DATA LDY#, 1: REM OFFS PNEXT + 1 +5191 DATA LDA(Y, 253 +5192 DATA BEQR, LCU8: REM END OF PROG +5200 DATA LDY#, 3: REM OFFS LINENO + 1 +5201 DATA LDA(Y, 253 +5202 DATA CMP, $C40F: REM XXX NSTOP+ +5203 DATA BMIR, LCU7 +5204 DATA BNER, LCU8 +5205 DATA DEY +5206 DATA LDA(Y, 253 +5207 DATA CMP, NSTOP +5208 DATA BMIR, LCU7 +5209 DATA JMP, LCU8 +5210 DATA 'LCU7: REM NEXT LINE +5211 DATA LDY#, 0 +5212 DATA LDA(Y, 253 +5213 DATA TAX +5214 DATA INY +5215 DATA LDA(Y, 253 +5216 DATA STXZ, 253 +5217 DATA STAZ, 254 +5220 DATA JMP, LCU6 +5230 DATA 'LCU8: REM PSTOP FOUND +5240 REM CALC DELTA=STOP-START -> 163 +5250 DATA SEC +5251 DATA LDAZ, 253 +5252 DATA SBCZ, 251 +5253 DATA STA, DELTA +5254 DATA LDAZ, 254 +5255 DATA SBCZ, 252 +5256 DATA STA, $C411: REM XXX DELTA+ +5260 REM SCAN AFTER STOP, ADJUST PTRS +5270 DATA LDXZ, 253 +5271 DATA LDYZ, 254 +5280 DATA STX, TMP: REM SAVE PSTOP +5281 DATA STY, $C413: REM XXX + +5290 DATA 'LCU9 +5300 DATA LDY#, 1 +5301 DATA LDA(Y, 253 +5302 DATA BEQR, LCU10: REM DONE +5310 DATA LDY#, 0 +5320 DATA LDA(Y, 253 +5321 DATA TAX: REM SAVE LO(PNEXT) +5330 DATA SEC +5331 DATA SBC, DELTA +5340 DATA STA(Y, 253 +5341 DATA INY +5350 DATA LDA(Y, 253 +5351 DATA STAZ, 2: REM SAVE HI(PNEXT) +5360 DATA SBC, $C411: REM XXX DELTA+ +5370 DATA STA(Y, 253 +5380 DATA LDYZ, 2 +5381 DATA STXZ, 253: REM NEXT LINE +5382 DATA STYZ, 254 +5390 DATA JMP, LCU9 +5391 DATA 'LCU10 +5392 DATA LDX, TMP: REM SAVED PSTOP +5393 DATA LDY, $C413: REM XXX + +5394 DATA STXZ, 253 +5395 DATA STYZ, 254 +5400 REM COPY THE REMAINING DATA DOWN +5410 DATA SEC: REM LEN=STREND-PSTOP +5411 DATA LDAZ, 49 +5412 DATA SBCZ, 253 +5413 DATA TAY: REM Y = LO BYTE! +5414 DATA LDAZ, 50 +5415 DATA SBCZ, 254 +5416 DATA TAX: REM X = HI BYTE! +5420 DATA JSR, MEMCPY +5430 REM ADJUST VARTAB, ARYTAB, STREND +5440 DATA SEC +5441 DATA LDAZ, 45: REM VARTAB +5442 DATA SBC, DELTA +5443 DATA STAZ, 45 +5444 DATA LDAZ, 46 +5445 DATA SBC, $C411: REM XXX + +5446 DATA STAZ, 46 +5450 DATA SEC +5451 DATA LDAZ, 47: REM ARYTAB +5452 DATA SBC, DELTA +5453 DATA STAZ, 47 +5454 DATA LDAZ, 48 +5455 DATA SBC, $C411: REM XXX + +5456 DATA STAZ, 48 +5460 DATA SEC +5461 DATA LDAZ, 49: REM STREND +5462 DATA SBC, DELTA +5463 DATA STAZ, 49 +5464 DATA LDAZ, 50 +5465 DATA SBC, $C411: REM XXX + +5466 DATA STAZ, 50 +5470 DATA RTS +5990 REM +5995 DATA .=, $C880 +5999 REM +6000 DATA 'LINECAT +6010 DATA LDX#, S.DRVBRA +6011 DATA LDY#, $C5: REM XXX HI +6012 DATA JSR, PUTSTR +6013 DATA LDAZ, 186: REM CURRENT DEV +6014 DATA CLC +6015 DATA ADC#, 48: REM XXX PRINTBYTE +6016 DATA JSR, $FFD2: REM CHROUT +6017 DATA LDX#, S.KETCOL +6018 DATA LDY#, $C5: REM XXX HI +6019 DATA JSR, PUTSTR +6020 DATA JSR, READNAT +6021 DATA BNER, LCA1: REM LEN <> 0 +6022 DATA LDXZ, 186: REM DEFAULT +6023 DATA 'LCA1 +6024 DATA LDA#, 1: REM FILE NO +6025 DATA LDY#, 0: REM SEC ADDR +6026 DATA JSR, $FFBA: REM SETLFS +6030 DATA LDX#, S.FILE +6031 DATA LDY#, $C5: REM XXX HI +6032 DATA JSR, PUTSTR +6033 DATA LDX#, BUF +6034 DATA LDY#, $C7: REM XXX HI +6035 DATA JSR, GETSTR +6037 DATA JSR, $FFBD: REM SETNAM +6040 DATA SEC +6041 DATA LDAZ, 45: REM VARTAB +6042 DATA SBC#, 2: REM CUT NULL OFF +6043 DATA STAZ, 251: REM PSTART +6044 DATA TAX +6045 DATA LDAZ, 46 +6046 DATA SBC#, 0 +6047 DATA STAZ, 252 +6048 DATA TAY +6049 DATA LDA#, 0: REM L/V +6050 DATA JSR, $FFD5: REM LOAD +6051 DATA BCCR, LCA1.1 +6052 DATA LDA#, 1 +6053 DATA JSR, $FFC3: REM CLOSE +6054 DATA RTS +6060 DATA 'LCA1.1 +6061 DATA STXZ, 253: REM PSTOP +6062 DATA STYZ, 254 +6070 REM CHECK FOR LINE NUMBER CLASH +6071 DATA LDA#, 13 +6072 DATA JSR, $FFD2: REM CHROUT +6075 DATA JMP, LCACHK +6080 REM SCAN & RELINK LINES +6081 DATA 'LCA2: REM FOR EACH LINE +6090 DATA LDAZ, 252 +6091 DATA CMPZ, 254 +6092 DATA BMIR, LCA3 +6093 DATA BNER, LCA4 +6094 DATA LDAZ, 251 +6095 DATA CMPZ, 253 +6096 DATA BPLR, LCA4: REM PSTOP REACHD +6097 DATA LDY#, 1 +6098 DATA LDA(Y, 251 +6099 DATA BEQR, LCA4: REM PAST LAST LN +6100 DATA LDY#, 3 +6105 DATA 'LCA3: REM SCAN FOR NUL +6110 DATA INY +6120 DATA LDA(Y, 251 +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 +6133 DATA TAX +6134 DATA LDA#, 0 +6135 DATA ADCZ, 252 +6140 DATA LDY#, 1 +6141 DATA STA(Y, 251 +6142 DATA STAZ, 2: 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 +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 +6184 DATA INY +6185 DATA STA(Y, 251 +6189 REM ADJUST VARTAB &C AND RET PSTOP +6190 DATA LDXZ, 253 +6191 DATA LDYZ, 254 +6192 DATA STXZ, 45: REM VARTAB +6193 DATA STYZ, 46 +6194 DATA STXZ, 47: REM ARYTAB +6195 DATA STYZ, 48 +6196 DATA STXZ, 49: REM STREND +6197 DATA STYZ, 50 +6198 DATA RTS +6200 DATA 'LCACHK +6210 REM FIND LAST LINE NUMBER +6220 DATA DECZ, 252 +6221 DATA LDY#, 255 +6230 DATA 'LCAC1 +6240 DATA DEY +6250 DATA LDA(Y, 251 +6260 DATA BNER, LCAC1 +6270 DATA INY +6271 DATA INY +6272 DATA INY +6280 DATA LDA(Y, 251 +6281 DATA TAX +6282 DATA INY +6283 DATA LDA(Y, 251 +6290 DATA INCZ, 252 +6291 DATA LDY#, 3 +6300 DATA CMP(Y, 251 +6301 DATA BMIR, LCACOK +6302 DATA BNER, LCACFAIL +6310 DATA DEY +6311 DATA TXA +6320 DATA CMP(Y, 251 +6321 DATA BMIR, LCACOK +6330 DATA 'LCACFAIL +6335 REM NULL OFF THE NEW LINES, ABORT +6340 DATA LDA#, 0 +6341 DATA TAY +6342 DATA STA(Y, 251 +6343 DATA INY +6344 DATA STA(Y, 251 +6350 DATA LDX#, S.ECLASH +6351 DATA LDY#, $C5: REM XXX HI +6352 DATA JSR, PUTSTR +6360 DATA LDX#, S.ABORT +6361 DATA LDY#, $C5: REM XXX HI +6362 DATA JSR, PUTSTR +6370 DATA RTS +6380 DATA 'LCACOK +6390 DATA JMP, LCA2 8000 REM 8001 REM - ENTRY POINTS - 8002 REM -8010 DATA .=, 50000: REM $C350 +8010 DATA .=, 51200: REM $C800 8011 DATA JMP, LINECNT -8020 DATA .=, 50010 +8020 DATA .=, 51210 8021 DATA JMP, LINECUT +8030 DATA .=, 51220 +8031 DATA JMP, LINECAT 9000 REM 9001 REM - STATIC DATA - 9002 REM @@ -676,6 +1118,10 @@ 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 " @@ -683,6 +1129,17 @@ 9130 DATA 'S.BYTES, .DSZ," BYTES " 9140 DATA 'S.JUNK, .DSZ," JUNK " 9150 DATA 'S.SPC, .DSZ," SPC " -9200 DATA .=, $C700 -9210 DATA 'BUF, .DZ,256 +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.ABORT +9501 DATA .DS, " - ABORT" +9502 DATA .DB, 13 +9503 DATA .DB, 0 +9510 DATA 'S.ECLASH +9511 DATA .DSZ, "LINE NUMBER CLASH" +9700 DATA .=, $C700 +9701 DATA 'BUF, .DZ,256 9999 DATA .END