inst_swp.asm (996B)
1tpu X0 Y0 2 ## ${ADDR_INST_SWP} 3 4 # get req 5 mov UP, DOWN 6 mov UP, NIL 7 mov UP, ACC 8 mov ACC, DOWN 9 mov UP, DOWN 10 11 # read reg src 12 mov ${ADDR_GPR}, RIGHT 13 mov ${ADDR_INST_SWP}, RIGHT 14 mov ${MEM_OP_READ}, RIGHT 15 mov ACC, RIGHT 16 mov ${OP_NIL}, RIGHT 17 18 # get ack (src value) 19 mov UP, NIL 20 mov UP, NIL 21 mov UP, ACC 22 mov UP, NIL 23 24 # write reg dst 25 mov ${ADDR_GPR}, RIGHT 26 mov ${ADDR_INST_SWP}, RIGHT 27 mov ${MEM_OP_WRITE}, RIGHT 28 mov DOWN, RIGHT 29 mov ACC, RIGHT 30 31 # get ack (prev dst value) 32 mov UP, NIL 33 mov UP, NIL 34 mov UP, ACC 35 mov UP, NIL 36 37 # write reg src 38 mov ${ADDR_GPR}, RIGHT 39 mov ${ADDR_INST_SWP}, RIGHT 40 mov ${MEM_OP_WRITE}, RIGHT 41 mov DOWN, RIGHT 42 mov ACC, RIGHT 43 44 # get ack (prev src value) 45 mov UP, NIL 46 mov UP, NIL 47 mov UP, NIL 48 mov UP, NIL 49 50 # send ack 51 mov DOWN, RIGHT 52 mov ${ADDR_INST_SWP}, RIGHT 53 mov ${OP_ACK}, RIGHT 54 mov ${OP_NIL}, RIGHT 55 mov ${OP_NIL}, RIGHT 56end 57 58tpu X1 Y0 59 mov LEFT, UP 60end 61 62tpu X0 Y1 63 mov UP, ACC 64 swp 65 mov UP, ACC 66 mov UP, UP 67 mov ACC, UP 68 swp 69 mov ACC, UP 70end