5 ' Программу составил Беленький Г. (IX класс) 10 DATA 01,00,00,11,00,00,3E,00,32,B3,FC :' Эта подпрограмма в машин- 20 DATA 32,B5,FC,32,F2,F3,F7,87,85,00,C9 :' ных кодах моделирует опе- 30 FOR I=0 TO 21:READ A$ :' ратор LINE (0,0)-(0,0),0 , 40 POKE &HD000+I,VAL("&h"+A$) :' который обнуляет неисполь- 50 NEXT I :' зуемые регистры видеопро- 60 DEFUSR=&HD000 :' цессора. 70 COLOR 15,0,0: SCREEN 8 80 FOR I=0 TO 63 90 DL=128-I*2+1 100 Z=USR(0) :'WY 110 VDP(36+1)=I:VDP(38+1)=I :' TW LMMV (закрашивает прямоугольную 120 VDP(40+1)=DL:VDP(42+1)=DL :' V область с логическим преобразова- 130 VDP(44+1)=I:VDP(45+1)=0 :' V нием цвета) 140 VDP(46+1)=&B10000100 :'W[ V 150 NEXT I ' ▌ :' V 160 :' ZWWWWWWWWWWWWWWWWWWWWWWWWWW[ 170 VDP(36+1)=0:VDP(38+1)=0 :'WY 180 VDP(44+1)=255 :' TW PSET (установка точки) 190 VDP(45+1)=0:VDP(46+1)=&B01010000 :'W[ 200 A$=INPUT$(1) 210 VDP(32+1)=0:VDP(34+1)=0 :'WY 220 VDP(36+1)=129:VDP(38+1)=0 :' V 230 VDP(40+1)=129:VDP(42+1)=129 :' TW HMMM (быстрая пересылка) 240 VDP(45+1)=0 :' V 250 VDP(46+1)=&B11010000 :'W[ 260 A$=INPUT$(1) 270 VDP(32+1)=130:VDP(34+1)=0 :'WY 280 VDP(36+1)=0:VDP(38+1)=0 :' V 290 VDP(40+1)=129:VDP(42+1)=129 :' TW LMMM(пересылка с логичес- 300 VDP(45+1)=0 :' V ким преобразованием) 310 VDP(46+1)=&B10010100 :'W[ V 320 A$=INPUT$(1):' ZWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW[ 330 FOR I=0 TO 255 340 VDP(36+1)=I:VDP(38+1)=0 :'WY 350 VDP(40+1)=128:VDP(42+1)=0 :' V 360 VDP(44+1)=I :' TW LINE (линия) 370 VDP(45+1)=&B00000001 :' V 380 VDP(46+1)=&B01110100 :'W[ 390 NEXT I 400 A$=INPUT$(1) 410 VDP(34+1)=0:VDP(36+1)=0 :'WY 420 VDP(38+1)=129:VDP(42+1)=83 :' TW YMMM(быстрая пересылка толь- 430 VDP(45+1)=0 :' V ко в Y-направлении) 440 VDP(46+1)=&B11100000 :'W[ 450 A$=INPUT$(1) 460 Z=USR(0) 470 VDP(36+1)=0:VDP(38+1)=0 :'WY 480 VDP(40+1)=255:VDP(42+1)=64 :' TW HMMV (закраска прямоуголь- 490 VDP(44+1)=0:VDP(45+1)=0 :' V ной области без ло- 500 VDP(46+1)=&B11000000 :'W[ гических операций) 510 OPEN "GRP:" AS #1: PRESET(0,0) 520 PRINT #1," А теперь найдем, на какой X- координате находится линия с цветом 128." 530 DATA 3E,00,F7,87,31,01,32,00,F0,C9 :'WY 540 FOR I=0 TO 9:READ A$ :' V 550 POKE &HE000+I,VAL("&h"+A$):NEXT I :' V 560 DEFUSR1=&HE000 :' V 570 VDP(32+1)=0:VDP(34+1)=128 :' V 580 VDP(44+1)=128:VDP(45+1)=0 :' V 590 VDP(46+1)=&B01100000 :' TW SRCH (поиск точки 600 POKE &HE001,2:A=USR1(0):A=PEEK(&HF000) :' V заданного цвета) 610 CE=(A AND &B00000001) :' V 620 IF CE=1 THEN 600 :' V 630 BD=(A AND &B00010000) :' V 640 IF BD=0 THEN 670 :' V 650 POKE &HE001,8:A=USR1(0):A=PEEK(&HF000) :'W[ 660 PRESET (100,30):PRINT #1, A;" 255-128=127 (!)" 670 A$=INPUT$(1) 680 CLS 690 PRESET (0,0): PRINT #1," Поставим точку "; 700 VDP(36+1)=128:VDP(38+1)=106 :'WY 710 VDP(44+1)=128:VDP(45+1)=0 :' TW PSET (ставит точку) 720 VDP(46+1)=&B01010000 :'W[ 730 PRINT #1,"и определим ее цвет." 740 VDP(32+1)=128:VDP(34+1)=106 :'WY 750 VDP(45+1)=0:VDP(46+1)=&B01000000 :' TW POINT(определяет цвет 760 POKE &HE001,7:Z=USR1(0):A=PEEK(&HF000) :'W[ заданной точки) 770 PRINT #1," Цвет точки :",A 780 A$=INPUT$(1) 790 CLS 800 PSET (0,0): PRINT #1,"Нарисуем ";CHR$(34);"картинку";CHR$(34);"." 810 Z=USR(0) 820 VDP(36+1)=110:VDP(38+1)=90 830 VDP(40+1)=30:VDP(42+1)=30 840 VDP(44+1)=255:VDP(45+1)=0 850 VDP(46+1)=&B10000000 860 Z=USR(0) 870 VDP(36+1)=115:VDP(38+1)=95 880 VDP(40+1)=20:VDP(42+1)=20 890 VDP(44+1)=7:VDP(45+1)=0 900 VDP(46+1)=&B10000000 910 PRINT #1,"И запомним ее в RAM начиная с адреса &hA800." 920 PRINT #1,"Подождите ! Процесс длится около д в у х минут." 930 I=&HA800 940 VDP(32+1)=110:VDP(34+1)=90 950 VDP(40+1)=30:VDP(42+1)=30 960 VDP(45+1)=0:VDP(46+1)=&B10100000 970 POKE &HE001,2:A=USR1(0):A=PEEK(&HF000) 980 TR=(A AND &B10000000) 990 IF TR=0 THEN 1020 1000 POKE &HE001,7:B=USR1(0):B=PEEK(&HF000) 1010 POKE I,B:I=I+1 1020 CE=(A AND &B00000001) 1030 IF CE=1 THEN 970 1040 PRINT #1,"Запомнили ..." 1050 A$=INPUT$(1) 1060 CLS 1070 PRESET (0,0):PRINT #1,"Очистили экран." 1080 PRINT#1,"Теперь восстановим рисунок из памяти в нормальном виде." 1090 I=&HA801 1100 VDP(36+1)=110:VDP(38+1)=90 1110 VDP(40+1)=30:VDP(42+1)=30 1120 VDP(44+1)=256+NOT(PEEK(&HA800)) 1130 VDP(45+1)=0:VDP(46+1)=&B11110000 1140 POKE &HE001,2:A=USR1(0):A=PEEK(&HF000) 1150 CE=(A AND &B00000001) 1160 IF CE=0 THEN 1210 1170 TR=(A AND &B10000000) 1180 IF TR=0 THEN 1140 1190 I=I+1:VDP(44+1)=PEEK(I) 1200 GOTO 1140 1210 A$=INPUT$(1) 1220 PRINT #1,"А теперь в инвертированном ..." 1230 I=&HA801 1240 VDP(36+1)=110:VDP(38+1)=90 1250 VDP(40+1)=30:VDP(42+1)=30 1260 VDP(44+1)=256+NOT(PEEK(&HA800)) 'Маленькая хитрость! 1270 VDP(45+1)=0:VDP(46+1)=&B10110100 1280 POKE &HE001,2:A=USR1(0):A=PEEK(&HF000) 1290 CE=(A AND &B00000001) 1300 IF CE=0 THEN 1350 1310 TR=(A AND &B10000000) 1320 IF TR=0 THEN 1280 1330 I=I+1:VDP(44+1)=PEEK(I) 1340 GOTO 1280 1350 A$=INPUT$(1)