Как написать игру для ZX Spectrum на ассемблере

       

Полный набор латинских символов



Рисунок 4.3. Полный набор латинских символов

Первая программа создает полный набор, состоящий из латинских букв, цифр, знаков препинания и специальных символов (Рисунок 4.3). Наберитесь терпения и введите ее строки в компьютер. Львиную долю программы составляют блоки данных, содержащие коды всех символов. Если вы нечаянно ошибетесь при вводе хотя бы одного числа, программа в конце работы сообщит об этом и текстом и звуком. А чтобы ошибку легче было обнаружить, все символы, один за другим, выводятся на экран по мере выполнения программы. Если текст программы введен без ошибок, то через некоторое время на экране появится стандартное сообщение Start tape then press any key. Включите магнитофон на запись и нажмите любую клавишу. Коды нового фонта запишутся на ленту. Если вы работаете с дисководом, слегка измените строку 90:

90 RANDOMIZE USR 15619: REM: SAVE "latfont"CODE 64000,768

В этом случае нужно вставить дискету в карман дисковода еще до запуска программы, а полученные коды запишутся сразу по окончании обработки блока данных.

10 PAPER 5: BORDER 5: CLEAR 63999: LET s=0: LET ad=64000 20 PRINT INK 1;"Please wait"''': PLOT 0,160: DRAW INK 6;255,0: PLOT 0,116: DRAW INK 6;255,0 25 RANDOMIZE ad-256: POKE 23606,PEEK 23670: POKE 23607,PEEK 23671 30 FOR i=CODE " " TO CODE "": FOR j=1 TO 8 40 READ a: LET s=s+a: POKE ad,a: LET ad=ad+1 50 NEXT j 60 PRINT CHR$ i;: NEXT i 70 POKE 23606,0: POKE 23607,60 80 IF s<>37874 THEN PRINT AT 10,8; INK 2; FLASH 1; "Error in DATA!!!": BEEP .5,-20: STOP 90 SAVE "latfont"CODE 64000,768 1000 DATA 0,0,0,0,0,0,0,0: REM Space 1010 DATA 0,48,48,48,48,0,48,0: REM ! 1020 DATA 0,108,108,0,0,0,0,0: REM " 1030 DATA 0,54,127,54,54,127,54,0: REM # 1040 DATA 0,8,62,104,60,22,124,16: REM $ 1050 DATA 0,99,102,12,24,51,99,0: REM % 1060 DATA 0,24,44,24,58,108,58,0: REM & 1070 DATA 48,48,96,0,0,0,0,0: REM ' 1080 DATA 0,12,24,24,24,24,12,0: REM ( 1090 DATA 0,48,24,24,24,24,48,0: REM ) 1100 DATA 0,0,54,28,127,28,54,0: REM * 1110 DATA 0,0,24,24,126,24,24,0: REM + 1120 DATA 0,0,0,0,0,48,48,96: REM , 1130 DATA 0,0,0,0,126,0,0,0: REM - 1140 DATA 0,0,0,0,0,48,48,0: REM . 1150 DATA 0,3,6,12,24,48,96,0: REM / 1160 DATA 0,60,102,110,118,102,60,0: REM 0 1170 DATA 0,24,56,24,24,24,60,0: REM 1 1180 DATA 0,60,102,6,60,96,126,0: REM 2 1190 DATA 0,60,102,12,6,102,60,0: REM 3 1200 DATA 0,12,28,44,76,126,12,0: REM 4 1210 DATA 0,124,96,124,6,70,60,0: REM 5 1220 DATA 0,60,96,124,102,102,60,0: REM 6 1230 DATA 0,126,6,12,24,48,48,0: REM 7 1240 DATA 0,60,102,60,102,102,60,0: REM 8 1250 DATA 0,60,102,102,62,6,60,0: REM 9 1260 DATA 0,0,48,48,0,48,48,0: REM : 1270 DATA 0,0,48,48,0,48,48,96: REM ; 1280 DATA 0,0,12,24,48,24,12,0: REM < 1290 DATA 0,0,0,126,0,126,0,0: REM = 1300 DATA 0,0,48,24,12,24,48,0: REM > 1310 DATA 0,56,108,12,24,0,24,0: REM ? 1320 DATA 0,60,110,110,110,96,62,0: REM @ 1330 DATA 0,60,102,102,126,102,102,0: REM A 1340 DATA 0,124,102,124,102,102,124,0: REM B 1350 DATA 0,60,102,96,96,102,60,0: REM C 1360 DATA 0,124,102,102,102,102,124,0: REM D 1370 DATA 0,126,96,124,96,96,126,0: REM E 1380 DATA 0,126,96,124,96,96,96,0: REM F 1390 DATA 0,60,102,96,110,102,60,0: REM G 1400 DATA 0,102,102,126,102,102,102,0: REM H 1410 DATA 0,60,24,24,24,24,60,0: REM I 1420 DATA 0,28,12,12,12,76,56,0: REM J 1430 DATA 0,100,104,120,104,100,102,0: REM K 1440 DATA 0,96,96,96,96,98,126,0: REM L 1450 DATA 0,99,119,107,107,99,99,0: REM M 1460 DATA 0,102,102,118,110,102,102,0: REM N 1470 DATA 0,60,102,102,102,102,60,0: REM O 1480 DATA 0,124,102,102,124,96,96,0: REM P 1490 DATA 0,60,102,102,102,124,58,0: REM Q 1500 DATA 0,124,102,102,124,108,102,0: REM R 1510 DATA 0,60,96,60,6,102,60,0: REM S 1520 DATA 0,126,24,24,24,24,24,0: REM T 1530 DATA 0,102,102,102,102,102,60,0: REM U 1540 DATA 0,102,102,102,102,60,24,0: REM V 1550 DATA 0,99,99,99,107,127,34,0: REM W 1560 DATA 0,76,76,56,56,100,100,0: REM X 1570 DATA 0,102,102,60,24,24,24,0: REM Y 1580 DATA 0,126,14,28,56,112,126,0: REM Z 1590 DATA 0,28,24,24,24,24,28,0: REM [ 1600 DATA 0,96,48,24,12,6,3,0: REM \ 1610 DATA 0,56,24,24,24,24,56,0: REM ] 1620 DATA 24,60,126,24,24,24,24,0: REM ­


1630 DATA 0,0,0,0,0,0,0,255: REM _ 1640 DATA 0,28,50,120,48,48,126,0: REM Ј

1650 DATA 0,0,60,6,62,102,62,0: REM a 1660 DATA 0,96,96,124,102,102,124,0: REM b 1670 DATA 0,0,60,102,96,102,60,0: REM c 1680 DATA 0,6,6,62,102,102,62,0: REM d 1690 DATA 0,0,60,102,124,96,60,0: REM e 1700 DATA 0,28,48,56,48,48,48,0: REM f 1710 DATA 0,0,62,102,102,62,6,60: REM g 1720 DATA 96,96,108,118,102,102,102,0: REM h 1730 DATA 24,0,56,24,24,24,60,0: REM i 1740 DATA 12,0,14,12,12,108,44,24: REM j 1750 DATA 96,96,102,108,120,108,102,0: REM k 1760 DATA 56,24,24,24,24,24,60,0: REM l 1770 DATA 0,0,118,127,107,107,99,0: REM m 1780 DATA 0,0,108,118,102,102,102,0: REM n 1790 DATA 0,0,60,102,102,102,60,0: REM o 1800 DATA 0,0,124,102,102,124,96,96: REM p 1810 DATA 0,0,60,76,76,60,12,14: REM q 1820 DATA 0,0,92,102,96,96,96,0: REM r 1830 DATA 0,0,60,96,60,6,124,0: REM s 1840 DATA 48,48,120,48,48,54,28,0: REM t 1850 DATA 0,0,102,102,102,110,54,0: REM u 1860 DATA 0,0,102,102,102,60,24,0: REM v 1870 DATA 0,0,99,107,107,127,54,0: REM w 1880 DATA 0,0,70,44,24,52,98,0: REM x 1890 DATA 0,0,102,102,102,62,6,60: REM y 1900 DATA 0,0,126,28,56,112,126,0: REM z 1910 DATA 0,12,24,24,48,24,24,12: REM { 1920 DATA 0,24,24,24,24,24,24,0: REM | 1930 DATA 0,48,24,24,12,24,24,48: REM } 1940 DATA 108,108,36,72,0,0,0,0: REM ~ 1950 DATA 60,98,221,217,217,221,98,60: REM ©

Получить новый набор, включающий в себя русские буквы (Рисунок  4.4.), поможет следующая программа. Она отличается от предыдущей фактически только блоком данных, поэтому все вышесказанное в полной мере относится и к ней.


Содержание раздела