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
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
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)
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
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
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
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
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
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
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
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
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
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
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
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 "
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