	macro POPER
	pop af
	pop bc
	pop de
	pop ix
	pop iy
	exx
	pop bc
	pop de
	endm
	
	macro PUSHER
	push de
	push bc
	exx
	push iy
	push ix
	push de
	push bc
	push af
	endm

scrollcode
       dup 7
	ld sp,hl
	inc h
	POPER
	ld sp,hl
	inc h
	PUSHER
       edup
	ld sp,hl
	rrc h
	POPER
	ld sp,hl
	rrc h
	PUSHER
	
       dup 3 ;attr
	ld sp,hl
	dec h
	POPER
	ld sp,hl
	dec h
	PUSHER
       edup
	ld sp,hl
	ld a,l
	add a,14
	ld l,a
	POPER
	ld sp,hl
	ld a,l
	add a,14
	ld l,a
	PUSHER ;attr
	
       dup 3 ;attr
	ld sp,hl
	dec h
	POPER
	ld sp,hl
	dec h
	PUSHER
       edup
	ld sp,hl
	rlc h
	POPER
	ld sp,hl
	rlc h
	PUSHER ;attr
	
       dup 7
	ld sp,hl
	dec h
	POPER
	ld sp,hl
	dec h
	PUSHER
       edup
	ld sp,hl
	POPER
	ld sp,hl
	PUSHER
scrollcodeqjp=$+1
	jp 0

scrollerup0
;de=0x4010
	ex de,hl
	exx
	ld hl,scrollerup1
	ld (scrollcodeqjp),hl
	ld hl,0x4022
	jp scrollcode
scrollerup1
	ld hl,0x4030
	exx
	ld hl,scrollerup2
	ld (scrollcodeqjp),hl
	ld hl,0x4042
	jp scrollcode
scrollerup2
	ld hl,0x4050
	exx
	ld hl,scrollerup3
	ld (scrollcodeqjp),hl
	ld hl,0x4062
	jp scrollcode
scrollerup3
	jp prsprq ;надо попасть туда в ON_INT+13990t, а мы попали в ON_INT+14286t
	;93t пропало на ld hl...jp (hl):ex de,hl вместо ld hl
	;111t пропало на push...push
	;20t на ld (),sp
	;один jp scrollcode можно убрать
	;jp prsprq можно убрать
	;но где взять ещё 52t???
	;можно убрать один ld hl:ld (),hl = -26t
	;можно два остальных заменить на ld a:ld (),a = -12t
	;где взять ещё 14t??? дублировать scrollcode эквивалентно тому, чтобы сделать неполную его версию
	;сделать один из трёх входов в scrollcode неполный? остальное дорисовать после мультиколора? будет заметно! или на прошлом фрейме
	;можно один ld:ld () сделать ld hl,:ld (hl),l, а другой ld (hl),h = -6t
	;но реально 14t входит в диапазон терпимости мультиколора (0..23, минус 3 на случайный halt), даже остаётся 6t
	;но как сделать резкую смену обработчика прерываний? ещё одна таблица прерываний??? или начать прерывание с jp (hl) = +4t
	
	
;        ld sp,hl
;        exx
;         pop bc <--------------- b=scroller/256
;         ld a,c
;         out (0xfd),a ;-1t
;        pop hl ;gfx <------------ должно указывать на dw scroller
;        pop de ;scr
;        ld sp,hl
;        pop hl ;l = f(hgt, x&4) <----------- scroller
;         ld h,b ;f(yphase)
;        jp (hl) ;f(yphase,sprhgt)

scrollupscript
	dw PAGEOR+0+(scrollerup0&0xff00)
	dw pscrollerup0
	dw 0x4010
pscrollerup0
	dw scrollerup0
