This might be a workable solution:Mike wrote:Except the PRINT statement - which isn't supported by MINIGRAFIK at the moment -, [...]
The program sets up an array B%(), which translates from PETSCII to 8*screen_code, i.e. offsets into the character ROM. This only takes a few seconds. The sub-routine at line 70 then reads out the ROM charwise, and copies it into the screen bitmap. Control chars are printed as SPACEs.
In line 34 the variable AD can be set to 32768, 33792, 34816, and 35840 to print upper case, inverted upper case, lower case, and inverted lower case, respectively.
Greetings,
Michael
Code: Select all
10 DIMB%(255)
11 FORT=0TO255:B%(T)=256:NEXT
12 Z$="@ABCDEFG"
13 Z$=Z$+"HIJKLMNO"
14 Z$=Z$+"PQRSTUVW"
15 Z$=Z$+"XYZ[£]^{<-}"
16 Z$=Z$+" !"+CHR$(34)+"#$%&'"
17 Z$=Z$+"()*+,-./"
18 Z$=Z$+"01234567"
19 Z$=Z$+"89:;<=>?"
20 Z$=Z$+"{SHIFT-*,SHIFT-A,SHIFT-B,SHIFT-C,SHIFT-D,SHIFT-E,SHIFT-F,SHIFT-G}"
21 Z$=Z$+"{SHIFT-H,SHIFT-I,SHIFT-J,SHIFT-K,SHIFT-L,SHIFT-M,SHIFT-N,SHIFT-O}"
22 Z$=Z$+"{SHIFT-P,SHIFT-Q,SHIFT-R,SHIFT-S,SHIFT-T,SHIFT-U,SHIFT-V,SHIFT-W}"
23 Z$=Z$+"{SHIFT-X,SHIFT-Y,SHIFT-Z,SHIFT-+,C=--,SHIFT--,PI,C=-*}"
24 Z$=Z$+"{SHIFT-SPACE,C=-K,C=-I,C=-T,C=-@,C=-G,C=-+,C=-M}"
25 Z$=Z$+"{C=-£,SHIFT-£,C=-N,C=-Q,C=-D,C=-Z,C=-S,C=-P}"
26 Z$=Z$+"{C=-A,C=-E,C=-R,C=-W,C=-H,C=-J,C=-L,C=-Y}"
27 Z$=Z$+"{C=-U,C=-O,SHIFT-@,C=-F,C=-C,C=-X,C=-V,C=-B}"
28 FORT=0TO127:B%(ASC(MID$(Z$,T+1,1)))=8*T:NEXT:Z$=""
29 :
30 @ON:@CLR
31 X1=10:Y1=10:X2=149:Y2=181:GOSUB60
32 X1=20:Y1=20:X2=139:Y2=171:GOSUB60
33 :
34 AD=32768
35 T$="TEXT PRINTED":X=4:Y=8:GOSUB70
36 T$="WITHIN":X=7:Y=11:GOSUB70
37 T$="MINIGRAFIK":X=5:Y=14:GOSUB70
38 :
39 GETA$:IFA$=""THEN39
40 @RETURN
41 END
42 :
60 @1,X1,Y1TOX2,Y1
61 @1,X2,Y1TOX2,Y2
62 @1,X2,Y2TOX1,Y2
63 @1,X1,Y2TOX1,Y1
64 RETURN
65 :
70 IFT$=""THENRETURN
71 IFX<0ORY<0THENRETURN
72 IFX>19THENX=0:Y=Y+1
73 IFY>23THENRETURN
74 A1=4352+X*192+Y*8
75 A2=AD+B%(ASC(T$))
76 FORT=0TO7:POKEA1+T,PEEK(A2+T):NEXT
77 T$=MID$(T$,2):X=X+1:GOTO70
89 :
90 REM ** MG TEXT PRINT WRITTEN 2009-03-05 BY MICHAEL KIRCHER