100 'ACU Proofreader v1.5
110 'By Aimo Niemi
120 'CPC 464, 664, 6128
130 '
140 MEMORY HIMEM-129
150 addr=HIMEM+1:rst=48
160 ad=INT(addr/256):dr=addr-256*ad
170 FOR bit=0 TO 15
180 READ a$,check:sum=bit
190 FOR k=1 TO 15 STEP 2
200 b=VAL("&"+MID$(a$,k,2))
210 POKE addr,b
220 addr=addr+1
230 sum=(sum+k*b)MOD &FF
240 NEXT
250 PRINT "Line";460+10*bit;
260 IF sum<>check THEN PRINT"Checksum error.":STOP ELSE PRINT"Ok."
270 NEXT
280 '
290 pr=&BD2B :'printer address
300 sc=&BB5A :'screen address
310 REM sc=pr ' Add this line when using LIST#8.Observe, however, that the proofcodes may be lost if the printer buffer happens to be full.
320 '
330 FOR i=0 TO 2
340 POKE rst+i,PEEK(sc+i)
350 NEXT
360 POKE sc,&C3
370 POKE sc+1,dr
380 POKE sc+2,ad
390 IF PEEK(6)=&80 THEN POKE HIMEM+10,&A4
400 '
410 POKE HIMEM+7,&20
420 PRINT "Proofcodes to ";
430 IF sc=pr THEN PRINT "Printer";ELSE PRINT "screen ";
440 PRINT "are on.":END
450 '
460 DATA e5f5c5d5fe0d203a,15
470 DATA 218aac5faf47577e,210
480 DATA fe30382efe3a302a,80
490 DATA 7ef600202ebb2028,243
500 DATA 3e20f73e5bf77a07,173
510 DATA 070707e60ff630fe,28
520 DATA 3a3802c607f77a1c,39
530 DATA cb4320ef3e5df73e,61
540 DATA 12f7d1c1f1e1f7c9,8
550 DATA 2b3e27bb2004fe20,246
560 DATA 282804fe27f52007,180
570 DATA 3e20bb200daf5ff6,135
580 DATA 20f5afbb2003f1af,117
590 DATA f5f15f0e007a8357,39
600 DATA 0c79b820f8f12002,232
610 DATA 1e0023189b000000,253
620 '
630 ' poke himem+7,&20 = on
640 ' poke himem+7,&18 = off