//#;Rev: 2024.01.20	(assembly ok: as dict2.s)	by Donald 
//#Wayne Stoner
//		.thumb
//		.syntax unified
//		.org 0
//		.hword 0x20001000

dict2_start:	// 2 valid characters, character code, priority, zero termination
   //		(To turn priority 0-15 into ascii: use "0123456789:;<=>?" 0x30-0x3f)
   // <=L,>=G,===,!=N,:=:,=:#,+=X,-=X,*=X,/=X,%=X,<<X,>>X,++X,=$K,+$J@$Q,:$S,0x00
  .asciz "<=L6>=G6===7!=N7=:#>:=:>+=X>-=X>*=X>/=X>%=X><<X>>>X>++X>=$K>+$J>@$Q>:$S>"

						// ***** add: <$P2  >$R2 *****

dict1_start:	// valid single-character list, priority, zero tremination
// (extra 20)	.asciz "@2+4-4*3/3%301112131415161718191&8|:^9!2~2<6>6(?)?,??>"
		.asciz "@2+4-4*3/3%3&8|:^9!2~2<6>6(?)?,??>"

		// link pointer
dict_start:	// "source_text" (asciiZ)
		// priority, "bytecode"
name_false:	.hword name_true
		.asciz "F"
		.byte 0x31,0x30	//"0"
name_true:	.hword name_abs	//name_and
		.asciz "T"
		.byte 0x31,0x54	//"T"
name_abs:	.hword name_n	//name_shl
		.asciz "abs"
		.byte 0x32,0x41	//"A"
name_n:		.hword name_do
		.asciz "n"
		.byte 0x31,0x6e	//"n"
name_do:	.hword name_until
		.asciz "do"
		.byte 0x31,0x5b	//"["
name_until:	.hword name_if
		.asciz "until"
		.byte 0x3e,0x5d	//"]"	(priority "16")
name_if:	.hword name_then
		.asciz "if"
		.byte 0x80,0x96	//undefined
name_then:	.hword name_else
		.asciz "then"
		.byte 0x81,0x97
name_else:	.hword name_endif
		.asciz "else"
		.byte 0x82,0x5C	// 5C: "\"
name_endif:	.hword name_for
		.asciz "endif"
		.byte 0x83,0x5D		// "endif",0,0x83,"]"
name_for:	.hword name_to
		.asciz "for"
		.byte 0x40,0x98		//;undefined
name_to:	.hword name_next
		.asciz "to"
		.byte 0x40,0x99		//;undefined
name_next:	.hword name_rnd
		.asciz "next"
		.byte 0x40,0x9a		//;undefined
name_rnd:	.hword name_sq
		.asciz "rnd"
		.byte 0x31,0x72	//"r"
name_sq:	.hword name_sqr
		.asciz "sq"
		.byte 0x32,0x58	//"X"
name_sqr:	.hword name_crlf
		.asciz "sqr"
		.byte 0x32,0x73	//"s"
name_crlf:	.hword name_print
		.asciz "crlf"
		.byte 0x36,0x0a
name_print:	.hword name_byte	// 2+2+2 = 6 bytes freed up
		.asciz "print"		// (hword + "?0" + 14, 0x3f
		.byte 0x3e,0x3f	//"?"
name_byte:	.hword name_half
		.asciz "byte"
		.byte 0x3e,0x42	//"B"
name_half:	.hword name_word
		.asciz "half"
		.byte 0x3e,0x48	//"H"
name_word:	.hword name_char
		.asciz "word"
		.byte 0x3e,0x57	//"W"
name_char:	.hword name_input	//;single character output
		.asciz "char"
		.byte 0x3e,0x63	//"C"
name_input:	.hword name_key
		.asciz "input"		// undefined?
		.byte 0x31,0x9b
name_key:	.hword name_prints
		.asciz "key"
		.byte 0x31,0x6b	//"k"
name_prints:	.hword name_inputs
		.asciz "print$"
		.byte 0x3e,0x4f	//"O"
name_inputs:	.hword name_lefts	//name_loads
		.asciz "input$"
		.byte 0x31,0x49	//"I"		// 0??
name_lefts:	.hword name_rights
		.asciz "left$"
		.byte 0x32,0x50	//"P"
name_rights:	.hword name_join
		.asciz "right$"
		.byte 0x32,0x52	//"R"
name_join:	.hword name_length
		.asciz "join$"
		.byte 0x34,0x4a	//"J"
name_length:	.hword name_drop
		.asciz "length"
		.byte 0x32,0x4d	//"M"	//#;measure
name_drop:	.hword name_chrs
		.asciz "drop$"
		.byte 0x3e,0x7f	//"-"
name_chrs:	.hword name_main
		.asciz "chr$"
		.byte 0x32,0x40	//"@"	//#;undefined *****************
name_main:	.hword name_err
		.asciz "main"
		.byte 0x89,0x9c
name_err:	.hword name_debug
		.asciz "err"	// <error> message	//broken
		.byte 0x3f,0xc7 //80h+G(ctrl bell)
name_debug:	.hword name_test
		.asciz "test"				//broken
		.byte 0x3f,0xca //80h+J(Ti)
name_test:	.hword name_wait
		.asciz "debug"				//works
		.byte 0x3f,0xcb //80h+K(Logos debug)
name_wait:	.hword name_exec
		.asciz "wait"
		.byte 0x3e,0x10	//
name_exec:	.hword name_comp
		.asciz "exec$"
		.byte 0x3e,0x45	//E(xecute)
name_comp:	.hword name_pinL
		.asciz "comp$"
		.byte 0x32,0x5A	//Z compile
name_pinL:	.hword name_pinH
		.asciz "pinLo"
		.byte 0x3e,0xcc //80h+L(ow)
name_pinH:	.hword name_ledon
		.asciz "pinHi"
		.byte 0x3e,0xc8 //80h+H(igh)
name_ledon:	.hword name_ledoff
		.asciz "ledon"
		.byte 0x3e,0x04 //
name_ledoff:	.hword name_end
		.asciz "ledoff"
		.byte 0x3e,0x05 //
name_end:	.hword 0
		.align 2
		
