diff --git a/firmware/test/test.data.hex b/firmware/test/test.data.hex new file mode 100644 index 0000000000000000000000000000000000000000..301174e8089d4fd62d5e91c3f71a81fb6a3a801c --- /dev/null +++ b/firmware/test/test.data.hex @@ -0,0 +1,10 @@ +// Data for demonstration +// +// SPDX-FileCopyrightText: 2021 Minyong Li <ml10g20@soton.ac.uk> +// SPDX-License-Identifier: CC0-1.0 + +// Block 0 (initial state, constant to be filled) +0 + +// Block 1 (plain text) +0 diff --git a/firmware/test/test.prog.hex b/firmware/test/test.prog.hex new file mode 100644 index 0000000000000000000000000000000000000000..7da0154f07d44c9ffe07e58f00d16773020f2b66 --- /dev/null +++ b/firmware/test/test.prog.hex @@ -0,0 +1,51 @@ +// A simple Control Word (CW) program running the ChaCha20 block function for +// demonstration +// +// SPDX-FileCopyrightText: 2021 Minyong Li <ml10g20@soton.ac.uk> +// SPDX-License-Identifier: GPL-3.0-or-later + +// Can Architecture Variant: Mem(Sync-P128-D16)-Reg(2) +// -> PM ADDR W 7b - DM ADDR W 4b +// +// /- rwf +// /- dmwe | /- rwe +// /- hlt | /- dmwa | | /- rwa +// 0_0000_0_0000_0_0_0_0_0_0_0_000 +// \- dmra | \- r1ra | | \- aluf +// \- r0ra | \- incblkcnt +// \- flcnst +// +// 0000_0000_0000_0000_0000 (20.W) +// 0_0000_0_0000_0_0_0_0_0_0_0_000 // + + // | | | | | +00000 // 0_0000_0_0000_0_0_0_0_0_0_0_000 // %0 <- #0 +000c0 // 0_0000_0_0000_0_0_1_1_0_0_0_000 // %0 <- #0 // Delayed load +00051 // 0_0000_0_0000_0_0_0_1_0_1_0_001 // %0 <- ! %0 +00066 // 0_0000_0_0000_0_0_0_1_1_0_0_110 // %1 <- %0 +00042 // 0_0000_0_0000_0_0_0_1_0_0_0_010 // %0 <- | %0 +00043 // 0_0000_0_0000_0_0_0_1_0_0_0_011 // %0 <- \ %0 +00042 // 0_0000_0_0000_0_0_0_1_0_0_0_010 // %0 <- | %0 +00043 // 0_0000_0_0000_0_0_0_1_0_0_0_011 // %0 <- \ %0 +00042 // 0_0000_0_0000_0_0_0_1_0_0_0_010 // %0 <- | %0 +00043 // 0_0000_0_0000_0_0_0_1_0_0_0_011 // %0 <- \ %0 +00042 // 0_0000_0_0000_0_0_0_1_0_0_0_010 // %0 <- | %0 +00043 // 0_0000_0_0000_0_0_0_1_0_0_0_011 // %0 <- \ %0 +00042 // 0_0000_0_0000_0_0_0_1_0_0_0_010 // %0 <- | %0 +00043 // 0_0000_0_0000_0_0_0_1_0_0_0_011 // %0 <- \ %0 +00042 // 0_0000_0_0000_0_0_0_1_0_0_0_010 // %0 <- | %0 +00043 // 0_0000_0_0000_0_0_0_1_0_0_0_011 // %0 <- \ %0 +00042 // 0_0000_0_0000_0_0_0_1_0_0_0_010 // %0 <- | %0 +00043 // 0_0000_0_0000_0_0_0_1_0_0_0_011 // %0 <- \ %0 +00042 // 0_0000_0_0000_0_0_0_1_0_0_0_010 // %0 <- | %0 +00043 // 0_0000_0_0000_0_0_0_1_0_0_0_011 // %0 <- \ %0 +00042 // 0_0000_0_0000_0_0_0_1_0_0_0_010 // %0 <- | %0 +00043 // 0_0000_0_0000_0_0_0_1_0_0_0_011 // %0 <- \ %0 +00042 // 0_0000_0_0000_0_0_0_1_0_0_0_010 // %0 <- | %0 +00043 // 0_0000_0_0000_0_0_0_1_0_0_0_011 // %0 <- \ %0 +08144 // 0_0000_0_0000_0_1_0_1_0_0_0_100 // %0 <- %0 + %1 +08000 // 0_0001_0_0000_0_0_0_0_0_0_0_000 // %1 <- #1 +080e0 // 0_0001_0_0000_0_0_1_1_1_0_0_000 // %1 <- #1 // Delayed load +04505 // 0_0000_0_0000_0_1_0_1_1_0_0_101 // %1 <- %0 ^ %1 +04507 // 0_0000_1_0001_0_1_0_0_0_0_0_111 // #1 <- %1 +80000 // 1_0000_0_0000_0_0_0_0_0_0_0_000 // Halt