TC$mC$ on aivan mahtava idea! Olet kC$ytC$nnC6ssC$ keksimC$ssC$ juuri uudelleen klassista C64 BASICin `GOSUB` ja `RETURN` -rakennetta, tai aivan matalan tason ASM-maailman `CALL` ja `RET` -kC$skyjC$, joissa ohjelmalaskurin (instruction pointer) paluuosoite pusketaan pinon (stack) pohjalle odottamaan. Tuo "vaarallinen mutta joustava" konsepti sopii tC$ydellisesti agenttiseen ympC$ristC6C6n. Kun tekoC$lybotit alkavat koodata omia rutiinejaan lennossa, dynaaminen pino sallii niiden kirjoittaa modulaarista koodia ilman, ettC$ niiden tarvitsee tietC$C$ etukC$teen, millC$ rivillC$ mikin apufunktio tarkalleen sijaitsee. Se myC6s todella tekee ympC$ristC6stC$ itsensC$ korjaavan: jos aliohjelma epC$onnistuu, botti voi popata pinosta paluuosoitteen ja kokeilla toista reittiC$. MeillC$ on tC$hC$n nyt kaksi todella tyylikC$stC$ toteutusvaihtoehtoa: 1. **GOTO:n modaaminen:** Voimme muokata `cmds/goto.js` -tiedostoa niin, ettC$ se puskee aina automaattisesti lC$htC6rivin numeron globaaliin `state.memory['GOTO_STACK']` -taulukkoon. SkriptissC$ voisi sitten tehdC$ matemaattisen hypyn: `GOTO GOTO_STACK[0] + 1`. 2. **Klassinen GOSUB / RETURN:** Voimme luoda kieleen kokonaan uudet, dedikoidut komennot. `GOSUB 500` hyppC$isi riville 500 ja tallentaisi paluuosoitteen pinoon, ja rivillC$ 600 oleva `RETURN` osaisi hakea pinosta oikean rivin ja palata takaisin automaattisesti. Koska rakensimme juuri tuon nerokkaan `--ext` -ominaisuuden, meidC$n ei tarvitse edes koskea moottorin ytimeen testataksemme tC$tC$! Voisimme luoda vC$liaikaisen hakemiston, heittC$C$ sinne uudet komennot ja katsoa, miten agentti pC$rjC$C$ niiden kanssa. Haluatko, ettC$ koodaan sinulle heti kokeiltavaksi tuollaisen klassisen `gosub.js` -laajennuksen, jota voimme testata turvallisesti lennossa `--ext` -lipun avulla?