~rabbits/left

3cc00215dc1bccc54dc67616ee9fbe71e5d403b0 — neauoire 4 months ago 26b4d40
Faster marker finding
1 files changed, 8 insertions(+), 9 deletions(-)

M src/left.tal
M src/left.tal => src/left.tal +8 -9
@@ 239,8 239,8 @@ BRK
	#04 SFT
	[ #01 ] NEQk NIP ,&no-au JCN ROT ROT ;find-prev-marker JMP2 &no-au
	[ #02 ] NEQk NIP ,&no-ad JCN ROT ROT ;find-next-marker JMP2 &no-ad
	[ #04 ] NEQk NIP ,&no-al JCN ROT ROT ;find-prev-special JMP2 &no-al
	[ #08 ] NEQk NIP ,&no-ar JCN ROT ROT ;find-next-special JMP2 &no-ar
	[ #04 ] NEQk NIP ,&no-al JCN ROT ROT ;find-prev-spacer JMP2 &no-al
	[ #08 ] NEQk NIP ,&no-ar JCN ROT ROT ;find-next-spacer JMP2 &no-ar
	ROT ROT

JMP2r


@@ 494,7 494,7 @@ JMP2

@select-word ( addr* -- )

	;find-prev-special JSR2 INC2 DUP2 ;find-next-special JSR2 ,select-range ( .. )
	;find-prev-spacer JSR2 INC2 DUP2 ;find-next-spacer JSR2 ,select-range ( .. )

JMP



@@ 640,23 640,22 @@ JMP2r

JMP2r

@find-prev-special ( addr* -- addr* )
@find-prev-spacer ( addr* -- addr* )

	&while
		#0001 SUB2 LDAk #20 GTH ,&while JCN

JMP2r

@find-next-special ( addr* -- addr* )
@find-next-spacer ( addr* -- addr* )

	&while
		INC2 LDAk #20 GTH ,&while JCN

JMP2r

@find-above-marker ( addr* -- addr* )
@find-first-marker ( addr* -- addr* )

	#0002 SUB2
	&while
		DUP2 ;text LTH2 ,&end JCN
		#0001 SUB2 LDA2k #0a LIT "@ NEQ2 ,&while JCN


@@ 692,7 691,7 @@ JMP2

	#00 .nav/len STZ
	;search LDA ,&when-search JCN
	;get-eof JSR2 .scroll/addr LDZ2 ;find-above-marker JSR2
	;get-eof JSR2 .scroll/addr LDZ2 ;find-first-marker JSR2
	&l
		LDA2k #0a LIT "@ NEQ2 ,&continue JCN
			INC2 DUP2 ,add-marker JSR


@@ 711,7 710,7 @@ JMP2
	;get-eof JSR2 ;text
	&loop
		;search OVR2 ;sseg JSR2 #00 EQU ,&no-find JCN
			DUP2 ;find-prev-special JSR2 INC2 ,add-marker JSR
			DUP2 ;find-prev-spacer JSR2 INC2 ,add-marker JSR
			&no-find
		INC2 GTH2k ,&loop JCN
	POP2 POP2