MAIN START
;--}FSԖڂ̃f[^Ƃ#0444}B
	LAD GR0,#0444 ; f[^
	LAD GR1,ROOT
	LAD GR2,4 ; n=4 Ԗڂɑ}B
	LAD GR3,0 ;}
    CALL LPROC
;--폜F3Ԗڂ̃f[^폜B
	LAD GR1,ROOT
	LAD GR2,3 ; n=3 Ԗڂ폜B
	LAD GR3,1 ;폜
	CALL LPROC
	RET
ROOT DC DATA
DATA DC DATB
	DC #0AAA
DATB DC DATC
	DC #0BBB
DATC DC DATD
	DC #0CCC
DATD DC DATE
	DC #0DDD
DATE DC DATF
	DC #0EEE
DATF DC #0000
	DC #0000
	END
;---------------
LPROC START
	RPUSH
	LD GR4,GR2  ;GR4 <-- n
LP LD GR2,0,GR1 ;̗vfǂ
	JZE FIN    ; n > N ?
	SUBA GR4,=1
	JZE NEXT   ;vf NɒBH
	LD GR1,GR2 ;aG ̃f[^̃AhX
	JUMP LP
	;---------------
NEXT LD GR3,LTBL,GR3
	JUMP 0,GR3 ;w肳ꂽփWv
LINS LD GR4,GR2
	CALL EGET ;GR2<--}vf̐擪AhXԂ
	ST GR2,0,GR1 ;bE
	ST GR4,0,GR2 ;}vf̂Pڂݒ
	ST GR0,1,GR2
	JUMP FIN
	;----------------------
LDEL LD GR4,0,GR2 ;GR4<--vf n+1̐擪AhX
	ST GR4,0,GR1 ;vfn-1̂PڂĐݒ
	CALL EFREE   ;폜ꂽvfn̗̈
FIN RPOP
	RET
LTBL DC LINS ;̕AhXe[u
	DC LDEL
	END
;----------------
EGET START
	RPUSH
	LAD GR1,EXDAT
	LAD GR3,0
LOOP LD GR4,EXDAT,GR3
	JZE EXIT
	SUBL GR4,=#FFFF
	JZE SPARI
	LAD GR3,2,GR3
	JUMP	LOOP
SPARI LAD GR2,EXDAT,GR3
	ST GR2,RETGR2
	RPOP
	LD GR2,RETGR2
EXIT	RET
RETGR2 DS 1
;LǗ̈
EXDAT DC #FFF0
	DC 0
	DC #FFFF
	DC 0
	DC #FFFF
	DC 0
	DC #FFFF
	DC 0
FIN	DC #0000
	DC 0
	END
;----------------
;폜vf̃AhXGR2ɓEFREEĂ΂B
;폜vf̐擪AhX#FFFFi[ĉB
EFREE START
	LAD GR0,#FFFF
	ST GR0,0,GR2
	RET
	END
;--------------
