Ohjelma koostuu basic-osuudesta se-k[ lukuisasta joukosta konekielirutiine-ja. Alun perin ohjelma tehtiin kokonaan basicill[, mutta sitten osat muutettiin yksi toisensa j[lkeen konekielisiksi. Konekielt[ tarvitaan kaikissa nopeutta, sulavuutta ja muistink[yt\n taloudelli- suutta edellytt[viss[ teht[viss[ kuten esimerkiksi spritekuvioiden liikuttelus-sa, alkuarvojen asettelussa ja taustamu-siikin soittamisessa.
Ohjelma alkaa konekielirutiinien latauksilla ja alkuarvojen asetteluilla,joista suurin osa tehd[[n siis konekie- lell[. My\s tulostaulukko 'TOP TEN' la-dataan levylt[ ja talletetaan takaisin sinne aina, kun siihen tulee muutoksia. Ajanlasku on tehty basicill[, l[ht\arvo-na 150, jota v[hennet[[n yksi kerrallaanja tulostetaan PRINT-k[skyll[ n[ytt\\n. Kun aika loppuu (tulee nollaksi), menet-t[[ pelaaja yhden ukon. Kun ukkoja ei en[[ ole j[ljell[, peli p[[ttyy. T[l- l\in lasketaan saadut pisteet ja tulos- ta verrataan jokaiseen tulostaulukon al-kioon. Mik[li tulos on suurempi kuin taulukon alin alkio, siirret[[n tulosta yksi kerrallaan yl\sp[in,kunnes se on oikealla paikallaan. N[in taulu pysyy koko ajan oikeassa j[rjestyksess[.
Basic-osasta ohjataan my\s irq-ru- tiinin kytkeminen p[[lle ja pois p[[lt[.Suurin osa konekielikoodista liittyy suoraan spritek[sittelyyn ja kulkee ns irq-osoitteen kautta aina 1/60 sekunnin v[lein. Commodoren oma keskeytysosoite muistipaikassa 0314-0315 vaihdetaan n[ytt[m[[n oman konekielikoodin alkuun ja koodi lopetetaan hypyll[ alkuper[i- seen irq-osoitteeseen EA31. Ukon kuol- lessa ajan loppumiseen tai h[m[h[kkiin t\rm[[miseen, palautetaan alkuper[inen irq-osoite paikalleen (konekielisesti), jolloin kaikki 'automaattiset' tausta- toiminnot pys[htyv[t.
Castle:n teossa on k[ytetty ns omiamerkkej[ sek[ spritej[. Omat merkit te-kev[t lattiakuvion kolmiulotteiseksi, el[v[t tikapuut, aarteet ja jotkin teks-tiosuudet, kuten jo alkukuvasta voi huo-mata. Muutamat 'kirjaimet' muodostuvat useastakin merkist[ kuten pelin nimi. Pelikentt[ tulostetaan n[kyviin konekie-lisesti, jolloin ruutu t[yttyy salaman- nopeasti. Basicill[ tehtyn[ sama veisi useamman sekunnin. Lattiat ovat aina samoilla paikoilla, mutta tikapuita on jonkin varran vaihteleva m[[r[ ja ne ovat hieman satunnaisissa paikoissa. Tikapuiden m[[r[laskurit ja koordinaatiton talletettu tiettyyn muistialueeseen, josta ohjelma poimii ne aina ruudun t[y-t\n yhteydess[. Kaikilla ruuduilla on lis[ksi oma v[rins[.
Spritej[ on k[ytetty ukon ja h[m[- h[kkien muodostamisessa. Ukolla on kol-me eri muotoa kumpaankin suuntaan men- ness[ ja h[m[h[keill[ kaksi muotoa. Usea muoto tekee liikkeen sulavaksi, mutta vain nopealla konekielell[ liiku- tettaessa. Basicill[ liike j[[ pakosta-kin hitaaksi, sill[ ohjelmassa on paljonmuutakin teht[v[[. Jos taas muotoja on v[hemm[n, on liikekiin nykiv[mp[[.
H[m[h[kkej[ on aluksi kolme. Nel- j[nnenkin kaikki tiedot ovat koko ajan olemassa, mutta se kytket[[n n[kyv[ksi vasta my\hemmin. N[iss[kin on v[rej[ hy\dynnetty.
Taustalla soi irq-rutiinissa kaikenaikaa kolme ja puoli minuuttia kest[v[ klassisen musiikin sovitus. Musiikiksi on valittu Ludwig van Beethovenin AdagioKuutaosonaatista. Musiikki k[ytt[[ hy- v[kseen Commodoren kaikkia kolmea [[ni- generaattoria, joten [[ni[kin on kolme. {SHIFT-+}[net soitetaan alueelta 24000 alkaen, jonne on talletettu kunkin nuotin yl[- [[ni, ala[[ni ja kesto. Rutiinin joka kutsulla kestosta v[hennet[[n yksi sa- malla kun em. kolme [[nipiiri[ kytket[[np[[lle. Kun kesto tulee nollaksi, hae- taan esille seuraavan nuotin arvot. Mu-siikki alkaa taas alusta, kun kaikki nuotit on soitettu (yht 6 kB).
Useimmat konekielirutiinit sijait- sevat alueella 49152-53000 ja alueella 20000-23000. Muutamia n[ist[ k[ytet[[n alkuarvojen asettelemiseen. Erilaisia laskureita on sijoitettu kasettipusku- riin. Suurin osa rutiineista on kuiten-kin irq-keskeytysosoitteen takana, jotenne ovat k[yt[nn\llisesti koko ajan toi- minnassa. N[it[ ovat mm.
- h[m[h[kkien siirto
- ukon siirto, t\rm[ysten valvonta
- musiikin hoito
- ohjelman tilojen ja n[pp[inten
seuranta ym.
Jokaisella kierroksella siirret[[n kutakin h[m[h[kki[ yhden pixelin verran oikealle tai vasemmalle. Jos otus on tikapuun kohdalla, arvotaan lis[ksi tikapuista meno. Jos meno sallitaan, viritet[[n tikapuulaskuri 32 kierroksen ajaksi ja tikapuun toisessa p[[ss[ arvotaan kullkusuunta uudelleen. Jos jokin otus osuu ukkoon, virittyy t\rm[ysrekisteri ja tapahtuu siirtyminen kuolemarutiiniin.
Ukkoa siirret[[n nelj[ pixeli[ / kierros, mutta vain jos joysticki[ on liikutettu. Tikapuissa kulku on sama kuin h[m[h[keill[. Jokaisella vasen / oikea-siirrolla tutkitaan ukon kohdalla oleva taustamerkki. Jos se on aarre, k[yd[[n lis[[m[ss[ bonuslaskuria (score)ja jos aarre oli ruudun viimeinen, tul- laan pois irq-osasta ja hoidetaan loppu-k[sittely ja seuraavan ruudun asetus. Ohjelman lopetuksesssa 'GAME OVER' -tekstin v[ri[ vaihdetaan useasti ja sa-malla suoritetaan viiv[styssilmukkaa.