~rabbits/left

0bad39bb4841e51a6d0f9604a20b4a3f2d898571 — Devine Lu Linvega a month ago 8f9890e
Housekeeping
2 files changed, 63 insertions(+), 65 deletions(-)

M src/left.tal
M src/manifest.tal
M src/left.tal => src/left.tal +61 -63
@@ 61,7 61,7 @@

BRK

@meta 00 &body
@meta 00
	( name ) "Left 0a
	( details ) "A 20 "Text 20 "Editor 0a
	( author ) "By 20 "Hundred 20 "Rabbits 0a


@@ 383,9 383,9 @@ JMP2r

	LITr -scroll/y LDZ2r
	get-eof .scroll/addr LDZ2
	&while
	&w
		LDAk #0a NEQ JMP INC2r
		INC2 GTH2k ?&while
		INC2 GTH2k ?&w
	POP2 POP2
	STH2r



@@ 430,10 430,10 @@ JMP2r
	STH2
	LIT2r 0000
	;text
	&while
	&w
		EQU2kr STHr ?&end
		LDAk #0a NEQ JMP INC2r
		INC2 LDAk ?&while
		INC2 LDAk ?&w
	&end
	POP2r POP2r



@@ 443,10 443,10 @@ JMP2r

	LIT2r 0000
	DUP2 find-line-start
	&loop
	&l
		EQU2k ?&end
		get-width STH2 ADD2r
		INC2 GTH2k ?&loop
		INC2 GTH2k ?&l
	&end
	POP2 POP2
	STH2r


@@ 468,9 468,9 @@ JMP2r

	LIT2r 0000
	;text
	&loop
	&l
		LDAk #0a NEQ JMP INC2r
		INC2 GTH2k ?&loop
		INC2 GTH2k ?&l
	POP2 POP2
	STH2r



@@ 628,13 628,31 @@ JMP2r

( .. )

@is-selected ( addr* -- addr* bool )

	DUP2 .selection/from LDZ2 #0001 SUB2 GTH2 STH
	DUP2 .selection/to LDZ2 LTH2 STHr AND

JMP2r

@is-rune ( addr* -- bool )

	;walk-color/c LDA ?&skip
	.textarea/highlight LDZ ?&skip
	#0001 SUB2 LDA2
		;runes cndx INC2 ORA
		SWP #21 LTH AND

JMP2r
	&skip POP2 #00 JMP2r

( find )

@find-line-start ( addr* -- addr* )

	&while
	&w
		DUP2 ;text EQU2 ?&end
		#0001 SUB2 LDAk #0a NEQ ?&while
		#0001 SUB2 LDAk #0a NEQ ?&w
	INC2
	&end



@@ 644,32 662,32 @@ JMP2r

	LDAk #0a EQU ?&skip
	INC2k LDA #00 EQU ?&skip
	&while
		INC2 LDAk #0a NEQ ?&while
	&w
		INC2 LDAk #0a NEQ ?&w
	&skip

JMP2r

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

	&while
		#0001 SUB2 LDAk #20 GTH ?&while
	&w
		#0001 SUB2 LDAk #20 GTH ?&w

JMP2r

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

	&while
		INC2 LDAk #20 GTH ?&while
	&w
		INC2 LDAk #20 GTH ?&w

JMP2r

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

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

JMP2r


@@ 707,11 725,11 @@ JMP2r
&when-search ( -- )

	get-eof ;text
	&loop
	&l2
		;search OVR2 sseg #00 EQU ?&no-find
			DUP2 add-marker
			&no-find
		INC2 GTH2k ?&loop
		INC2 GTH2k ?&l2
	POP2 POP2
	!draw-navbar



@@ 746,9 764,9 @@ JMP2r

	STH2
	.nav/len LDZ #00
	&loop
	&l
		DUP get-marker #0001 SUB2 STH2kr GTH2 ?&end
		INC GTHk ?&loop
		INC GTHk ?&l
	&end
	NIP #01 SUB
	POP2r


@@ 806,11 824,11 @@ JMP2r
	#0020 .Screen/y DEO2
	#15 .Screen/auto DEO
	get-eof INC2 .scroll/addr LDZ2
	&loop
	&l
		draw-token
		.Screen/y DEI2 .Screen/height DEI2 #0010 SUB2 GTH2 ?&end
		LDAk #00 EQU ?&end
		GTH2k ?&loop
		GTH2k ?&l
	&end
	POP2 POP2
	!draw-scrollbar


@@ 828,25 846,18 @@ JMP2r
	draw-rune

	&w
		,&is-selected JSR STH
		is-selected STH
		LDAk STH2kr #0d ROT ROT [ JMP SWP POP ] draw-ufx POPr
		INC2 LDAk #20 GTH ?&w
	( reset ul ) #00 ;draw-ufx/ul STA
	( reset color ) POPr
	&w2
		,&is-selected JSR STH
		is-selected STH
		LDAk #0d01 STHr [ JMP SWP POP ] draw-ufx
		INC2 LDAk #01 SUB #20 LTH ?&w2

JMP2r

&is-selected ( addr* -- addr* bool )

	DUP2 .selection/from LDZ2 #0001 SUB2 GTH2 STH
	DUP2 .selection/to LDZ2 LTH2 STHr AND

JMP2r

@draw-rune ( addr* -- addr* )

	LDAk ;runes cndx INC2k ORA ?&continue


@@ 854,7 865,7 @@ JMP2r
		&continue
	( set color )
	SWP2
	draw-token/is-selected #0d01 ROT [ JMP SWP POP ]
	is-selected #0d01 ROT [ JMP SWP POP ]
		;draw-ufx/color STA
	SWP2
	( draw glyph )


@@ 940,9 951,9 @@ JMP2r
	( bg )
	;checkered-icn .Screen/addr DEO2
	.scrollbar/height LDZ2 #03 SFT2 NIP #00
	&loop
	&l
		#04 .Screen/sprite DEO
		INC GTHk ?&loop
		INC GTHk ?&l
	POP2
	( fg )
	;state-icns .Screen/addr DEO2


@@ 963,9 974,9 @@ JMP2r
	#01 .Screen/auto DEO
	;dashed-icn .Screen/addr DEO2
	.Screen/width DEI2 #03 SFT2 NIP #00
	&loop
	&l
		#05 .Screen/sprite DEO
		INC GTHk ?&loop
		INC GTHk ?&l
	POP2

JMP2r


@@ 982,13 993,13 @@ JMP2r
	#15 .Screen/auto DEO
	.selection/from LDZ2 get-current-marker ,&sel STR
	.nav/len LDZ #00 EQUk ?&when-empty
	&loop
	&l
		#0010 .Screen/x DEO2
		#00 OVR #40 SFT2 #0020 ADD2 .Screen/y DEO2
		DUP get-marker INC2 LDA LIT "| EQU #03 MUL STH
		DUP [ LIT &sel $1 ] EQU #30 SFT STHr ADD INC ;draw-chr/color STA
		DUP get-marker draw-marker POP2
		INC GTHk ?&loop
		INC GTHk ?&l
	POP2

JMP2r


@@ 1018,9 1029,9 @@ JMP2r

	LIT2r 0000
	LDAk #00 EQU ?&skip
	&while
	&w
		LDAk #0000 ROT ;font ADD2 LDA STH2 ADD2r
		INC2 LDAk ?&while
		INC2 LDAk ?&w
		&skip
	POP2
	STH2r


@@ 1036,9 1047,9 @@ JMP2r

	LDAk #00 EQU ?&skip
	#15 .Screen/auto DEO
	&while
	&w
		LDAk draw-chr
		INC2 LDAk ?&while
		INC2 LDAk ?&w
	&skip
	INC2



@@ 1057,10 1068,10 @@ JMP2r

	LDAk #00 EQU ?&skip
	find-prev-spacer INC2
	&while
	&w
		.Screen/x DEI2 #0078 GTH2 ?&truncate
		LDAk draw-chr
		INC2 LDAk #20 GTH ?&while
		INC2 LDAk #20 GTH ?&w
	&skip
	INC2



@@ 1105,20 1116,6 @@ JMP2r
	JMP2r

(
@|helpers )

@is-rune ( addr* -- bool )

	;walk-color/c LDA ?&skip
	.textarea/highlight LDZ ?&skip
	#0001 SUB2 LDA2
		;runes cndx #ffff NEQ2
		SWP #21 LTH AND

JMP2r
	&skip POP2 #00 JMP2r

(
@|document )

@file-new ( -- )


@@ 1177,7 1174,8 @@ JMP2r

( .. )

( snarf )
(
@|snarf )

@snarf-txt ".snarf $1



@@ 1238,7 1236,7 @@ JMP2r
@msfl ( b* a* len* -- ) STH2 SWP2 EQU2k ?&e &l DUP2k STH2kr ADD2 LDA ROT ROT STA INC2 GTH2k ?&l POP2 POP2 &e POP2r JMP2r
@msfr ( b* a* len* -- ) STH2 EQU2k ?&e &l DUP2 LDAk ROT ROT STH2kr ADD2 STA #0001 SUB2 LTH2k ?&l POP2 POP2 &e POP2r JMP2r
@sseg ( a* b* -- f ) STH2 &l LDAk LDAkr STHr NEQ ?&e INC2k LDA #00 EQU ?&e INC2 INC2r !&l &e LDA LDAr STHr EQU JMP2r
@mcpy ( src* dst* len* -- ) SWP2 STH2 OVR2 ADD2 SWP2 &loop LDAk STH2kr STA INC2r INC2 GTH2k ?&loop POP2 POP2 POP2r JMP2r
@mcpy ( src* dst* len* -- ) SWP2 STH2 OVR2 ADD2 SWP2 &l LDAk STH2kr STA INC2r INC2 GTH2k ?&l POP2 POP2 POP2r JMP2r
@sclr ( str* -- ) &w STH2k #00 STH2r STA INC2 LDAk ?&w POP2 JMP2r

@skey ( key zbuf30 -- proc )

M src/manifest.tal => src/manifest.tal +2 -2
@@ 278,11 278,11 @@ JMP2r
	( mod )
	SWP STH
	#0800
	&loop
	&l
		STHkr OVR SFT #01 AND #00 EQU ?&no-button
			#00 OVR ;&buttons ADD2 LDA ;&buf sput
			&no-button
		INC GTHk ?&loop
		INC GTHk ?&l
	POP2
	( mix )
	DUP #00 NEQ STHr #00 NEQ #0101 NEQ2 ?&no-mod