This second alternative patches out the bug by intercepting one of the BASIC RAM hooks. The machine code routine is position independent, and compatible with all versions of Extended Color BASIC.
Code: Select all
10 'COCO PCLEAR FIX V3.0
20 'FOR EXTENDED COLOR BASIC 1.0
30 'BY STEPHEN J WOOLHAM
40 '*************************
50 'BASIC EXAMPLE PROGRAM #1
60 '*************************
70 CLEAR200,PEEK(116)*256+PEEK(117)-46
80 E=PEEK(116)*256+PEEK(117)-1:S=E-45
90 FOR I=S TO E:READ MC$:X=VAL("&H"+MC$):POKE I,X:CS=CS+X:NEXT
100 IF CS=5129 THEN EXEC S ELSE PRINT"ERROR IN DATA LINES.":END
110 '
120 'TEST
130 '
140 PCLEAR8
150 PMODE3,2
160 SCREEN1,1
170 PCLS6
180 GOTO180
200 DATA B6,96,AE,26,12,30,8D,0,F,BC,1,9B,27,9,FC,1,9B,ED,88,16,BF,1,9B
210 DATA 39,8C,96,D1,26,10,DC,68,81,FF,27,A,10,9E,A6,BD,AE,B4,1F,20,D7,A7,7E
Code: Select all
10 'COCO PCLEAR FIX V3.0
20 'FOR EXTENDED COLOR BASIC 1.0
30 'BY STEPHEN J WOOLHAM
40 '*************************
50 'BASIC EXAMPLE PROGRAM #2
60 '*************************
70 CLEAR200,PEEK(116)*256+PEEK(117)-46
80 E=PEEK(116)*256+PEEK(117)-1:S=E-45
90 MC$="B696AE2612308D000FBC019B2709FC019BED8816BF019B398C96D12610DC6881FF270A109EA6BDAEB41F20D7A77E"
100 X=1:FOR I=S TO E:POKE I,VAL("&H"+MID$(MC$,X,2)):X=X+2:NEXT:EXEC S
110 '
120 'TEST
130 '
140 PCLEAR8
150 PMODE3,2
160 SCREEN1,1
170 PCLS6
180 GOTO180