Радио-86РК/Радио 07,08-91/Новый знакогенератор/Таблица 2

Материал из Emuverse
Версия от 14:28, 10 декабря 2008; Panther (обсуждение | вклад) (http://retro.h1.ru/RK86/Programm/FontTbl2.txt)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Данный материал защищён авторскими правами!

Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей.

Автор: Ю. ИГНАТЬЕВ

Источник: http://retro.h1.ru/RK86/Programm/FontTbl2.txt

				Таблица 2
10 REM FONT DESIGNER V2.5 
20 CLS
50 BS=&5000
40 CUR 15,20: PRINT "*** ПРОЕКТИРУЕМ  "; 
50 PRINT "ЗНАКОГЕНЕРАТОР ***" 
60 CUR 10,14: PRINT "+--------+" 
70 CUR 10,5:  PRINT "+--------+" 
80 FOR I=15 TO 6 STEP-1: CUR 10,1 
90 PRINT" '        '": NEXT I
100 GOSUB 7401 CUR 24,14: PRINT "НОМЕР ЗНАКА :    "; 
110 PRINT CHR$(8);CHR$(8);CHR$(8); 
120 CUR 37,14: PRINT "           ":CUR 58,14 
130 INPUT С: ST=8*C 
140 FOR I=0 TO 7: B=PEEK(BS+ST+1) 
150 CUR 5,15-I: PRINT @(B): GOSUB 670: NEXT I 
160 GOSUB 740: CUR 24,15: PRINT "I - СЛЕДУЩИЙ ЗНАК," 
170 PRINT TAB(24);  "2 - РЕДАКТИРОВАНИЕ," 
180 PRINT TAB(24))  "5 - ИНВЕРСИЯ," 
190 PRINT TAB(24);  "4 - ОЧИСТКА ЗНАКОМЕСТА," 
200 PRINT TAB(24);  "5 - ЗАКОНЧИТЬ РАБОТУ." 
210 PRINT TAB(24);  "    ВЫБИРАЙТЕ :       "; 
220 FOR I=0 TO 5: PRINT CHR$(8);: NEXT I 
230 N$=INKEY$: IF LEN(N$)=0 THEN 230 
240 N=ASC(N$)-48
250 IF N<1 OR N>5 OR N<>INT(N) THEN 160 
260 ON N GOTO 100, 270, 610, 640, 780 
270 X=0: Y=0: ADR=BS+ST
280 GOSUB 740: CUR 24,13: PRINT "               "; 
290 PRINT "   КЛАВИШИ :"
300 PRINT ТАВ(24); "ПЕРЕМЕЩЕНИЕ     - 'СТРЕЛКИ'," 
310 PRINT ТАБ(24); "ПОСТАВИТЬ ТОЧКУ - 'ТОЧКА'," 
320 PRINT TAB ( 24);   "СТЕРЕТЬ ТОЧКУ   - 'ПРОБЕЛ'," 
330 PRINT ТАВ(24);   "В ОСНОВНОЕ МЕНЮ) - 'R'." 
340 Y=O: X=0: GOSUB 720 
350 A$=INKEY$: IF LEN(A$)=0 THEN 350 
360 A=ASC(A$): RESTORE 
370 FOR K=I TO 7 
380 READ M
390 IF A=M THEN 420 
400 NEXT К 
410 GOTO 350
420 ON К GOTO 430, 450, 470, 490, Э10, 560, 160 
430 IF X<=0 THEN 350 
440 X=X-1: GOSUB 720: GOTO 350 
450 IF X>=7 THEN 350 
460 X=X+1: GOSUB 720:  GОТО 350 
470 IF Y<=0 THEN 350 
480 Y=Y-1; GOSUB 720:  GОТО 350 
490 IF Y>=7 THEN 350 
500 Y=Y+1: GOSUB 720: GОТО 350 
510 GOSUB 720: ADR=BS+ST+Y 
520 PRINT " ", CHR$(8);
530 BT=PEEK(ADR) AND NOT (2^(7-X)): POKE ADR,BT 
540 CUR 5,13-Y: PRINT @(BT) 
550 GOSUB 720: GOTO 350 
560 GOSUB 720: ADR=BS+ST+Y 
570 PRINT CHR$(23); CHR$(8); 
580 BZ=PEEK(ADR) OR (2^(7-X): POKE ADR,BZ 
590 CUR 5,13-Y: PRINT @(BZ) 
600 GOSUB 720: GOTO 350
610 FOR I=0 TO 7: ADR=BS+ST+I: BN=NOT(PEEK(ADR)) 
620 BN=BN AND 255: POKE ADR,BN: NEXT I 
630 GOSUB 720: GOTO 140 
640 FOR I=0 TO 7: ADR=BS+ST+I 
650 POKE ADR,255: NEXT I 
660 GOSUB 720: GOTO 140
670 FOR J=7 TO 0 STEP -1; BR=INT(B/(2^J) 
680 CUR 18-J,18-I
690 IF BR=0 THEN PRINT " ": GOTO 710 
700 PRINT CHR$(23); 
710 B=B-BR*2^J: NEXT J: RETURN 
720 PRINT CHR$(27);"Y";CHR$(Y+45);CHR$(X+43); 
730 RETURN
740 CUR 24,13: FOR I=0 TO 6 
750 PRINT TAB(24);" 
760 NEXT I: RETURN 
770 DATA 8,24,25,26,46,32,82