25/08/27 03:20:13.47 83OxorAy0.net
1 'save"SPRITEX4.BAS",A
10 IF PEEK(&H2D)=0 THEN PRINT "This program is for MSX2 and later.":END
20 SCREEN 1,3:WIDTH 29:KEY OFF:DEFINT A-Z
30 IF PEEK(&H2D)=1 THEN S$=CHR$(40)+CHR$(149)+CHR$(146)+CHR$(41):GOTO 110
40 LINE INPUT "String(Length:1-8)? ";A$
50 IF A$="" THEN FOR I=1 TO 8:S$=S$+CHR$(I):NEXT:GOTO 110 ELSE L=LEN(A$)
60 FOR I=1 TO L
70 B$=MID$(A$,I,1):B=ASC(B$)
80 IF B=1 THEN I=I+1:B$=MID$(A$,I,1):B=ASC(B$)-64
90 S$=S$+CHR$(B)
100 NEXT
110 S$=LEFT$(S$,8):L=LEN(S$)
120 DEF FNW(A,B)=-((A AND 8*16^B)>0)*192-((A AND 4*16^B)>0)*48-((A AND 2*16^B)>0)*12-((A AND 1*16^B)>0)*3
130 FOR I=0 TO L-1:A=ASC(MID$(S$,I+1,1)):L$="":R$=""
140 FOR J=A*8 TO A*8+7
150 B=VPEEK(J):C$=CHR$(FNW(B,1)):D$=CHR$(FNW(B,0)):L$=L$+C$+C$:R$=R$+D$+D$
160 NEXT J
170 SPRITE$(I)=L$+R$:NEXT I
180 SCREEN 4:X=INT((256-L*32)/2):Y=INT((192-32)/2)
190 FOR I=0 TO L-1
200 PUT SPRITE I,(X+2,Y-1):X=X+32
210 NEXT
220 OPEN "GRP:" AS #1:PRESET(INT((256-L*8)/2)-3,40)
230 FOR I=1 TO L
240 A=ASC(MID$(S$,I,1))
250 IF A<32 THEN PRINT #1,CHR$(1)+CHR$(A+64); ELSE PRINT #1,CHR$(A);
260 NEXT
270 DEFUSR=&H156:A=USR(0):BEEP:A$=INPUT$(1):A=USR(0)
280 SCREEN 0:WIDTH 80:END