Вадим Бенке, Эдуард Бенке

Программа LPRINT

Предлагаемая программа составлена на Бейсике и служит для распечатки на принтере программ, выполненных в машинных кодах.

Порядок работы с программой

  1. Загрузить программу LPRINT с помощью команды CLOAD.
  2. После приглашения к работе ввести с клавиатуры имя программы (в маш. кодах), которую необходимо распечатать.
  3. Магнитофон с рабочей кассетой включить.
  4. Принтер включить.
  5. Нажать клавишу ввода команды.

При загрузке второй программы в БК-0010 сокращённое до четырёх информационных строк экранное поле дисплея будет заполняться. По окончании загрузки сразу заработает принтер. Проще было бы распечатать содержимое ячеек оператором LPRINT через какой-либо разделитель, например, через запятую. Но такой текст неудобен для чтения.

  1. Для того чтобы текст программы выглядел как и распечатка на экране дисплея, при помощи директивы отладки "Л" требовалось, чтобы любое содержимое ячейки представлялось в восьмеричной системе счисления и состояло из шести знаков. После включения условия распечатки на строке только восьми чисел можно распечатывать содержимое ячеек.
  2. Для загрузки в БК-0010 программ в машинных кодах составлена подпрограмма (в кодах).
1 CLS
2 FOR A=&O1300 TO &O1366 ST 2
3 READ B
4 POKE A,B
5 NEXT A
6 DEF USR1=&O1300
7 A=USR1(1)
8 ? CHR$(&O214);AT(22,0)"****ПРИНТЕР****";
  AT(4,1)"ПРОГРАММА ПОЗВОЛЯЕТ ВЫВЕСТИ НА ПРИНТЕР ПРОГРАММЫ B КОДАХ";CHR$(&O000233);
  AT(5,2)"АВТОРЫ:БЕНКЕ В. БЕНКЕ Э.";CHR$(&O000233);AT(22,3)"НАЖМИТЕ ПРОБЕЛ";
9 IF PEEK(&O177662)><32 GOTO 9
10 ? CHR$(12);AT(1,2)"ЕСЛИ ВАМ НУЖНЫ НЕСКОЛЬКО КОПИЙ,НАЖМИТЕ (ПРОБЕЛ) ПОСЛЕ ОКОНЧАНИЯ ПЕЧАТИ,
   A ЕСЛИ НЕТ,ТО (ВВОД)"
11 ? AT(5,3)"НАЖМИТЕ ЛЮБУЮ КЛАВИШУ";
12 IF PEEK (&O177716)><&O100200 AND PEEK (&O177716)><&O100240 THEN 12
13 RESTORE
14 FOR V%=0 TO &O66 ST2
15 READ V1
16 NEXT V%
17 FOR A=&O1000 TO &O1170 ST2
18 READ B
19 POKE A,B
20 NEXT
21 DEF USR=&O1000
22 ? CHR$(12);AT(0,2)"ВВЕДИТЕ БЕЗ ИСПРАВЛЕНИИ ИМЯ ФАЙЛА...";CHR$(&O232);
23 A=USR(A)
24 IF PEEK(&O1170)=&O2003 THEN ? CHR$(12);AT(0,2)"ОСТАНОВ ПО КЛАВИШЕ <СТОП>,НАЖМИТЕ ЛЮБУЮ КЛАВИШУ";
25 IF PEEK(&O1170)=&O1003 THEN ? CHR$(12);AT(0,2)"ОШИБКА B ФАЙЛЕ";
26 IF PEEK(&O1170)=3 GOTO 31
27 ? CHR$(&O232)
28 IF PEEK (&O177716)=&O100240 OR PEEK(&O177716)=&O100200 GOTO 13 ELSE 28
29 S=0
30 PRINT CHR$(10);CHR$(10);CHR$(10)
31 FOR Q=0 TO 1100
32 NEXT Q
33 E=&O40000
34 B$="00000"
35 FOR B%=E TO E+&O776 ST 2
36 A$=OCT$(PEEK(B%))
37 C$=MID$(B$,1,6-LEN(A$))+A$+"    "
38 IF B%-&O40000=PEEK(&O266) THEN 49
39 LPRINT C$;
40 S=S+1
41 IF S=8 THEN LPRINT
42 IF S=8 THEN S=0
43 NEXT B%
44 LPRINT CHR$(10);CHR$(10)
45 FOR B=0 TO 1000
46 NEXT B
47 E=E+&O1000
48 GOTO 35
49 IF PEEK(&O177662)=32 AND PEEK(&O177716)=&O100240 THEN 29
50 IF PEEK(&O177662)=10 AND PEEK(&O177716)=&O100240 THEN END ELSE 49
51 DATA &O104034,&O022700,&O044000,&O001427,&O022700,&O044004,&O001406,&O022700,
        &O044001,&O001407,&O022700,&O044005,&O001410,&O012700,&O000214,&O104016,
        &O000207,&O012700,&O000233,&O104016,&O000207,&O012700,&O000233,&O104016,
        &O012700,&O000214,&O104016,&O000207
52 DATA &O104006,&O104006,&O022700,&O000012,&O001002,&O000137,&O001132,&O104016,
        &O110037,&O001176,&O005237,&O001022,&O022737,&O001215,&O001144,&O103402,
        &O000137,&O001002,&O012737,&O001176,&O001022,&O012737,&O000003,&O001170,
        &O012737,&O040000,&O001172,&O012701,&O001170,&O104036
53 DATA &O122737,&O000001,&O001171,&O001012,&O012701,&O001222,&O012702,&O000020,
        &O104020,&O012700,&O000012,&O104016,&O000137,&O001044,&O000207,&O013737,
        &O001022,&O001144,&O112737,&O000040,&O001176,&O005237,&O001144,&O022737,
        &O001215,&O001144,&O103402,&O000137,&O001140,&O000137,&O001116,0,0,0,0

Заключение рецензента

Программа, предложенная учащимися Межшкольного УПК г. Рудного В. Бенке и Э. Бенке, позволяет распечатывать кодовые программы в восьмеричных кодах на принтере. В Бейсик-программу встроена кодовая программа, предназначенная для ввода распечатываемой программы с магнитной ленты.

К сожалению, в программу вкрались ошибки.

Кроме того, операторы в строках 49, 50 срабатывают только при включённом воспроизведении магнитофона. Поэтому лучше заменить строку 49, например, на строку

49 IF INKEY$="" THEN 29

для осуществления перехода на печать очередного экземпляра по нажатию клавиши пробела. Строку 50 можно удалить, а выход из программы выполнять по клавише "СТОП".

Жариков Л. Н.

 

Performed by © gid, 2012-2022.