10 ! KOLUM128.BAC 20 ! Det h{r {r en fungtion som skriver text p} sk{rmen med 128 tecken i bred. 30 ! Och ett demo program. 40 ! Funktionen anv{nds s} h{r Z=FNTecken(X,Y,Tecken$,F{rg) 50 ! Programet {r skrivet p} en ABC806 av Magnus <8042> 1991 60 ! Funktionen f}r andv{ndas i egna program, ej i kommissionelt syfte. 70 ! Demo programet fungerar nog bara p} ABC806 80 ! Men sj{lva funktionen ska nog fungera p} ABC800+HRkort. 90 ! 100 ! "GRED" f|r att fungera med monokrom sk{rm <7759> 110 ! 120 INTEGER : EXTEND 130 ! -------------------- Definitionen ------------------------ 140 ! 150 DEF FNTecken(X0,Y0,N$,F) LOCAL X,Y 160 X=X0-4 : Y=Y0 170 FOR J=1 TO LEN(N$) 180 Z=-1 190 Z$=MID$(N$,J,1) 200 IF Z$>="0" AND Z$<="9" THEN Z=VAL(Z$) : GOTO 220 210 IF Z$>="!" AND Z$<="]" THEN Z=ASCII(Z$) 220 X=X+4 : Y=Y0 230 IF Z$="-" THEN Z=10 : X=X-1 240 IF Z$="." THEN Z=11 : X=X-2 250 IF Z$="1" THEN X=X-1 260 IF Z=0 THEN FGPOINT X,Y,F : FGLINE X+2,Y : FGLINE X+2,Y+4 : FGLINE X,Y+4 : FGLINE X,Y 270 IF Z=1 THEN FGPOINT X+2,Y,F : FGLINE X+2,Y+4 280 IF Z=2 THEN FGPOINT X+2,Y,F : FGLINE X,Y : FGLINE X,Y+2 : FGLINE X+2,Y+2 : FGLINE X+2,Y+4 : FGLINE X,Y+4 290 IF Z=3 THEN FGPOINT X,Y,F : FGLINE X+2,Y : FGLINE X+2,Y+4 : FGLINE X,Y+4 : FGPOINT X+1,Y+2 300 IF Z=4 THEN FGPOINT X+2,Y,F : FGLINE X+2,Y+4 : FGPOINT X,Y+4 : FGLINE X,Y+2 : FGLINE X+2,Y+2 310 IF Z=5 THEN FGPOINT X,Y,F : FGLINE X+2,Y : FGLINE X+2,Y+2 : FGLINE X,Y+2 : FGLINE X,Y+4 : FGLINE X+2,Y+4 320 IF Z=6 THEN FGPOINT X+2,Y+4,F : FGLINE X,Y+4 : FGLINE X,Y : FGLINE X+2,Y : FGLINE X+2,Y+2 : FGLINE X,Y+2 330 IF Z=7 THEN FGPOINT X+2,Y,F : FGLINE X+2,Y+4 : FGLINE X,Y+4 340 IF Z=8 THEN FGPOINT X,Y,F : FGLINE X+2,Y : FGLINE X+2,Y+4 : FGLINE X,Y+4 : FGLINE X,Y : FGPOINT X+1,Y+2 350 IF Z=9 THEN FGPOINT X,Y,F : FGLINE X+2,Y : FGLINE X+2,Y+4 : FGLINE X,Y+4 : FGLINE X,Y+2 : FGLINE X+2,Y+2 360 IF Z=10 THEN FGPOINT X+1,Y+2,F : FGLINE X+2,Y+2 370 IF Z=11 THEN FGPOINT X+1,Y,F 380 ! ---------- bokst{ver ----------------- 390 IF Z=65 THEN FGPOINT X,Y,F : FGLINE X,Y+3 : FGPOINT X+1,Y+4 : FGPOINT X+1,Y+2 : FGPOINT X+2,Y+3 : FGLINE X+2,Y 400 IF Z=66 THEN FGPOINT X,Y,F : FGLINE X,Y+4 : FGPOINT X+1,Y : FGPOINT X+1,Y+2 : FGPOINT X+1,Y+4 : FGPOINT X+2,Y+1 : FGPOINT X+2,Y+3 410 IF Z=67 THEN FGPOINT X,Y+1,F : FGLINE X,Y+3 : FGPOINT X+1,Y+4 : FGPOINT X+1,Y : FGPOINT X+2,Y+1 : FGPOINT X+2,Y+3 420 IF Z=68 THEN FGPOINT X,Y,F : FGLINE X,Y+4 : FGPOINT X+1,Y : FGPOINT X+1,Y+4 : FGPOINT X+2,Y+3 : FGLINE X+2,Y+1 430 IF Z=69 THEN FGPOINT X,Y,F : FGLINE X,Y+4 : FGLINE X+2,Y+4 : FGPOINT X+1,Y+2 : FGPOINT X+1,Y : FGPOINT X+2,Y 440 IF Z=70 THEN FGPOINT X,Y,F : FGLINE X,Y+4 : FGLINE X+2,Y+4 : FGPOINT X+1,Y+2 450 IF Z=71 THEN FGPOINT X,Y+1,F : FGLINE X,Y+3 : FGPOINT X+1,Y+4 : FGPOINT X+1,Y : FGPOINT X+2,Y : FGPOINT X+2,Y+1 : FGPOINT X+2,Y+3 460 IF Z=72 THEN FGPOINT X,Y,F : FGLINE X,Y+4 : FGPOINT X+1,Y+2 : FGPOINT X+2,Y : FGLINE X+2,Y+4 470 IF Z=73 THEN FGPOINT X+1,Y,F : FGLINE X+1,Y+4 480 IF Z=74 THEN FGPOINT X,Y+1,F : FGPOINT X+1,Y : FGPOINT X+2,Y+1 : FGLINE X+2,Y+4 490 IF Z=75 THEN FGPOINT X,Y,F : FGLINE X,Y+4 : FGPOINT X+1,Y+3 : FGPOINT X+1,Y+2 : FGPOINT X+2,Y+4 : FGPOINT X+2,Y : FGPOINT X+2,Y+1 500 IF Z=76 THEN FGPOINT X,Y,F : FGLINE X,Y+4 : FGPOINT X+1,Y : FGPOINT X+2,Y 510 IF Z=77 THEN FGPOINT X,Y,F : FGLINE X,Y+4 : FGPOINT X+1,Y+3 : FGPOINT X+2,Y : FGLINE X+2,Y+4 520 IF Z=78 THEN FGPOINT X,Y,F : FGLINE X,Y+4 : FGPOINT X+1,Y+4 : FGPOINT X+2,Y : FGLINE X+2,Y+3 530 IF Z=79 THEN FGPOINT X,Y+1,F : FGLINE X,Y+3 : FGPOINT X+1,Y : FGPOINT X+1,Y+4 : FGPOINT X+2,Y+1 : FGLINE X+2,Y+3 540 IF Z=80 THEN FGPOINT X,Y,F : FGLINE X,Y+4 : FGPOINT X+1,Y+4 : FGPOINT X+1,Y+2 : FGPOINT X+2,Y+3 550 IF Z=81 THEN FGPOINT X,Y+1,F : FGLINE X,Y+3 : FGPOINT X+1,Y+4 : FGPOINT X+1,Y : FGPOINT X+2,Y : FGLINE X+2,Y+3 560 IF Z=82 THEN FGPOINT X,Y,F : FGLINE X,Y+4 : FGPOINT X+1,Y+4 : FGPOINT X+1,Y+2 : FGPOINT X+2,Y+3 : FGPOINT X+2,Y+1 : FGPOINT X+2,Y 570 IF Z=83 THEN FGPOINT X,Y,F : FGPOINT X,Y+3 : FGPOINT X+1,Y : FGPOINT X+1,Y+2 : FGPOINT X+1,Y+4 : FGPOINT X+2,Y+4 : FGPOINT X+2,Y+1 580 IF Z=84 THEN FGPOINT X,Y+4,F : FGLINE X+2,Y+4 : FGPOINT X+1,Y : FGLINE X+1,Y+3 590 IF Z=85 THEN FGPOINT X,Y+4,F : FGLINE X,Y : FGLINE X+2,Y : FGLINE X+2,Y+4 600 IF Z=86 THEN FGPOINT X,Y+4,F : FGLINE X,Y+1 : FGPOINT X+1,Y : FGPOINT X+2,Y+1 : FGLINE X+2,Y+4 610 IF Z=87 THEN FGPOINT X,Y,F : FGLINE X,Y+4 : FGPOINT X+1,Y+1 : FGPOINT X+2,Y : FGLINE X+2,Y+4 620 IF Z=88 THEN FGPOINT X,Y,F : FGPOINT X,Y+1 : FGPOINT X,Y+3 : FGPOINT X,Y+4 : FGPOINT X+1,Y+2 : FGPOINT X+2,Y : FGPOINT X+2,Y+1 630 IF Z=88 THEN FGPOINT X+2,Y+3 : FGPOINT X+2,Y+4 640 IF Z=89 THEN FGPOINT X,Y+4,F : FGPOINT X,Y+3 : FGPOINT X+1,Y : FGLINE X+1,Y+2 : FGPOINT X+2,Y+3 : FGPOINT X+2,Y+4 650 IF Z=90 THEN FGPOINT X,Y+4,F : FGLINE X+2,Y+4 : FGPOINT X+2,Y+3 : FGLINE X,Y+1 : FGPOINT X,Y : FGLINE X+2,Y 660 ! ---------------- spesial tecken ------------------------- 670 IF Z=33 THEN FGPOINT X+1,Y,F : FGPOINT X+1,Y+2 : FGLINE X+1,Y+4 680 IF Z=34 THEN FGPOINT X,Y+4,F : FGPOINT X,Y+3 : FGPOINT X+2,Y+3 : FGPOINT X+2,Y+4 690 IF Z=42 THEN FGPOINT X,Y+1,F : FGPOINT X,Y+3 : FGPOINT X+1,Y+2 : FGPOINT X+2,Y+1 : FGPOINT X+2,Y+3 700 IF Z=43 THEN FGPOINT X+1,Y+1,F : FGLINE X+1,Y+3 : FGPOINT X,Y+2 : FGPOINT X+2,Y+2 710 IF Z=44 THEN FGPOINT X+1,Y,F : FGPOINT X+2,Y+1 720 IF Z=47 THEN FGPOINT X,Y,F : FGLINE X+2,Y+4 730 NEXT J 740 RETURN 0 750 FNEND 760 FGCTL BLK+GRED+BLU+GRN 770 ; CHR$(12) 780 FGPOINT 0,0,0 : FGFILL 511,239 790 X=0 : Y=226 : F=1 800 Z=FNTecken(0,233,"ABC806",1) 810 IF SYS(5)=0 THEN FGPOINT X,Y,F : FGFILL X+4,Y+5 : FGPOINT X,Y,0 : FGFILL X+4,Y+5 : GOTO 810 820 A=INP(34) 830 GET A$ : Z=FNTecken(X,Y,A$,F) 840 X=X+4 : IF X>507 THEN X=0 : Y=Y-7 850 IF A=13 THEN X=0 : Y=Y-7 860 IF A=8 THEN X=X-4 : GOTO 910 870 IF A=192 THEN X=X-4 : F=1 880 IF A=193 THEN X=X-4 : F=2 890 IF A=194 THEN X=X-4 : F=3 900 GOTO 810 910 IF X=0 THEN X=507 : Y=Y+7 ELSE X=X-4 920 IF Y>233 THEN Y=233 930 FGPOINT X,Y,0 : FGFILL X+4,Y+6 940 GOTO 810