Commit Diff


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
@@ -0,0 +1,218 @@
+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
@@ -1,5 +1,5 @@
 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
@@ -68,6 +68,7 @@
            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