0 REM 02-02-85 <-- last backup 10 PRINT CHR$(26) 20 PRINT"Eric Gans" 30 PRINT"French Department UCLA" 40 PRINT"Los Angeles, CA 90024" 50 PRINT"02/02/85" 60 REM Copyright by Eric Gans - last revised 6/23/84 70 PRINT CHR$(27)"B""5" 80 PRINT TAB(35)"BITMAP 90 PRINT:PRINT"This program permits the creation of graphics characters stored in a file" 100 PRINT"called CHAR.DAT. The alphabet is 1-26, #s 1-9 are 27-35, 36=. 37=, 38='" 110 PRINT"39=: 40=; 41=! 42=? 43=- When designing characters, to redo enter 0 1," 120 PRINT"finished= 0 0. Characters will be kept in the file CHAR.DAT." 130 PRINT"Characters #60-65 are chess pieces, 66-67 are checkers." 140 PRINT 150 PRINT CHR$(27)"B2"; 160 PRINT"Any of these characters can be overwritten, or the entire set can be" 170 PRINT"done over; this program does not depend on a previously existing set." 180 PRINT CHR$(27)"C2" 190 PRINT 200 INPUT "To enter characters enter 'c' ; 'p' to print out, 'q' to quit. ",PC$ 210 IF PC$="p" THEN 1080 ELSE IF PC$="q" THEN END ELSE IF PC$<>"c" THEN INPUT;PC$ 220 INPUT "# of figure";K 230 IF K=0 THEN 200 240 INPUT "# of characters ";NC 250 IF NC>10 THEN DIM B1(NC),B2(NC),B1$(NC),B2$(NC) 260 INPUT "# of lines";NL 270 IF NC/NL<>INT(NC/NL) THEN PRINT CHR$(7):GOTO 240 280 INPUT "To design, enter 'd'; to map directly, enter 'm' ",MD$ 290 IF MD$="m" GOTO 310 ELSE IF MD$<>"d" THEN INPUT;MD$:GOTO 290 300 GOTO 710 310 FOR J=1 TO NC 320 PRINT"Char"J; 330 INPUT "Bits";B$ 340 FOR I=1 TO LEN(B$) 350 IF ASC(MID$(B$,I,1))>55 THEN PRINT CHR$(7):GOTO 330 360 IF ASC(MID$(B$,I,1))=32 GOTO 390 ELSE IF ASC(MID$(B$,I,1))<48 THEN PRINT CHR$(7):GOTO 330 370 B(I)=VAL(MID$(B$,I,1)) 380 A(B(I))=1 390 NEXT 400 IF A(7)=1 THEN B1(J)=129 ELSE B1(J)=128 410 B2(J)=128 420 FOR I=0 TO 6 430 IF A(I)=0 GOTO 450 440 B2(J)=B2(J)+2^I 450 NEXT 460 ERASE A,B 470 NEXT 480 PRINT 'return fm design 490 FOR I=1 TO NC 500 PRINT CHR$(B1(I))CHR$(B2(I)); 510 IF I MOD(NC/NL)=0 THEN PRINT CHR$(10);:FOR J=1 TO NC/NL:PRINT CHR$(8);:NEXT 520 NEXT 530 INPUT "If ok, enter -1, if not, 0 ",OK 540 IF NOT OK THEN IF NC>10 THEN ERASE B1,B2,B1$,B2$:GOTO 220 ELSE GOTO 220 550 OPEN "R",1,"CHAR.DAT" 560 FIELD#1,2 AS NC$,2 AS NL$,2 AS B1$(1),2 AS B2$(1),2 AS B1$(2),2 AS B2$(2),2 AS B1$(3),2 AS B2$(3),2 AS B1$(4),2 AS B2$(4),2 AS B1$(5),2 AS B2$(5),2 AS B1$(6),2 AS B2$(6),2 AS B1$(7),2 AS B2$(7),2 AS B1$(8),2 AS B2$(8) 570 IF NC<9 GOTO 610 580 FOR I=9 TO NC 590 FIELD#1,36+4*(I-9) AS X$,2 AS B1$(I),2 AS B2$(I) 600 NEXT 610 LSET NC$=MKI$(NC) 620 LSET NL$=MKI$(NL) 630 FOR I=1 TO NC 640 PRINT I":"B1(I) B2(I) 650 LSET B1$(I)=MKI$(B1(I)):LSET B2$(I)=MKI$(B2(I)) 660 NEXT 670 PUT#1,K 680 CLOSE 690 IF NC>10 THEN ERASE B1,B2,B1$,B2$ 700 GOTO 220 710 REM design/display 720 DIM D(NC,8) 730 PRINT CHR$(26) 740 PRINT" "; 750 FOR I=1 TO 2*NC/NL:PRINT USING"##";I;:NEXT 760 PRINT 770 FOR I=1 TO 4*NL 780 PRINT USING"##";I; 790 FOR J=1 TO 2*NC/NL 800 PRINT".:"; 810 NEXT 820 PRINT 830 NEXT 840 PRINT CHR$(27)"B""6"; 850 PRINT CHR$(24); 860 INPUT;"Row & column to fill";R:PRINT" ";:INPUT;C 870 IF R=0 AND C=0 THEN 980 880 IF R=0 AND C=1 THEN ERASE D:GOTO 730 890 IF R*C=0 OR R>NL*4 OR C>NC*2/NL THEN PRINT CHR$(7);:GOTO 850 900 DC=INT((C+1)/2)+NC*((R-1)\4)/NL 910 DB=2*((R-1)MOD 4)+C MOD 2 920 D(DC,DB)=1 930 PRINT CHR$(27)"B""0" 940 PRINT CHR$(27)"="CHR$(33+R)CHR$(32+2*C)" " 950 PRINT CHR$(27)"C""0" 960 PRINT CHR$(27)"C""6"; 970 GOTO 850 980 REM convert to bytes 990 FOR I=1 TO NC 1000 B2(I)=128 1010 B1(I)=128+D(I,7) 1020 FOR J=0 TO 6 1030 IF D(I,J)=1 THEN B2(I)=B2(I)+2^J 1040 NEXT 1050 NEXT 1060 ERASE D 1070 GOTO 480 1080 REM printout 1090 PRINT 1100 OPEN "R",1,"CHAR.DAT" 1110 FIELD#1,2 AS NC$,2 AS NL$,2 AS B1$(1),2 AS B2$(1),2 AS B1$(2),2 AS B2$(2),2 AS B1$(3),2 AS B2$(3),2 AS B1$(4),2 AS B2$(4),2 AS B1$(5),2 AS B2$(5),2 AS B1$(6),2 AS B2$(6),2 AS B1$(7),2 AS B2$(7),2 AS B1$(8),2 AS B2$(8) 1120 INPUT "# of character";NCR 1130 IF NCR=0 THEN END 1140 GET#1,NCR 1150 NC=CVI(NC$):NL=CVI(NL$) 1160 IF NC<9 GOTO 1210 1170 DIM B1(NC),B2(NC),B1$(NC),B2$(NC) 1180 FOR I=9 TO NC 1190 FIELD#1,36+4*(I-9) AS X$,2 AS B1$(I),2 AS B2$(I) 1200 NEXT 1210 FOR I=1 TO NC 1220 B1(I)=CVI(B1$(I)):B2(I)=CVI(B2$(I)) 1230 PRINT CHR$(B1(I))CHR$(B2(I)); 1240 IF I MOD(NC/NL)=0 THEN PRINT CHR$(10);:FOR J=1 TO NC/NL:PRINT CHR$(8);:NEXT 1250 NEXT 1260 GOTO 1120