logo search
ZX-Review-1992-01-12

"ДЕБЮТ ПРОГРАММЫ"

Продолжая разговор о повседневных задачах, начатый в одной из номеров "ZX РЕВЮ", следует поподробнее остановиться вот на чем. Несмотря на то, что Ваши программы различаются в зависимости от конкретной задачи, практически во всех программах встречается повторяющиеся моменты. Это может быть введение русского шрифта, титульная заставка с фамилией автора (Вашей), блок кодов "ON ERROR GO TO" с механизмом его инициирования, который описан в предыдущей статье (см. ZX РЕВЮ 5 6 за 1992 г. стр. 113), какое то стандартное начало программы. Неплохо также предусмотреть элементарный сервис для себя, в частности упрощение сохранения программы на ленте в процессе написания и отладки. То есть речь идет о "дебюте" программы. Наверное, у многих програмистов есть свой "дебют" или стандартное начало своих программ, а также одинаковые приемы, используемые практически во всех или в большинстве своих программ.

Предлагаю вниманию начинающих достаточно универсальный "дебют" программы. Я сам уже долгое время пользуюсь этим "дебютом" при разработке своих программ и оказывается, что при составлении новой программы требуется минимум переделок. Новую программу я всегда начинаю с загрузки "дебюта", затем набиваю остальные строки программы, не отвлекаясь на "второстепенные" задачи по формированию символьного набора и т.п.

Итак, сначала текст заготовки программы, назовем ее "PROG", затем комментарии.

0 REM (машинные коды)

1 GO TO 100

2 RANDOMIZE 2: GO SUB 10:CLEAR 49999: LOAD "prog"СООЕ 50000,1000 3 GO SUB 8: PRINT . . . (вывод на экран заставки)

4 GO SUB 20: GO TO 0

5 GO SUB 9: SAVE "PROG"LINE 2: SAVE "prog"CODE 50000,1000

6 VERIFY "PROG": VERIFY "prog" CODE: PRINT INK 9; TAB 20; "О.К." : BEEP 0.5,32: GO TO 5 7 POKE 23675,208: POKE 23676,95: RETURN : REM UDG

8 POKE 23606,208: POKE 23607,91: RETURN : REM RUS

9 POKE 23606,0: POKE 23607,60: RETURN : REM LAT

10 POKE 24746, PEEK 23670: POKE 24749,PEEK 23671: RANDOMIZE USR 24696: RETURN :REM ON ERROR GO TO

20 PRINT #0; TAB 5;"НАЖМИТЕ ЛЮБУЮ КЛАВИШУ": PAUSE 0: INPUT; 22 IF INKEY$="q" THEM GO TO 9999

24 RETURN

100 RANDOMIZE 3: GO SUB 10: GO SUB 7: GO SUB 8: BORDER 1: PAPER 0: INK 6: BRIGHT 0: CLS 1000 PAUSE 50: GO SUB 20

1010 PRINT AT 12, 10;"ЗВУК 1":RANDOMIZE USR 24769

102O PAUSE 50: GO SUB 20 1030 PRINT AT 12,10;"ЗВУК 2":RANDOMIZE USR 24801 9999 BORDER 7: PAPER 7: INK 0: BRIGHT 0: INVERSE 0

В нулевой строке программы расположены блоки кодов, необходимые для ее работы. О формировании нулевой строки мы подробно поговорим позже. А сейчас о том, что

же это за блоки кодов.

1. Символьный набор расположен с адреса 23760. Длина 768 байт (по адрес 24537). Системная переменная CHARS при этом равна: 23760 256=23504. Символьный набор может быть любым, по вашему вкусу. Я использую русско латинский символьный набор в кодах ASCII КОИ 7 "НС". Подробно об этом в статье о русификации программы "МАСТЕРФАЙЛ 09" в ZX РЕВЮ 1 2 за этот год, стр. 31. Там же программа по формированию такого символьного набора.