~rabbits/ornithologics

ee2b2c3765a5ba8e44c828a7717c667202819869 — neauoire 2 years ago f6f159f
mockingbird, thrush, warbler & kestrel
2 files changed, 84 insertions(+), 37 deletions(-)

M etc/cons.tal
M src/ornithologics.tal
M etc/cons.tal => etc/cons.tal +48 -21
@@ 5,18 5,18 @@
|0100

	;nil JSR2
		;cat ;cons JSR2
			;dog ;cons JSR2
				;owl ;cons JSR2
		;z ;cons JSR2
			;y ;cons JSR2
				;x ;cons JSR2
	;nil JSR2
		;ant ;cons JSR2
			;bat ;cons JSR2
				;cow ;cons JSR2
		;c ;cons JSR2
			;b ;cons JSR2
				;a ;cons JSR2
	;nil JSR2
		SWP2 ;cons JSR2
			SWP2 ;cons JSR2
	;echo JSR2
	

	#0a18 DEO
	#010e DEO
	#010f DEO


@@ 43,10 43,15 @@ JMP2r

JMP2r

@eval ( list* -- )
@pop ( list* -- list* )

	&w LDA2k JSR2 INC2 INC2 LDA2 LDA2k ;nil NEQ2 ,&w JCN
	POP2
	INC2 INC2 LDA2

JMP2r

@dup ( list* -- list* )

	LDA2k ,cons JSR

JMP2r



@@ 75,17 80,39 @@ JMP2r

	#2818 DEO #2018 DEO
	&w
		LDA2k INC2 INC2 LDA2 ;nil EQU2 ,&value JCN
			( list ) LDA2k ;echo JSR2 ,&resume JMP
			&value LDA2k LDA2 ,print JSR #2018 DEO
		LDA2k INC2 INC2 LDA2 ;nil EQU2 ,&fn JCN
			( list )
			LDA2k ;echo JSR2 ,&resume JMP
			&fn
			LDA2k LDA2 ,print JSR #2018 DEO
		&resume
		INC2 INC2 LDA2
		LDA2k ;nil NEQ2 ,&w JCN
		INC2 INC2 LDA2 LDA2k ;nil NEQ2 ,&w JCN
	POP2
	#2918 DEO #2018 DEO

JMP2r

@eval ( list* -- )
	
	DUP2 ;print JSR2 #0a18 DEO
	&w
		LDA2k INC2 INC2 LDA2 ;nil EQU2 ,&fn JCN
			( list )
			LDA2k ;eval JSR2 ,&resume JMP
			&fn
			LDA2k LDA2 OVR #07 SFT JMP JSR2k POP2
		&resume
		INC2 INC2 LDA2 LDA2k ;nil NEQ2 ,&w JCN
	POP2

JMP2r

@step ( list* -- )

	INC2k INC2 LDA2 SWP2 LDA2 LDA2 JSR2

JMP2r

@print ( short* -- )

	SWP ,&byte JSR


@@ 96,11 123,11 @@ JMP2r

( some functions )

@cat 0000 :nil
@dog 0001 :nil
@bat 0002 :nil
@ant 0003 :nil
@owl 0004 :nil
@cow 0005 :nil
@x 8000 :nil
@y 8001 :nil
@z 8002 :nil
@a 8003 :nil
@b 8004 :nil
@c 8005 :nil

@memory
\ No newline at end of file

M src/ornithologics.tal => src/ornithologics.tal +36 -16
@@ 8,13 8,8 @@
		;z ;cons JSR2
			;y ;cons JSR2
				;x ;cons JSR2
	;nil JSR2
		;c ;cons JSR2
			;b ;cons JSR2
				;a ;cons JSR2
	;nil JSR2
		SWP2 ;cons JSR2
			SWP2 ;cons JSR2
					;k ;cons JSR2
	;step JSR2
	;echo JSR2

	#0a18 DEO


@@ 131,19 126,44 @@ JMP2r
@c 8005 :nil

@m :mockingbird :nil
@t :thrush :nil
@w :warbler :nil
@k :kestrel :nil

( Bekimet )
( Bekimet Forest )

@mockingbird ( list* fn* -- )
@mockingbird ( list* -- list* )

	OVR2
		DUP2 INC2 INC2 LDA2 LDA2 LDA2 ;print JSR2 #0a18 DEO
	;dup JSR2

		DUP2 INC2 INC2 LDA2 INC2 INC2 LDA2 LDA2 LDA2 ;print JSR2 #0a18 DEO
	POP2
	( OVR2 INC2 INC2 LDA2 INC2 INC2 LDA2 LDA2 ;print JSR2 )
	
JMP2r

@thrush ( list* -- list* )

	LDA2k STH2 ;pop JSR2
	LDA2k STH2 ;pop JSR2
	SWP2r
	STH2r ;cons JSR2
	STH2r ;cons JSR2

JMP2r

( Becekew Forest )

@warbler ( list* -- list* )

	LDA2k STH2 ;pop JSR2
	;dup JSR2
	STH2r ;cons JSR2

JMP2r

@kestrel ( list* -- list* )

	LDA2k STH2 ;pop JSR2
	;pop JSR2
	STH2r ;cons JSR2

JMP2r

@memory
\ No newline at end of file
@memory