Вадим Бенке, Эдуард Бенке
Программа LPRINT
Предлагаемая программа составлена на Бейсике и служит для распечатки на принтере программ, выполненных в машинных кодах.
Порядок работы с программой
- Загрузить программу LPRINT с помощью команды CLOAD.
- После приглашения к работе ввести с клавиатуры имя программы (в маш. кодах), которую необходимо распечатать.
- Магнитофон с рабочей кассетой включить.
- Принтер включить.
- Нажать клавишу ввода команды.
При загрузке второй программы в БК-0010 сокращённое до четырёх информационных строк экранное поле дисплея будет заполняться. По окончании загрузки сразу заработает принтер. Проще было бы распечатать содержимое ячеек оператором LPRINT через какой-либо разделитель, например, через запятую. Но такой текст неудобен для чтения.
- Для того чтобы текст программы выглядел как и распечатка на экране дисплея, при помощи директивы отладки "Л" требовалось, чтобы любое содержимое ячейки представлялось в восьмеричной системе счисления и состояло из шести знаков. После включения условия распечатки на строке только восьми чисел можно распечатывать содержимое ячеек.
- Для загрузки в БК-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 можно удалить, а выход из программы выполнять по клавише "СТОП".
Жариков Л. Н.