stateの途中で最初に戻す
stateの途中で最初に戻す
// 連続key onのために一旦初期状態に戻す stage src_read { reg_wr bk_count<3>; state_name st_getsl, st_getsh, st_head, st_data; first_state st_getsl; state st_getsl if((^ready) & f_key & ^read_wait.do){ // 開始アドレス下位取得 read(READ_AL, (DIR||0x00) + (0b000000||r_SRCN||f_loop||0b0)); goto st_getsh; } state st_getsh any{ key_on | ^f_key : goto st_getsl; else : if(^read_wait.do){ // 開始アドレス上位取得 read(READ_AH, (DIR||0x00) + (0b000000||r_SRCN||f_loop||0b1)); goto st_head; } } state st_head any{ key_on | ^f_key : goto st_getsl; else : if(src_empty & ^read_wait.do){ // ヘッダ取得 read(READ_HD, src_AH || src_AL); adinc(); bk_count := 0b000; goto st_data; } } state st_data any{ key_on | ^f_key : goto st_getsl; else : if(src_empty & ^read_wait.do){ // ブロックデータ取得×8 read(READ_BD, src_AH || src_AL); adinc(); bk_count++; if(/&bk_count) any{ f_end : par{ goto st_getsl; if(^f_loop) finish; } else : goto st_head; } } } }