Download Game! Currently 87 players and visitors. Last logged in:DregasFosforosChobsWilli

Blitzer's Blog >> 71366

Back to blogs index
Posted: 11 Jul 2026 13:06 [ permalink ]
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?