; ── SWARM FORAGER ──────────────────────────── ; Random walk to find food, dead reckoning to ; navigate home. Pheromone marks food for others. ; Hit play, then try improving it! ; ── Registers ── .alias dx r1 ; x displacement from nest .alias dy r2 ; y displacement from nest .alias ret r3 ; return address for CALL ; ── Pheromone ── .const TRAIL CH_RED ; marks food locations ; ── Roles (visible in simulation viewer) ── .tag 0 foraging .tag 1 homing ; ────────────────────────────────────────────── main: CARRYING JNE r0 0 go_home TAG foraging ; ── SEARCH: find food ───────────────────────── search: SENSE FOOD JNE r0 0 grab SMELL TRAIL JNE r0 0 step RANDOM r0 4 ADD r0 1 step: CALL ret move_track JMP main grab: CALL ret move_track PICKUP MARK TRAIL 100 JMP main ; ── GO HOME: dead reckon toward nest ────────── go_home: TAG homing SENSE NEST JNE r0 0 deliver RANDOM r0 4 JEQ r0 0 wander ; 25% random to unstick walls CALL ret home_dir CALL ret move_track JMP main wander: RANDOM r0 4 ADD r0 1 CALL ret move_track JMP main deliver: CALL ret move_track DROP JMP main ; ══════════════════════════════════════════════ ; SUBROUTINES — CALL ret