10 DIM LT$(15):LT$(0)="0":LT$(1)="1":LT$(2)="2":LT$(3)="3":LT$(4)="4":LT$(5)="5":LT$(6)="6":LT$(7)="7":LT$(8)="8":LT$(9)="9":LT$(10)="A":LT$(11)="B":LT$(12)="C":LT$(13)="D":LT$(14)="E":LT$(15)="F"
20 CLS:PRINT"BIT SHIFTING ROUTINE"
25 DEF SEG=0:POKE &H417,(PEEK(&H417) OR &H40)
30 PRINT""
40 PRINT"PLEASE TYPE THE STRING TO BE SHIFTED.":PRINT"":INPUT SI$
50 PRINT""
60 PRINT"USE THE UP ARROW TO SEE THE STRING"
70 PRINT"USE THE LEFT ARROW TO SHIFT THE STRING LEFT"
80 PRINT"USE THE RIGHT ARROW TO SHIFT THE STRING RIGHT"
90 PRINT"USE THE F1 KEY TO RESTART PROGRAM"
100 PRINT""
110 SI%=LEN(SI$):IF SI%<2 GOTO 40
120 FOR I%=1 TO SI%:A$=MID$(SI$,I%,1)
130 FOR J%=0 TO 15:IF A$=LT$(J%) GOTO 160
140 NEXT J%
150 PRINT"ILLEGAL CHARACTER IN STRING!!!!":GOTO 40
160 NEXT I%
170 KEY(11)ON:KEY(12)ON:KEY(13)ON:KEY(1)ON
180 ON KEY (11) GOSUB 260
190 ON KEY (12) GOSUB 230
200 ON KEY (13) GOSUB 270
210 ON KEY(1) GOSUB 20
220 GOTO 180
230 C8%=0:FOR I%=1 TO SI%:A$=MID$(SI$,I%,1):A%=VAL("&H"+A$):B%=INT(A%/2):C%=2*B%:D%=B%+C8%:C8%=8:IF A%=C% THEN C8%=0
240 A$=LT$(D%):MID$(SI$,I%,1)=A$
250 NEXT I%
260 PRINT SI$:RETURN
270 C8%=0:FOR I%=SI% TO 1 STEP -1:A$=MID$(SI$,I%,1):A%=VAL("&H"+A$):B%=2*A%:C%=INT(B%/2):D%=B%+C8%:C8%=0:IF D%>15 THEN D%=D%-16:C8%=1