···6868 jump,
6969 call,
7070 unext,
7171- nop,
7171+ next,
7272 nop,
7373 nop,
7474 fetchP,
···190190/// Micronext. If R is zero, pops the return stack and continues with the next
191191/// opcode. If R is nonzero, decrements R by 1 and causes execution to continue
192192/// with slot 0 of the current instruction word without re-fetching the word.
193193-pub fn unext(_: *Computer) void {}
193193+pub fn unext(self: *Computer) void {
194194+ self.return_stack.t -= 1;
195195+}
196196+197197+test unext {
198198+ var computer: Computer = .reset;
199199+ computer.return_stack.push(0x123);
200200+201201+ unext(&computer);
202202+ try expectEqual(0x122, computer.return_stack.t);
203203+}
204204+205205+/// next
206206+///
207207+/// **Next**. If R is zero, pops the return stack and continues with the next
208208+/// instruction word addressed by P. If R is nonzero, decrements R by 1 and
209209+/// jumps
210210+pub fn next(self: *Computer) void {
211211+ if (self.return_stack.t == 0) {
212212+ _ = self.return_stack.pop();
213213+ } else {
214214+ self.return_stack.t -= 1;
215215+ self.p.jump(self.slot, self.i);
216216+ }
217217+}
218218+219219+test next {
220220+ var computer: Computer = .reset;
221221+ computer.i = @bitCast(f18.Jump{ .destination = 0x44 });
222222+ computer.slot = 1;
223223+ computer.return_stack.push(0x123);
224224+225225+ next(&computer);
226226+ try expectEqual(0x122, computer.return_stack.t);
227227+ computer.step();
228228+ try expectEqual(0x22, computer.p.address.local);
229229+}
194230195231/// @p
196232///