0 constant shear-num 1 constant shear-denom : shear? (s -- flag ) shear-num 0<> ; \ : shear-amount (s line# -- delta.x ) \ display-height 2/ - shear-num * shear-denom / \ ; : shear-amount (s source.line# -- delta.x ) source-height 2/ - shear-num * shear-denom / ; : set-shear (s num denom -- ) dup shear-denom <> -rot is shear-denom dup shear-num <> swap is shear-num or if regenerate-display? on then ; 1 2 set-shear : set-compressed-scan source.U source.V UVsubsector-defaults logmag logmag mag-xy-defaults scan-index scan-format display.U log esc! display.U log esw! 0 est! 0 sm! scan-perm ; : generate-shear-xds set-compressed-scan kick #modules/display 0 ?do select i logmag 0> if module else module' then display.V 0 ?do i cell-shrink cell-zoom */ j source.V * + shear-amount kick dup x scan-io Xbuf j display.V * i + display-height part byte-read length 2* reglen ! kick negate x loop loop select all ; : generate-shear-display display? not if exit then save-defaults save-sector-dims save-user-regs select all full-space subcell0? if ?show-activate-subcells then display site site-src site generate-shear-xds select all display 0 map! ?subcell0 restore-user-regs restore-sector-dims restore-defaults ; : regenerate-shear-display stop ( don't make changes while displaying! ) "" (display-step "redefine-step generate-shear-display end-step "" (display-step find drop is display-step ; : ?regenerate-shear-display step regenerate-display? @ if regenerate-shear-display regenerate-display? off then ; : (show-shear) ?regenerate-shear-display before-display display-step ?image>xmon after-display ; this is show