Rev 437 | Rev 1913 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download
todo вернуть OSCALLS для перехвата клавиш, для этого в оси сделать хук для юзерского обработчика прерываний?перехват надо уже в юзерспейсе, а в системспейсе надо вызывать заданный обработчик (возможно, другой)щедулинга при этом нет, но есть выставление палитрыв WREND сейчас страница включается в 8000 (было в 0000), в 4000 экранв c000 скалерскалер для стен (64 масштаба в страничке - в The Board II было 14801 b высота 200 без пола):jr NC,$+4SET 5,H ;todo LD H,ADD A,L ;todo skip if L<=-40LD L,Ajr NC,$+3 ;todo skip if L<=-40INC H ;todo skip if L<=-40dup scrhgt ;или меньше для мелких масштабов[pop de] ;всего 32 шт (выигрыш по сравнению с 64*(ld a,(de):inc e) = 384t)ld (hl),e/dadd hl,bcedupjp (ix)скалер для спрайтов:...ld a,(de)cp IMPOSSIBLECOLOR ;нельзя or a, т.к. 0 должен быть чёрный, а чёрные пиксели есть в текстурахjr z,$+4and b/c ;затенениеld (hl),aadd hl,sp ;-40 или можно +40, прерывание затрёт SETPG32KHIGH, но должно само восстановить[inc d(или e)];49.5tнадо более компактные (и медленные) процедуры для больших масштабов, или одна процедура:drawspr00ld d,hld a,(de)exxcp e;IMPOSSIBLECOLORjr z,$+3ld (hl),aadd hl,bcexxadd hl,bcjp nc,drawspr00 ;флаги P/V и S не генерируются!;нельзя спрайт высотой больше экрана!