1 'COLOR TO MC10 CONVERTER 2 REM ONE-BYTE DATA 3 DATA 128,0,131,0,0,132,133,134,135,136 4 DATA 137,138,139,140,142,143,144,145,146,147 5 DATA 148,149,150,151,152,0,0,153,155,156 6 DATA 157,0,158,0,159,160,161,162,0,163 7 DATA 164,165,166,167,168,169,170,171,172,173 8 DATA 174,175,176,0,0,0,0,0,141 9 REM TWO-BYTE DATA 10 DATA 177,178,179,180,181,185,188,189,190,191 11 DATA 192,193,0,0,194,195,196,197,199,200 12 DATA 0,186,187,184,0,183,0,182,0,198 13 CLS: PRINT "CONVERTING" 14 DIM T1(127),T2(127) 15 REM INITIALIZE TOKEN ARRAYS 16 FOR I=0TO 58:READ T1(I):NEXT 17 FOR I=0TO 29:READ T2(I):NEXT 18 PL=PEEK(&H19)*256+PEEK(&H1A):NL=PL 19 GOSUB 22: PRINT ".";: IF NL<>0 THEN 19 20 PRINT "SUCCESSFUL TOKEN TRANSLATION": STOP 21 ' SUBROUTINE: PROCESS 1 LINE 22 IF PL<>NL THEN A$="CATASTROPHIC ERROR": GOTO 47 23 NL=PEEK(PL)*256+PEEK(PL+1): PL=PL+2 24 LN=PEEK(PL)*256+PEEK(PL+1): PL=PL+2 25 IF NL=0 THEN RETURN 26 IF LN<100 THEN PLNL: RETURN 27 REM TRANSLATE TOKENS 28 ST=0 29 TN=PEEK(PL): PL=PL+1: IF TN=0 THEN RETURN 30 IF TN=34 THEN ST=(ST+1)AND 1 31 IF ST=1 THEN 29 32 IF TN<128 THEN 29 33 IF TN=255 THEN 38 34 IF TN=129 THEN 42 35 TN=T1(TN-128): IF TN=0 THEN A$="NO CORRESPONDING MC10 TOKEN":GOTO 47 36 POKE PL-1,TN: GOTO 29 37 REM TWO BYTE TOKEN HERE 38 POKE PL-1,32: TN=PEEK(PL): PL=PL+1 39 TN=T2(TN-128): IF TN=0 THEN A$="NO CORRESPONDING MC10 TOKEN":GOTO 47 40 GOTO 36 41 REM GOTO OR GOSUB HERE 42 POKE PL-1,32: TN=PEEK(PL): PL=PL+1 43 IF TN165 THEN POKE PL-1,129:GOTO 29 44 IF TN166 THEN POKE PL-1,130:GOTO 29 45 A$="INVALID TOKEN AFTER GO":GOTO 47 46 REM ERROR HERE 47 PRINT: PRINT A$ 48 PRINT "LINE NUMBER ";LN 49 STOP 1 REM MC10 TO COLOR CONVERTER 2 REM ONE BYTE DATA 3 DATA 128,165,166,130,133,134,135,136,137,138 4 DATA 139,140,141,186,142,143 5 DATA 144,145,146,147,148,149,150,151,152,155 6 DATA 0,156,157,158,160,162,163,164,165,167 7 DATA 168,169,170,171,172,173,174,175,176,177 8 DATA 178,179,180 9 REM TWO-BYTE DATA 10 DATA -128,-129,-130,-131,-132,-155,-153,-151,-133,-149 11 DATA -150,-134,-135,-136,-137,-138,-139,-142,-143,-144 12 DATA -145,-157,-146,-147 13 CLS: PRINT "CONVERTING" 14 DIM T1(127) 15 RE INITIALIZE TOKEN ARRAY 16 FOR I=0TO 72:READ T1(I):NEXT 17 PL=PEEK(147)*256+PEEK(148):NL=PL 18 GOSUB 21: PRINT ".";: IF NL<>0 THEN 18 19 PRINT "SUCCESSFUL TOKEN TRANSLATION": STOP 20 REM PROCESS ONE LINE SUBROUTINE 21 IF PL<>NL THEN A$="CATASTROPHIC ERROR": GOTO 44 22 NL=PEEK(PL)*256+PEEK(PL+1):PL=PL+2 23 LN=PEEK(PL)*256+PEEK(PL+1):PL=PL+2 24 IF NL=0 THEN RETURN 25 IF LN<100 THEN PL=NL: RETURN 26 REM TRANSLATE TOKENS 27 ST=0 28 TN=PEEK(PL): PL=PL+1: IF TN=0 THEN RETURN 29 IF TN=34 THEN ST=(ST+1)AND 1 30 IF ST=1 THEN 28 31 IF TN<128 THEN 28 32 IF T1(TN-128)<0 THEN 36 33 IF TN=129 OR TN=130 THEN 39 34 POKE PL-1,T1(TN-128):GOTO 28 35 REM TWO-BYTE TOKEN HERE 36 IF PEEK(PL-2)<>32 THEN A$="NO SPACE BEFORE TOKEN": GOTO 44 37 POKE PL-2,255: POKE PL-1,-T1(TN-128): GOTO 28 38 REM GOTO OR GOSUB HERE 39 IF PEEK(PL)<>32 THEN A$="NO SPACE AFTER GOSUB OR GOTO": GOTO 44 40 POKE PL-1,129 41 POKE PL,T1(TN-128) 42 PL=PL+1: GOTO 28 43 REM ERROR HERE 44 PRINT: PRINT A$ 45 PRINT "LINE NUMBER ";LN 46 STOP