48 программ для изучающих Basic 1992 г.

Глава 3 - программа "мини-монитор", программа "домашнее хозяйство, расходы", программа "анализ фурье".


ГЛАВА 4

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

4.1 ПРОГРАММА "МИНИ-МОНИТОР".

Компьютер SPECTRUM не имеет встроенных средств для написания
программ на языках программирования(кроме БЕЙСИКА) или в машинных
кодах. Для решения такого рода задач созданы различные программные
средства. Для составления программ в машинных код ах для компьютера
SPECTRUM необходима специальная программа-редактор. Наличие в
БЕЙСИКЕ компьютера SPECTRUM инструкций РЕЕК и РОКЕ
позволяет работать с информацией хранящейся в ячейках памяти с
заданным адресом. Поэтому возможно составление программ в
машинных кодах и без использования дополнительных средств, но
программа-редактор позволит работать более эффективно. Такая
программа составленная на БЕЙСИКЕ приведена ниже:

10 CLEAR 32299
20 LOAD"" CODE
100 LET BYTE-900
110 LET ADRESS-2000
120 LET MENU-1000
200 GO TO MENU
300 PRINT" ";
305 LET B-N

310 IF 0-1 THEN GOSUB 9S0

320 Г0-0 THEN PRINT N

330 RETURN

900 REM HEX BYTE

910 LET B-PEEK L

920 LET B1- (INT (B/16)+48)

925 GOSUB 980

930 LET B1-(B-(INT (B/16)*16)+48)

935 GOSUB 980

940 RETURN

950 REM HEX ADRESS

952 LET H-4096

955 LET B1-(INT (B/H)+48)

958 GOSUB 980

960 LET B-B-INT(B/H)*H

965 LET H-H/16

970 IF H>-1 THEN GO TO 955

975 PRINT "H"; TAB 7;

979 RETURN

980 IF Bl>57 THEN LET B1-B1+7
985 PRINT CHRSB1;

989 RETURN

990 CLS
992 LET 1-0

999 RETURN

1000 REM MENU

1010 PRINT TAB 7;"MINI-MONITOR"
1020 PRINT

1030 PRINT TAB 7;"I)NPUT"

1040 PRINT TAB 7;'D)UMP*

1050 PRINT TAB 7;*SJTARr

1070 PRINT TAB 7;"E)ND*

1080 IF INKEYS THEN GO TO 1080

1090 IF INKEYS -T THEN GOSUB 2500

1100 IF INKEYS -*DI" THEN GOSUB 4600

1110 IF INKEYS -"E" THEN GOSUB 3900
1115 IF INKEYS -*S" THEN GOSUB 3000
1120 CLS

1130 GO TO MENU
2000 REM ADRESS
2005 LET D-1
2010 CLS

2020 PRINT "ADRESS:*;
2030 INPUT A$
2040 PRINT AS;

2045 IF A$( LEN A$)-"H" THEN LET D-0: GO TO 2100

2060 LET N-VAL AS

2070 RETURN

2100 LET N-0

2110 FORX-1 TOLENAS-l

2115 LET B-CODE A$(X)-48

2118 IF B>9 THEN LET B-B-7

2120 LET N-N*16+B

2130 NEXT X

2140 RETURN

250Q REM INPUT

2505 LET 1-0

2510 CLS

2520 GOSUB ADRESS

2521 GOSUB 300

2522 LET l-N

2525 PRINT AT 21,1 ;"E)ND ENTERjFORVARD RJETURN"

2527 PRINT AT 2,0;

2530 IF D-1 THEN PRINT L; TAB7;

2532 LET D-L

2535 IF D-0 THEN GOSUB 950
2540 GOSUB BYTE
2550 PRINT" »> ";
2560 INPUT AS

2570 IF AS о "" THEN GO TO 2600

2580 LET L-L+1
2585 PRINT
2587 LET 1-1+1

2590 IF l>18 THEN GOSUB 990

2595 GO TO 2530

2600 IF LEN A$>3 THEN GO TO 2560

2610 IF A$-"R" THEN GO TO 2700

2620 IF A$-"E" THEN RETURN

2625 LET N-0

2630 FOR X-l TOLENAS

2632 LET B- CODE A$(X)-48

2633 IF B>9 THEN LET B-B-7

2634 LET N-N'16+В

2635 NEXT X

2636 LET B-N
2640 GOSUB 920
2650 POKE L,N
2660 GO TO 2580
2700 LET L-L-l
2710 GO TO 2585
3000 REM START
3010 GOSUB ADRESS
3015 GOSUB 300
3020 PRINT USR N
3030 PAUSE 4E4
3040 RETURN

3900 CLS

3910 STOP

4600 REM DUMP

4610 GOSUB ADRESS

4612 GOSUB 300

4615 PRINT AT 20,0;"N)EXT MJENU"

4618 PRINT AT 2,0

4620 FOR S-0 TO 15

4630 IF D-1 THEN PRINT N+S*8; TAB 7;

4632 LET B-N+S*8

4635 IF D-0 THEN GOSUB 950

4640 FOR X-0 TO 7

4650 LET L-N+S*8+X

4660 GOSUB BYTE

4670PRINT' ";:REM2SPASE

4680 NEXT X

4690 PRINT

4692 IF INKEYS THEN GO TO 4692

4695 IF INKEYS -"MTHEN GO TO 4760

4700 NEXT S

4710 PRINT

4740 LET N-L+1

4745 CLS

4750 GO TO 4615
4760 RETURN

Программа 4.1 Программа МИНИ-МОНИТОР.

При запуске программа ожидает ввода с магнитофона программы
в машинных кодах, которую предстоит редактировать. Если необходимо
набирать новую программу, то запуск следует осуществить со строки 100,
выполнив RUN 100. После запуска появляется меню:

MINI-MONITOR

INPUT

DUMP

START

END

Выбирая одну из букв задаем режим работы, в котором будем работать.
Выбрав I входим в режим ввода информации начиная с указанного адреса.
На экране появляется новое меню:

END
ENTER
EORVARD
RETURM

Задается адрес начала программы в десятичном виде и автоматически
вычисляется его шестнадцатиричный эквивалент. Например: 32500
соответствует 7EF4H. После чего на экране появляется адрес,
содержимое ячейки памяти, и приглашение для ввод а новой информации в
выбранную ячейку — >.

32500 21 —>Если набрать, например, ЗЕ, то на экране появится:

32500 21 -->ЗЕ

3250100->

и программа предложит произвести ввод в следующую ячейку памяти.
В случае если нет необходимости изменить содержимое ячейки, то нажав
ENTER можно перейти к ячейке с очередным адресом, а нажав R можно
вернуться к предыдущему и исправить ошибочно введенную информацию.
Быстро просмотреть содержимое области памяти можно выбрав в меню
J2UMP. При этом на экран выводится:

ADRESS 1000Н

4096 9А <Ю D6 С4 38 F9 01 ЕС

4104 C900000000 FFFFFF

Запустить программу с указанного адреса можно выбрав в меню
START. В качестве примера попробуйте с помощью редактора ввести в
память компьютера и выполнить короткую программу в машинных кодах.
При выполнении эта программа выводит на экран цифру.

ЗЕ 01 LD А,1
С6 01 ADD АЛ
4F LDC,A

06 00 LD В,0
С9 RET

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

После окончания пользования редактором выберите в меню E)ND для
возвращения в БЕЙСИК.

4.2 ПРОГРАММА "ДОМАШНЕЕ ХОЗЯЙСТВО,
РАСХОДЫ**.

Следующая программа позволяет подсчитывать расходы

при ведении домашнего хозяйства. При запуске программы на экран
выводится следующая картинка:

MONTH: JAN

SUM 135.50

RENT

TRANSPORT

ENERGY 125.00

FOOD

RELAXATION 10.50

BILL-1

BILL-2

ETC

END

MONTH

RESULT

В этом меню предусмотрены основные виды расходов, атакже некоторые
управляющие слова. Например для выбора нового месяца необходимо
набрать:

MONTH FEB

и на экране будет меню с расходами за февраль. Дополнить записи
можно в любой момент и на экране будет произвед ено суммирование по
д анному виду расходов и подведен общий итог за месяц. Если, например,
необходимо учесть расходы на энергию, то следует сделать запись:

ENERGY 125.00

BILL-1, BILL-2 - счета состоящие из нескольких статей затрат. При
их выборе в главном меню на экране появляется подменю, работа с
которым ведется по прежним правилам.

При выборе RESULT подводится итог по всем статьям затрат завесь год.

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

Работа программы эквивалентна заполнению таблицы
расходов:

Каждой клеточке таблицы в программе соответствует элемент массива
К(13,9).

100 DIM А$(4,10): DIM В$(5,10)
110 DIM К$(24,10): DIM V$(1,10)
115 DIM l$(20)
120 DIM А(13,3): DIM В{13,5)
130 DIM K{13,9)

140 LET LK-24: LET V-4: LET M-1
145 LET L$-'
150 LET ERR-9000
200 LET K$(1)-*SUM*
210 LET K$(2)-'RENT
220 LET K$(3)-TRANSPORr
230 LET K${4)-*ENERGY"
240 LET K$(5)-"FOOD"
250. LET K$(6)-*RELAXATION"
260 LET K$|7)-"BILL-r
270 LET K$(8)-"BILL-2"
280 LET K$(9)-"ETC."
290 LET K$(10)-"END"
295 LET K$(11)-"MONTH"
297 LET K$(12)-'RESULr
300 LET A$(1)-"POST"

aioiETMPKSCHOOi'

320 LET A$|3)-"SPORr

325 LET A$(4)-"RETURN"

350 LET B$(l)-"TELEFONE"

360 LET В$|2)-'МЕАГ

370 LET B${3)-"GREENS"

380 LET B$|4)-*CLOTHES"

390 LET B${5)-"SHOP"

395 LET K$(13)-"JAN"

400 LET K$|14)-"FEB"

405 LET K$(15)-"MAR"

410 LET K$(16)-"APR"

415 LET K$(17)-*MAY"

420 LET K$(18)-"JUN"

425 LET K$|19)-"JUL"

430 LET K$(20)-"AUG"

435 LET K$(21)-"SEP"

440 LET К$(22)-"01СГ

445 LET K$(23)-"NOV*

450 LET K$(24)-*DEC"

500 CLS: IF M-13 THEN LET M-1

502 LET N-M+12

505 PRINT AT 0,2;"MONTH: ";IC$(N)

510 PRINT AT 2,9,K$(1)

520 FOR 1-2 TO 12

530 PRINT AT l+V,2;K$(l): NEXT I

550 FOR N-2 TO 9

555 LET W-K(M,N): GOSUB 1400

560 NEXT N

565 LET W-K(M,1): LET N--2: GOSUB 1400

599 GO TO 1000

1000 INPUT T;l$

1005 PRINT AT 20,0;L$

1010 LETL-LEN 1$

1020 FOR 1-1 TO L

1030 IF l$flK * THEN GO TO 1100

1040 NEXT I

1050 GO TO ERR

1100 LET V$(1H$(TO И)

1110 FOR N-1 TOUC

1120 IF V$(1)-K$tN) THEN GO TO 1200

1130 NEXT N

1140 FOR N-1 TO 4

1150 IF V$(1)-A$N THEN GO TO 2100

1160 NEXT N

1170 TOR N-1 TO 5

1180 IF V$(1)-B$(N) THEN GO TO 3100

1190 NEXT N

1199 GOTO ERR

1200 IF V$(l,1 TO 3KEND* THEN STOP

1201 IF V$(1,1 TO 3j-"RES" THEN GO TO 1700

1202 IF V$(1,1 TO 3KMON" THEN GO TO 1500
1204 IF V$(1,1 TO 3J-m* THEN GO TO 1600
1206 GOSUB 1210

1208 GO TO 1260

1210 IF M-13 THEN GO TO ERR

1215 IF N-1 OR N>12 THEN GO TO ERR

1220 LET H+1

1230 FOR X TO I

1240 IF l$(4-V THEN LET l$(JH$(J<-1):

LET l$(JHH5(M): IET l$(*2K'

1250 NEXT i RETURN

1260 IET W-VAl t$(l TO 1-1)

1270 LET KHN-KHN+W

1280 LET K(13,NK(13,NH-W

1290 LET K(M,1H4M.1)+W

1295 LET iqi3,iHqi3,iH-w

1300 LET W-KHN): GOSUB 1400

1310 LET W-K(M,1): LET N-2: GOSUB 1400

1320 GO TO 1000

1400 LET l$- STR$ W: LET L- LEN (STR$W): LET L-L+1
1405 IF L<3 THEN GO TO 1430
1410 LET l$(L)-l$(L-1): LET l$(L-1)-l$fl.-2J:

LET l$(L-2J-V
1420 PRINT AT N+V, 30-L;I${TO L)
1430 RETURN

1500 LET V$(1H$fl+1 TOL)

1510 FOR N-13 TO 24

1520 IF V$(1K${N) THEN GO TO 1560

1530 NEXT N

1550 GO TO ERR

1560 LET M-N-12: GO TO 500

1600 IF M-13 THEN GO TO 1800

1605 LET W- VALK$(N,6)

1610 CLS: LET N-M+12

1620 PRINT AT OA-MONTH*: *;K$(N)

1650 LET W-W+l: GO TO 1000*W

1700 CLS: PRINT AT 0,2;K$(12)

1710 LET M-13: GO TO 510

1800 CLS: PRINT AT 0,2;K$(12)

1810 LET W-VAL K$(N,6)

1820 LET W-W+1: GO TO 1000*W

2000 PRINT AT 2,9;K$|7)

2010 FOR 1-1 TO 4

2020 PRINT AT l+V,2;A$(l)

2030 NEXT I

2040 FOR N-1 TO 3

2050 LET W-A|M,N): GOSUB 1400

2060 NEXT N

2070 LET W-K(M,7): LET N-2:GOSUB 1400
2080 GO TO 1000

2100 IF V$(l,l TO 3)-'REr THEN GO TO 500

2105 GOSUB 1210

2110 LET W- VAL l$(l TO L-1)

2130 LET A|M,N)-A|M,N)+W

2140 LET A(13,N)-A(13,N)+W

2145 LET K(M,lhK|Mfl)+W

2150 llET K|M,7)-K|M(7)+W

2155 LET K(13,7)-K(13,7)+W

2157 LET K|13,1K(13,1)+W

2160 LET W-A|M,N): GOSUB 1400

2170 LET W-K(M,7): LET N-2: GOSUB 1400

2180 GO TO 1000

3000 PRINT AT 2,9;K$(8)

3010 FOR hi TO 5

3020 PRINT AT l+V,2;B${l)

3030 NEXT I

3035 PRINT AT 10,2;A$(4)

3040 FOR N-1 TO 5

3050 LET W-B(M,N|.<30SUB 1400

3060 NEXT N

3070 GO TO 1000

3100 IF V$(1,l TO 3)-*RET THEN GO TO 500
3105 GOSUB 1210
3110 LET W-VAL l$(l TO L-1)
3130 LET B(M,N|-B(M,NJ+W
3140 LET B(13,Kfl-B|l 3,N)+W
31 $0 LET K(M,8)-K(M,8)+W
3155 LET K(13,8HC(13,8)+W
3157 LET K(13,1)-K(13,1)+W
3160 LET W-B(M,N): GOSUB 1400
3170 GO TO 1000
9000 PRINT AT 20,0;V$(1);" V
9020 GO TO 1000
Программа 4.2Программа "Домашнеехозяйство. Радходы".

4.3 ПРОГРАММА "АНАЛИЗ ФУРЬЕ".

Программа выполняющая анализ Фурье.

Анализ Фурье основываетсянатом, что любую периодическую функцию
можно представить в виде суммы гармоник и постоянной составляющей:

т - с(0) +SUMM (s(n)Sin nwt + с(п) Cos nwf),

где

я от нт1 до я"Л

Поскольку формула представления произвольной периодической
функции известна, то анализ сводится к вычислению коэффициентов
с(0), s(n) и с(п). В программе приведенной ниже производится
вычисление коэффициентов для трех типов функций:

1. Периодическая линейно-возрастающая функция.

2. Периодическая линейно-возрастаюгцая функция с возвращением
к нулю.

3. Функция типа "меандр".

Рассмотрим более подробно функцию третьего типа. График этой
функции на интервале одного периода приведен на рисунке 4.1:

В программе зад ается количество точе к на исходном графике
функции через которые должна пройти кривая построенная
по найденным коэффициентам. Известно, что поставленная
задача имеет решение, если выполняется условие:

NP > NH*2+1>

где

NP - число точек
NH - число гармоник
В данном случае выбрано NP=16, NH=7

После выполнения вычислений на экран выводится таблица вида:

a cos sin

0 0 0

1 0 0.9426

2 0 0

3 0 0.2806

4 0 0

5 0 0.1252

6 0 О

7 0 0.0372

Далее выводится гистограмма амплитудных значений гармонических
составляющих:

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

20 CIS: PRINT AT 1,2;TOURIER ANALYSE*
22 PRINT AT 3,2;*1.EXAMPLE *

24 PRINT AT 4,2;"2 EXAMPLE "
26 PRINT AT 5,2;"3.EXAMPLE "

28 PRINT AT 7,2;"INPUT 1/2/3"

29 PRINT AT 9,2;"END"

30 INPUT N

31 IF N<1 OR N>3 THEN STOP

32 GO TO 100*N

45 CLS

46 PRINT "

47 PRINT -

48 PRINT -

49 PRINT" NP>2*NH+1 "

50 INPUT "NUMBER OF HARMONICS - ",NH
60 INPUT "NUMBER OF POINTS - ",NP

70 DIM F(NP+1) DIM S(NP+1): DIM C(NP+1)

75 IF NP<2*NH+1 THEN GO TO 50

80 RETURN

100 REM 1

110 GOSUB 45

115 LET F(1)--1: LET DY-2/NP

120 FOR 1-2 TO NP

125 LET F(I)-F(M)+DY: NEXT I

130 LET F(1)-0: LET F(NP+1)-F(1)

140 GO TO 500

200 REM 2

205 GOSUB 45

210 DIM F(NP+1)

215 LET F(1)-0- LET DY-2/NP

220 FOR 1-2 TO NP/2

225 LET F(I)-F(M)+DY: NEXT I

230 LET F(NP/2+1)-0.5

235 FOR l-NP/2+2 TO NP+1

240 LET F(IJ—0:NEXT I

250 GO TO 500

300 REM 3

305 GOSUB 45

310 LET F(1)—0: LET F(N/2+1)-0

315 LET F(NP+1H>

320 TOR 1-2 TO NP/2

325 LET F(I)-0.75:NEXT I

330 FOR l-NP/2+2 TO NP

335 LET F(l)--0.75: NEXT1

340 GO TO 500

500 REM FOURIER -ANALYSE

502 CIS

505 PRINT AT 1,2;*N"; AT 1,10;"COS"; AT 1,20;"SIN"

510 LET Z-2/NP: LET P-0

520 LET CI-COS (Z*PI): LET SI- SIN (Z*PI)

530 LET C-1: LET S-0; LET P-0

540 LET U1-0: LET U2-0

550 LET N-NP

560 LET U0-F(N)+2*C*U 1-U2

570 LETU2-U1: LET U1-U0: LET N-N-1

580 IF N-1 THEN GO TO 600

590 GO TO 560

600 LET A-Z*(F(1)+C*U1-U2)

610 LET B-Z*S*U1

615 LET EPS-1E-6

620 IF ABS (A)<EPS THEN LET A-0

630 IF ABS |B)<EPS THEN LET B-0

632 LET J-10000

634 LET A-INT (/A)/! LET C(P+1)-A
636 LET B-INT (ГВ)/>. LET S(P+1)-B
638 IF P-0 THEN LET A-A/2
640 PRINT AT P+3,2;P; AT P+3,10A
AT P+3,20;B

650 IF P-NH THEN GO TO 900

660 LET Q-Cl *C-S1 *S

670 LETS-CrS+SrC

680 LET C-Q: LET P-P+1: GO TO 540

900 GOSUB 1990

999 IF INKEYS-" THEN GO TO 999

1000 REM SPECTR.UNE
1010 CLS

1012 PRINT AT 1,2;*FOURIER KOEFF."

1015 PRINT AT 3,2;'SINUS';AT 3,16;"COSINUS'

1020 PLOT 10,30: DRAW 100,0

1040 PLOT 130,30: DRAW 100,0

1060 FOR 1-0 TO NH

1070 PLOT 10*1+10,30: DRAW 0,100*ABS S|l+1)

1080 NEXT I

1090 FOR 1-0 TO NH

1100 PLOT 10*1+130,30:DRAW 0,100*ABS C(l+1)
1110 NEXT I
1115 GOSUB 1900

1120 IF INKEYS THEN GO TO 1120
1200 REM
1210 CIS

1220 PLOT 20,95: DRAW 180,0

1230 LET C(1)-qi)/2

1240 FOR P-1 TO NH

1250 IF S(P)-0 THEN GOTO 1310

1260 FOR 1-0 TO 360 STEP 5

1270 LET Y-S(P)*SIN (|P-1)*2*P11/360): LET Y-Y*70+95

1280 LET X- INT (1/2+20)

1290 PLOT X,Y

1300 NEXT I

1310 IF C(P)-0 THEN GO TO 1390

1320 FOR 1-0 TO 360 STEP 5

1330 LET Y-qP)*COS |(P-1)*2'PI '1/360): LET Y-Y*70+95

1340 LET X- INT (1/2+20)

1350 PLOT X,Y

1360 NEXT I

1390 NEXT P

1392 GOSUB 1990

1395 IF INKEYS-" THEN GO TO 1395
1400 REM SUMM
1410 CLS

1415 PRINT AT 1,2;"SUMM"

1420 PLOT 20,95:DRAW 180, 0

1430 FOR 1-0 TO 360 STEP 5

1440 LET Y-0

1450 FOR P-1 TO NH

1460 LET Vy-{P-1)*2*PI 4/360

1470 LET Y*Y+S(P)*SIN W+C(P)* COS W

1480 NEXT P

1490 LET Y-INT (Y'70+95): LET X- INT (1/2+20)

1500 PLOT X,Y

1510 NEXT I

1520 LET X-180/NP

1530 LET Y-F(11*70+95

1535 LET XP-20

1540 PLOT XP,Y

1550 FOR 1-2 TO NP+1

1560 LET Y1 -Y: LET XI -XP

1570 LET XP-F(l)*70+95

1575 LET XP- INT (X'(l-l)+20.5)

1580 DRAW XP-X1,Y-Y1

1590 NEXT I

1600 GOSUB 1990

1610 IF INKEYS-" THEN GO TO 1610

1620 GO TO 20

1990 PRINT AT 20,2;"CONTINUE Г: RETURN

1999 STOP

2000 FOR 1-1 TO NP+1
2010 PRINT F(l)

2020 NEXT I
Программа 4.3 Программа "Анализ Фурье".




СОДЕРЖАНИЕ:
  1. Глава 1 - преобразование двоичного кода в десятичный, "монстр", движущийся "монстр", движение "монстра" по горизонтали, управление движением "монстра", траектория падающего тела, влияние начальной скорости, влияние горизонтальной начальной скорости, игровая программа "артиллерия", игровая программа "питон", "ламбада", альтернлтивнлязлписьмелодий, "электромузыкальный инструмент", программирование по инструкции "out", решениеквадратныхуравнений.
  2. Глава 3 - формирование больших букв, преобразование десятичных чисел в, числа с произвольным основанием от 2 до 16) системы счисления, преобразования чисел с произвольным основанием (от2 до 16) системы счисления в десятичные, бегущая строка, перевод арабских чисел в римские, система линейных уравнений с тремя неизвестными, формированиелистинга, сортировка, календарь-ежедневник, сортировка списка имен, картотека с поиском по ключевым словам, "вечный" календарь.


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Ярослав Велинский - рассказ "ЭПИДЕМИЯ".
О всём про всё - Тайна происхождения Homo Sapiens.
От авторов - Ну привет пиплы! Как ваши глаза? Не выпали от удивления? Да вы не ошиблись это я Powercom...
Реклама - Имеются в продаже черно-белые электронно-лучевые трубки 31ЛМ10Б-2.
От авторов - Hаррy nи Yеаr...

В этот день...   25 апреля