;２０１７年平成２９年度秋の問題プログラム１の改造私家版
;CASL2の仕様では、ビット配列は、向かって右がゼロビット、
;向かって左が３１ビットとなっている。　CASL2 Visible Inside も同じ。
;しかし、試験問題では、ビット配列が逆として出題された。
;さらに試験問題では、Betaも左詰めの条件で出題された。
;この改造私家版のソースコードでは、試験問題をCASL2の仕様に
;合わせたビット配列とし、かつ Betaも右詰めしたものと読み替えて
;ソースコードの作成したものである。　したがって、出題試験問題とは
;一部異なるコードになっている。　異なるコードに ; @ の印を付けた。
;-------------
; 以下の MAIN は、題意に沿うように
; 自作したBSRH呼び出しコード
MAIN 	START
	LAD GR1,ALP
	LD GR2,BET
	LD GR3,N
	CALL BSRH
	ST GR0,P
	RET
ALP	DC #0B7F
	DC #00A0
;ALP	DC #0D7F
;	DC #00A0
BET	DC #000A     	 ; @
N 	DC 4
P 	DS 1
   	END
;---------------------
BSRH 	START
    	RPUSH
	LD GR0,=-1
	LD GR6,=#FFFF ;
	SLL GR6,0,GR3	 ; @
	XOR GR6,=#FFFF
	LD GR4,0,GR1 ; AA
	LD GR5,1,GR1
	LD GR1,=32
	SUBA GR1,GR3 ; gr1 <-- 32 - N
	LD GR3,GR1 ; gr3 <-- 32 - N
LP 	LD GR7,GR4
	AND GR7,GR6
	XOR GR7,GR2 ; o
	JZE FOUND ; ari
	SUBA GR1,=1
	JMI FIN ; nasi
	SRL GR4,1 ; 	; @ shift aa right by 1bit 
	SRL GR5,1	; @
	JOV NEXT
	JUMP LP
NEXT 	OR GR4, =#8000	; @
	JUMP LP
FOUND 	SUBA GR3,GR1 ; pp
	LD GR0,GR3
FIN 	RPOP
    	RET
    	END
;----------------------   -
