commit - 805e1925487d0c0761dfc00e89316e634193b166
commit + 926095e2ff8534cd32fe7853aef696600236da91
blob - /dev/null
blob + 3e1ff33c3ce34293f29c263850f89b60eab6254f (mode 644)
Binary files /dev/null and CRUNCH.B,PRG differ
blob - /dev/null
blob + e810aec27408d82aefadd92167bfd0c74c769aac (mode 644)
--- /dev/null
+++ CRUNCH.B.lst
+1000 REM
+1001 REM CRUNCH - REMOVES REMS AND SPCS
+1002 REM IGNORES LINES 0-9
+1003 REM PESCO IGNORES DATA LINES
+1004 REM 2026
+1005 REM
+1090 REM
+1091 REM -ENTRY POINT-
+1092 REM
+1093 DATA .OUT, 52000: REM $C000 + 2848
+1094 DATA JMP, MAIN
+1100 REM
+1101 REM -DEFINITIONS-
+1102 REM
+1110 DATA P=, 251
+1120 DATA Q=, 253
+1130 DATA I=, 2
+1140 DATA J=, 255
+1200 REM
+1210 DATA TXTTAB=, 43
+1300 REM
+1310 DATA TOKREM=, $8F
+1320 DATA TOKDATA=, $83
+2000 REM
+2001 REM -SUBROUTINES-
+2002 REM
+2010 DATA 'COPYCHR
+2020 DATA LDYZ, J
+2021 DATA LDA(Y, Q
+2022 DATA INCZ, J
+2030 DATA LDYZ, I
+2031 DATA STA(Y, P
+2032 DATA INCZ, I
+2035 DATA CMP#, 0
+2040 DATA RTS
+2049 REM
+2050 DATA 'COPYNUL
+2052 DATA LDYZ, I
+2054 DATA LDA#, 0
+2056 DATA STA(Y, P
+2058 DATA INCZ, I
+2060 DATA RTS
+2099 REM
+2100 DATA 'COPYLINE
+2110 DATA JSR, COPYCHR
+2120 DATA BNER, COPYLINE
+2130 DATA RTS
+2199 REM
+2200 DATA 'COPYSTR
+2210 DATA JSR, COPYCHR
+2215 DATA BEQR, 'RET
+2220 DATA CMP#, $22: REM '"'
+2230 DATA BNER, COPYSTR
+2240 DATA ''RET
+2250 DATA CMP#, 0
+2260 DATA RTS
+2299 REM
+2300 DATA 'COPYLNUM
+2310 DATA LDY#, 2
+2311 DATA LDA(Y, Q
+2312 DATA STA(Y, P
+2313 DATA INY
+2314 DATA LDA(Y, Q
+2315 DATA STA(Y, P
+2320 DATA RTS
+2399 REM
+2400 DATA 'SKIPLINE
+2402 DATA LDYZ, J
+2404 DATA ''1
+2406 DATA LDA(Y, Q
+2408 DATA BEQR, '2
+2410 DATA INY
+2412 DATA JMP, '1
+2414 DATA ''2
+2415 DATA INY
+2416 DATA STYZ, J
+2418 DATA RTS
+2440 REM
+2450 DATA 'SKIPWS
+2452 DATA LDYZ, J
+2454 DATA ''1
+2456 DATA LDA(Y, Q
+2458 DATA BEQR, '2
+2460 DATA CMP#, $20: REM SPC
+2462 DATA BNER, '2
+2464 DATA INY
+2466 DATA JMP, '1
+2468 DATA ''2
+2470 DATA STYZ, J
+2472 DATA RTS
+2499 REM
+2500 DATA 'ADVANCEP
+2510 DATA LDY#, 0
+2511 DATA LDA(Y, P
+2512 DATA TAX
+2513 DATA INY
+2514 DATA LDA(Y, P
+2520 DATA STAZ, P↑
+2521 DATA STXZ, P
+2530 DATA RTS
+2599 REM
+2600 DATA 'ADVANCEQ
+2610 DATA CLC
+2611 DATA LDAZ, J
+2612 DATA ADCZ, Q
+2613 DATA STAZ, Q
+2614 DATA LDA#, 0
+2615 DATA ADCZ, Q↑
+2616 DATA STAZ, Q↑
+2620 DATA RTS
+2630 REM
+2700 DATA 'SETPNEXT
+2710 DATA LDY#, 0
+2720 DATA CLC
+2721 DATA LDAZ, I
+2722 DATA ADCZ, P
+2723 DATA STA(Y, P
+2730 DATA INY
+2740 DATA LDA#, 0
+2741 DATA ADCZ, P↑
+2742 DATA STA(Y, P
+2750 DATA RTS
+2799 REM
+2800 DATA 'REMCOL
+2810 DATA LDYZ, I
+2820 DATA ''1
+2825 DATA DEY
+2830 DATA CPY#, 5
+2831 DATA BCCR, '2
+2840 DATA LDA(Y, P
+2850 DATA CMP#, $3A: REM ':'
+2851 DATA BEQR, '1
+2860 DATA ''2
+2870 DATA INY
+2880 DATA STYZ, I
+2890 DATA RTS
+5000 REM
+5001 REM -MAINROUTINE-
+5002 REM
+5010 DATA 'MAIN
+5020 DATA LDXZ, TXTTAB
+5021 DATA LDYZ, TXTTAB↑
+5022 DATA STXZ, P
+5023 DATA STYZ, P↑
+5024 DATA STXZ, Q
+5025 DATA STYZ, Q↑
+5040 REM
+5050 DATA ''LINELOOP
+5055 DATA LDY#, 1
+5056 DATA LDA(Y, Q
+5057 DATA BEQR, 'DONE
+5059 REM
+5060 DATA LDA#, 4: REM START OF LINE
+5061 DATA STAZ, I
+5062 DATA STAZ, J
+5069 REM
+5070 DATA LDY#, 3: REM HI(LNUM)
+5071 DATA LDA(Y, Q
+5072 DATA BNER, '1
+5073 DATA DEY: REM LO(LNUM)
+5074 DATA LDA(Y, Q
+5075 DATA CMP#, 10
+5076 DATA BCCR, 'COPY: REM COPY <10
+5078 DATA ''1
+5079 REM
+5090 DATA JSR, SKIPWS: REM A ← CHR
+5091 DATA BEQR, 'SKIP: REM SKIP EMPTY
+5094 DATA CMP#, TOKREM
+5095 DATA BEQR, 'SKIP: REM SKIP REM
+5098 DATA CMP#, TOKDATA
+5099 DATA BEQR, 'COPY: REM COPY DATA
+5120 REM
+5130 DATA ''CHARLOOP
+5140 DATA JSR, COPYCHR:REM A ← CHR
+5150 DATA BEQR, 'ENDLINE
+5160 DATA CMP#, $22: REM '"'
+5161 DATA BNER, 'CL1
+5162 DATA JSR, COPYSTR
+5163 DATA BEQR, 'ENDLINE
+5164 DATA JMP, 'CHARLOOP
+5165 DATA ''CL1
+5170 DATA CMP#, $20: REM ' '
+5171 DATA BNER, 'CL2
+5172 DATA DECZ, I: REM RECANT
+5173 DATA JMP, 'CHARLOOP
+5175 DATA ''CL2
+5180 DATA CMP#, TOKREM
+5181 DATA BNER, 'CHARLOOP
+5190 DATA DECZ, I: REM RECANT REM
+5191 DATA JSR, SKIPLINE
+5192 DATA JSR, REMCOL
+5193 DATA JSR, COPYNUL
+5194 DATA JMP, 'ENDLINE
+5200 REM
+5201 DATA ''SKIP
+5202 DATA JSR, SKIPLINE
+5203 DATA JMP, 'NEXT
+5205 DATA ''COPY
+5206 DATA JSR, COPYLINE
+5209 REM
+5210 DATA ''ENDLINE
+5220 DATA JSR, SETPNEXT
+5230 DATA JSR, COPYLNUM
+5235 DATA JSR, ADVANCEP
+5240 REM
+5250 DATA ''NEXT
+5270 DATA JSR, ADVANCEQ
+5290 DATA JMP, 'LINELOOP
+5299 REM
+5300 DATA ''DONE
+5310 DATA LDA#, 0
+5311 DATA TAY
+5312 DATA STA(Y, P
+5313 DATA INY
+5314 DATA STA(Y, P
+5320 DATA RTS
+9998 REM
+9999 DATA .END
blob - 0ca7a0a52006d0f1a18f0e88edb968adfee6378f
blob + b6bebe1a820554b4aea36f18cde8ac0ecaf8d23b
--- Makefile
+++ Makefile
PRGS = BASASM HDFILE HEXDUMP SAVEMEM PRINTNAT.B LINECNT.B MANUAL OPCODES.B \
- LINEUTIL.B TEST.B TV MKALLTOK DISKCOPY MKOPCODES
+ LINEUTIL.B TEST.B TV MKALLTOK DISKCOPY MKOPCODES CRUNCH.B
.PHONY: all
all: und64 listprg ${PRGS:=.lst}
blob - 77eea7b57a3b02b2f9ff85aa29f9799feb659e63
blob + 33827408757f5e116c97c580cc86d451bfe80cd6
--- README
+++ README
DISKCOPY duplicate a disk block by block (incredibly slow)
MKOPCODES generate OPCODES file
OPCODES.B source file to be combined with MKOPCODES
+ CRUNCH.B remove REMs and spaces from current BASIC program
Notes on encoding: Several (printable) characters in the Commodore
character set differ from ASCII - arrows, for instance, in place of