Debugger ja Linker ohjelmat toimivat CBM-64:ll[ ja ne on tarkoitettu ohjel- moinnin helpotukseksi. Toinen avustaa Basic-ohjelmoinnissa ja toinen konekie- liohjelmoinnissa.
Linker
Tarkoitus: Monet assemblerk[[nt[j[t ei- v[t osaa k[[nt[[ ajokelpoisia tiedostojalevylle, vaan tallentavat objektitiedos-toja, jotka tarvitsee aina ennen k[ytt\[ladata muistiin erillisill[ hankalak[yt-t\isill[ lataajaohjelmilla. T[m[ ohjelmak[[nt[[ n[m[ SEQ-muotoiset objektitie- dostot ajettaviksi PRG-tiedostoiksi.
K[ytt\: Lataa ohjelma k[skyll[ LOAD "LINKER",8,1. K[ynnist[ se k[skyll[ SYS 50000. Ohjelma kysyy objektikooditiedos-ton ja siit[ muodostettavan ajettavan konekielitiedoston nimen. Kun ohjelma onsuorittanut linkkauksen, se n[ytt[[ oh- jelman alku- ja loppuosoitteen.
Toimivuus: Ohjelma toimii kaikkien yleist[ ASCII-objektikoodia k[ytt[vien assemblereitten kanssa (esim. Commodore Assembler, Laser Genius jne.).
Debugger
Tarkoitus: Vaikka Basic-ohjelmissa vir- heet ovat harvinaisempia kuin konekieli-ohjelmissa, niin silti usein varsinkin pitemmiss[ ohjelmissa syntyy ns. loogi- sia virheit[, joista BASIC ei anna vir- heilmoitusta, mutta niiden takia ohjelmaei toimi toivotulla tavalla, esim. muut-tujat saavat v[[ri[ arvoja (k[ytetty sa-maa muuttujaa useaan tarkoitukseen), oh-jelma harhautuu v[[rille riveille, useinmy\s levyasemaa k[ytett[ess[ syntyy ou- toja ongelmia (luetaan per[kk[istiedos- toa, eik[ tiedet[ siell[ olevista ero- tinmerkeist[). N[m[ ongelmat voisi v[lt-t[[ dokumentoimalla ja ohjelmoimalla ra-kenteellisesti, kuitenkin harvat n[in jaksavat tehd[. Debugger on konekielinentaustaohjelma, joka auttaa BASIC-ohjel- mien kehityst[ ja testausta. Taustaruutuon aina ohjelman ollessa k[ynniss[ kut- suttavissa RUNSTOP-n[pp[int[ painamalla.K[ytett[viss[ on yhdeks[n k[sky[ ohjel- man suorituksen kontrolloimiseen.
K[ytt\: Lataa ohjelma k[skyll[ LOAD "DEBUGGER",8,1. Suorita NEW-k[sky. Nyt koko BASIC-muisti on vapaasti k[ytett[- viss[si. Kun haluat ottaa ohjelman k[yt-t\\n anna komento SYS 49152. T[ll\in oh-jelma ilmoittaa olevansa toiminnassa (TRACE ON). Samalla k[skyll[ voit kytke[sen halutessasi pois. Nyt voit ladata tai kirjoittaa ohjelmaa. Ohjelman olles-sa k[ynniss[ RUN/STOP-n[pp[in antaa si- nulle mustan taustaruudun, jossa voit k[ytt[[ seuraavia komentoja:
-STEP P[[set suorittamaan ohjelmaa ri-vi kerrallaan. Oikeassa yl[kulmassa n[- kyy aina seuraavaksi suoritettavan rivinnumero. Voit suorittaa t[m[n rivin Com- modore-n[pp[int[ painamalla. Pois STEP- tilasta p[[set RUN/STOP-n[pp[imell[, jolloin palaat debuggertilaan.
-STOP Kysyy sinulta ehtoa (COND:) oh- jelman suorituksen pys[ytt[miseen. T[m[ ehto tarkistetaan joka k[skyn j[lkeen jamik[li ehto on tosi, suoritus palaa de- buggertilaan ja n[yt\lle tulostuu tekstiSTOPPED, toteutunut ehto ja rivinumero.
-HALT Kysyy rivinumeroa (LINE:) jolle p[[sty[ ohjelman suoritus pys[htyy pa- lautuen debuggertilaan ja tulostaen tekstin HALTED ja rivinumeron. STEP, STOP ja HALT toimivat my\s yht'aikaa.
-PRINT Tulostaa muuttujien tai lausek- keiden arvoja samalla formaatilla kuin BASICin PRINT-k[sky esim. PRI 7*A+LEN(A$).
-LIST Antaa listauksen ohjelmasta tai osasta ohjelmaa. Formaatti sama kuin BA-SICin LIST-k[skyss[. Esim. LIS 20-50.
-SET Asettaa arvoja muuttujille. Esim. SET X=64.
-RESET Nollaa kaikki muuttujat ja suo- rittaa basicin RESTORE-komennon.
-BREAK Keskeytt[[ ohjelman ajon kuten RUN/STOP-n[pp[imell[ normaalisti.
-DATA Tulostaa DATA-rivin jolle seu- raava READ-k[sky kohdistuu.
N[m[ k[skyt voi kirjoittaa kokonaan tai k[ytt[[ kolmikirjaimisia lyhenteit[. Josk[sky[ seuraa parametri on sen aina ol- tava v[lily\nnill[ k[skyst[ erotettu.
-RESTORE-n[pp[in suorittaa normaalin RUN/STOP+RESTORE -n[pp[imill[ suoritettavanWarm Startin, kuitenkin ensiksi tulosta-en rivi- ja datarivinumeron, jonka j[l- keen ohjelma odottaa v[lily\nnin paina- mista ennen Warm Startin suoritusta.
Tekniikka: Ohjelma on hookattu RUN/STOP-vektoriin, STEP:n ollessa p[[ll[ k[skyn-suoritusrutiiniin. Ohjelma tallettaa ai-na debuggertilaan siirtyess[[n ruudun, v[rimuistin, nollasivun ja muita t[rkei-t[ muistipaikkoja. Ohjelma sijoittuu alueelle $C000-$C500 ja k[ytt[[ siit[ eteenp[in vapaana olevan tilan varasto- alueena. My\s alue 820-827 ja 1021-1023 on k[yt\ss[. Ohjelma ei siis v[henn[ ba-sicin k[yt\ss[ olevaa muistitilaa.