make_raw .LINK 1000 begin: mov #100,R3 call beep ; стартовый писк call rest_pal ; восстановление палитры call prep_pal ; подготовка линейной палитры - начальная позиция call prep_scr ; подготовка страницы mov #200,R3 call beep ; стартовый писк call show_pal ; call rest_pal ; восстановление палитры перед запуском halt ; подготовка палитры prep_pal: push R2 push R3 push R4 push R5 clr R2;mov #377,R2 ; номер генерируемой палитры mov #20000,R5 clr (R5)+ mov #7,(R5)+ mov #37,(R5) ; начальный синий call gen_pal ; собираем в R0 call savepal ; сохраняем mov #37,R3 ;begin ppb: ; 3 mov #7,R4 mov #20002,R5 ; зеленый pp31: dec (R5) ; уменьшаем call gen_pal ; собираем call savepal ; сохраняем sob R4,pp31 ; 4 mov R3,R4 mov #20000,R5 ; красный pp41: inc (R5) ; увеличиваем call gen_pal ; собираем call savepal ; сохраняем sob R4,pp41 ; 5 mov R3,R4 mov #20004,R5 ; синий pp51: dec (R5) ; уменьшаем call gen_pal ; собираем call savepal ; сохраняем sob R4,pp51 ;0 mov R3,R4 mov #20002,R5 ; зеленый pp0: inc (R5) ; увеличиваем call gen_pal ; собираем call savepal ; сохраняем sob R4,pp0 ; 1 mov R3,R4 mov #20000,R5 ; красный pp1: dec (R5) ; уменьшаем call gen_pal ; собираем call savepal ; сохраняем sob R4,pp1 ; 2 mov R3,R4 mov #20004,R5 ; синий pp2: inc (R5) ; увеличиваем call gen_pal ; собираем call savepal ; сохраняем sob R4,pp2 ; 3 mov R3,R4 mov #20002,R5 ; зеленый pp3: dec (R5) ; уменьшаем call gen_pal ; собираем call savepal ; сохраняем sob R4,pp3 ; 4 mov R3,R4 mov #20000,R5 ; красный pp4: inc (R5) ; увеличиваем call gen_pal ; собираем call savepal ; сохраняем sob R4,pp4 ; 5 mov R3,R4 mov #20004,R5 ; синий pp5: dec (R5) ; уменьшаем call gen_pal ; собираем call savepal ; сохраняем sob R4,pp5 pop R5 pop R4 pop R3 pop R2 ret savepal: mov R2,@#177234 mov R0,@#177236 inc R2 ret ; чистим 1ую видеостраницу ; затем рисуем полоски prep_scr: mov #40000,@#177662 ; 0-страница на экран mov #1330,@#177664 ; установим начало экрана mov #17400,@#177716 ; страницы экрана clr R0 mov #40000,R3 mov #400,R2 ps1$: mov #100,R1 ps2$: movb R0,(R3)+ sob R1,ps2$ inc R0 sob R2,ps1$ ret show_pal: mov #40000,@#177662 ; 0-страница на экран mov #3,@#177230 ; 256-цветов call gen_e0 mov #60,R3 call beep ; писк ret ; сдвиг палитры с конца в начало + запись одно нового значения в конец палитры ; новое в R0 shiftpal: push R0 push R1 push R2 push R4 push R5 mov #177234,R4 ; регистр номера палитры mov #177236,R5 ; регистр значения палитры mov #377,R1 ; объем палитры в сдвиге shp0: mov R1,(R4) ; номер палитры mov (R5),R2 ; считаем текущее значение mov R0,(R5) ; запишем предыдущее mov R2,R0 ; перенеем считанное в предыдущее sob R1,shp0 pop R5 pop R4 pop R2 pop R1 pop R0 ret ; генерация эффекта ; сборка RGB палитры из 20000 -R ; 20002 -G ; 20004 -B ; резульат в R0 gen_pal: push R1 push R2 push R3 mov #20000,R0 mov (R0)+,R1 ; R mov (R0)+,R2 ; G mov (R0), R3 ; B swab R1 asl R1 asl R1 swab R2 asr R2 asr R2 asr R2 clr R0 bis R1,R0 bis R2,R0 bis R3,R0 pop R3 pop R2 pop R1 ret ; генерация эффектов gen_e0: push R1 push R2 push R3 push R4 push R5 mov #20,R2 mov #20000,R5 mov #37,(R5)+ ; начальный красный clr (R5)+ clr (R5) call gen_pal ; собираем call shiftpal ; отображаем mov #37,R3 ; 0 geb: mov R3,R4 mov #20002,R5 ; зеленый ge0: inc (R5) ; увеличиваем call gen_pal ; собираем call shiftpal ; отображаем sob R4,ge0 ; 1 mov R3,R4 mov #20000,R5 ; красный ge1: dec (R5) ; уменьшаем call gen_pal ; собираем call shiftpal ; отображаем sob R4,ge1 ; 2 mov R3,R4 mov #20004,R5 ; синий ge2: inc (R5) ; увеличиваем call gen_pal ; собираем call shiftpal ; отображаем sob R4,ge2 ; 3 mov R3,R4 mov #20002,R5 ; зеленый ge3: dec (R5) ; уменьшаем call gen_pal ; собираем call shiftpal ; отображаем sob R4,ge3 ; 4 mov R3,R4 mov #20000,R5 ; красный ge4: inc (R5) ; увеличиваем call gen_pal ; собираем call shiftpal ; отображаем sob R4,ge4 ; 5 mov R3,R4 mov #20004,R5 ; синий ge5: dec (R5) ; уменьшаем call gen_pal ; собираем call shiftpal ; отображаем sob R4,ge5 ;br geb sob R2,geb ; количество циклов в демо pop R5 pop R4 pop R3 pop R2 pop R1 ret ;----------------------------------------------------------------------------------------------------------------- ; прочие процедурки beep: push R1 push R2 mov #200,R1 ; пищалка тональность в R3 b0: mov R3,R2 b1: sob R2,b1 mov #300,@#177716 mov R3,R2 b2: sob R2,b2 MOV #200,@#177716 sob R1,b0 pop R2 pop R1 ret rest_pal: push R0 push R1 push R2 push R3 push R4 mov #177234,R0 ; восстановление стандартной таблицы палитр mov #177236,R1 mov #paldata,R2 mov #337,R3 clr R4 rp0: mov R4,(R0) mov (R2)+,(R1) inc R4 sob R3,rp0 pop R4 pop R3 pop R2 pop R1 pop R0 ret paldata: .WORD 0 .WORD 20 .WORD 37 .WORD 1000 .WORD 1020 .WORD 1740 .WORD 1777 .WORD 40000 .WORD 40020 .WORD 41000 .WORD 41020 .WORD 61430 .WORD 76000 .WORD 76037 .WORD 77740 .WORD 77777 .WORD 0 .WORD 20 .WORD 37 .WORD 1000 .WORD 1020 .WORD 1740 .WORD 1777 .WORD 40000 .WORD 40020 .WORD 41000 .WORD 41020 .WORD 61430 .WORD 76000 .WORD 76037 .WORD 77740 .WORD 77777 .WORD 2041 .WORD 12245 .WORD 16347 .WORD 22451 .WORD 26553 .WORD 32655 .WORD 36757 .WORD 77777 .WORD 0 .WORD 6 .WORD 14 .WORD 23 .WORD 31 .WORD 37 .WORD 300 .WORD 306 .WORD 314 .WORD 323 .WORD 331 .WORD 337 .WORD 600 .WORD 606 .WORD 614 .WORD 623 .WORD 631 .WORD 637 .WORD 1140 .WORD 1146 .WORD 1154 .WORD 1163 .WORD 1171 .WORD 1177 .WORD 1440 .WORD 1446 .WORD 1454 .WORD 1463 .WORD 1471 .WORD 1477 .WORD 1740 .WORD 1746 .WORD 1754 .WORD 1763 .WORD 1771 .WORD 1777 .WORD 14000 .WORD 14006 .WORD 14014 .WORD 14023 .WORD 14031 .WORD 14037 .WORD 14300 .WORD 14306 .WORD 14314 .WORD 14323 .WORD 14331 .WORD 14337 .WORD 14600 .WORD 14606 .WORD 14614 .WORD 14623 .WORD 14631 .WORD 14637 .WORD 15140 .WORD 15146 .WORD 15154 .WORD 15163 .WORD 15171 .WORD 15177 .WORD 15440 .WORD 15446 .WORD 15454 .WORD 15463 .WORD 15471 .WORD 15477 .WORD 15740 .WORD 15746 .WORD 15754 .WORD 15763 .WORD 15771 .WORD 15777 .WORD 30000 .WORD 30006 .WORD 30014 .WORD 30023 .WORD 30031 .WORD 30037 .WORD 30300 .WORD 30306 .WORD 30314 .WORD 30323 .WORD 30331 .WORD 30337 .WORD 30600 .WORD 30606 .WORD 30614 .WORD 30623 .WORD 30631 .WORD 30637 .WORD 31140 .WORD 31146 .WORD 31154 .WORD 31163 .WORD 31171 .WORD 31177 .WORD 31440 .WORD 31446 .WORD 31454 .WORD 31463 .WORD 31471 .WORD 31477 .WORD 31740 .WORD 31746 .WORD 31754 .WORD 31763 .WORD 31771 .WORD 31777 .WORD 46000 .WORD 46006 .WORD 46014 .WORD 46023 .WORD 46031 .WORD 46037 .WORD 46300 .WORD 46306 .WORD 46314 .WORD 46323 .WORD 46331 .WORD 46337 .WORD 46600 .WORD 46606 .WORD 46614 .WORD 46623 .WORD 46631 .WORD 46637 .WORD 47140 .WORD 47146 .WORD 47154 .WORD 47163 .WORD 47171 .WORD 47177 .WORD 47440 .WORD 47446 .WORD 47454 .WORD 47463 .WORD 47471 .WORD 47477 .WORD 47740 .WORD 47746 .WORD 47754 .WORD 47763 .WORD 47771 .WORD 47777 .WORD 62000 .WORD 62006 .WORD 62014 .WORD 62023 .WORD 62031 .WORD 62037 .WORD 62300 .WORD 62306 .WORD 62314 .WORD 62323 .WORD 62331 .WORD 62337 .WORD 62600 .WORD 62606 .WORD 62614 .WORD 62623 .WORD 62631 .WORD 62637 .WORD 63140 .WORD 63146 .WORD 63154 .WORD 63163 .WORD 63171 .WORD 63177 .WORD 63440 .WORD 63446 .WORD 63454 .WORD 63463 .WORD 63471 .WORD 63477 .WORD 63740 .WORD 63746 .WORD 63754 .WORD 63763 .WORD 63771 .WORD 63777 .WORD 76000 .WORD 76006 .WORD 76014 .WORD 76023 .WORD 76031 .WORD 76037 .WORD 76300 .WORD 76306 .WORD 76314 .WORD 76323 .WORD 76331 .WORD 76337 .WORD 76600 .WORD 76606 .WORD 76614 .WORD 76623 .WORD 76631 .WORD 76637 .WORD 77140 .WORD 77146 .WORD 77154 .WORD 77163 .WORD 77171 .WORD 77177 .WORD 77440 .WORD 77446 .WORD 77454 .WORD 77463 .WORD 77471 .WORD 77477 .WORD 77740 .WORD 77746 .WORD 77754 .WORD 77763 .WORD 77771 .WORD 77777 .WORD 0 .WORD 20 .WORD 37 .WORD 1000 .WORD 1020 .WORD 1740 .WORD 1777 .WORD 40000 .WORD 40020 .WORD 41000 .WORD 41020 .WORD 61430 .WORD 76000 .WORD 76037 .WORD 77740 .WORD 77777 .WORD 0 .WORD 37 .WORD 1740 .WORD 76000 .WORD 0 .WORD 77740 .WORD 1740 .WORD 76000 .WORD 0 .WORD 1777 .WORD 37 .WORD 76037 .WORD 0 .WORD 1740 .WORD 1777 .WORD 77740 .WORD 0 .WORD 76037 .WORD 1777 .WORD 77777 .WORD 0 .WORD 77777 .WORD 77777 .WORD 77777 .WORD 0 .WORD 56000 .WORD 46000 .WORD 76000 .WORD 0 .WORD 57740 .WORD 47740 .WORD 77740 .WORD 0 .WORD 56037 .WORD 46037 .WORD 76037 .WORD 0 .WORD 47740 .WORD 46037 .WORD 46000 .WORD 0 .WORD 57740 .WORD 56037 .WORD 56000 .WORD 0 .WORD 1777 .WORD 77740 .WORD 76000 .WORD 0 .WORD 76000 .WORD 1740 .WORD 1777 .WORD 0 .WORD 1777 .WORD 77740 .WORD 77777 .WORD 0 .WORD 77740 .WORD 1740 .WORD 77777 .WORD 0 .WORD 1777 .WORD 1740 .WORD 77777 .WORD 20 .WORD 77777