★ APPLICATIONS ★ DIVERS ★ PRENOS PROGRAMOV IZ ZX SPECTRUMA NA AMSTRAD ★ |
Spectrum --> Amstrad (Moj Micro) | Applications Divers |
Po najpreprostejši poti prek kasetofonov Amstradovi (oz. Schneider-jevi) računalniki so v primerjavi z ZX spectrumom in C 64 še razmeroma malo razširjeni in temu primerno je zanje na voljo tudi manj programov. Predvsem za spectrum pa obstaja veliko strokovnih programov iz strojništva, elektromehanike ipd., ki so večinoma napisani v originalnem Sinclairjevem basicu. Prenašanje teh programov na amstrad je v principu zelo enostavno, vendar pa zelo zamudno zaradi veliko tipkanja (kjer se tudi pojavi veliko napak). Oba računalnika je seveda mogoče povezati tudi z vmesniki RS232. vendar morata v tem primeru oba imeti že omenjeni vmesnik, kar pa je precej draga investicija. Obstaja seveda tudi mnogo enostavnejša pot za prenos podatkov med računalnikoma - to je preko kasetofonov. Amstradova rutina za čitanje podatkov s kasete (CAS READ - &BCA1) je zelo fleksibilna, saj lahko včitava podatke s hitrostmi med 700 in 3600 baudi, in pri tem se tudi sama rutina prilagodi pravilni hitrosti (po višini vodilnega tona). Spectrumova rutina za zapis na kaseto deluje s hitrostjo okoli 1500 bau-dov in ima tudi enak način zapisa: ničla je zapisana s pol krajšim nihanjem kot enica. Treba je torej samo spremeniti vodilni (leader) ton, ki ga oddaja spectrum in že lahko amstrad včitava njegove podatke s CAS READ. Kot je razvidno iz programa za spectrum, je vodilni ton serija enic (198 bytov 255), nato sledi en bit 0 (byte 254), takoj za tem pa sync-byte, ki je v tem primeru 48 (lahko je katerokoli število od 0 do 255). Snemamo v blokih po 250 bytov in zanemarimo kontrolno vsoto, ki jo odda spectrum, ker se tako ali tako vedno razlikuje od tiste, ki jo izračuna amstrad. Blok ne more biti daljši od 256 bytov, ker na vsakih 256 bytov amstradova rutina za včitavanje pričakuje kontrolno vsoto, medtem ko je spectrum ne oddaja. To pomeni, da ni več kontrole pravilnosti včitavanja, zato je pri uporabi tega programa pomembno, da sta glavi kasetofona, na katerega snemamo in amstradovega kasetofona enako nastavljeni (najboljše je seveda, če snemate z istim kasetofonom, na katerem nato predvajate - pri CPC 664 in 6128). Spectrum izpisuje na zaslonu, koliko blokov je oddal, zato je pametno. da si to številko zapomnite in jo kasneje primerjate s številom včitanih blokov (število mora biti seveda enako). Sam program za snemanje je napisan v dveh verzijah. Verzija v strojnem jeziku se nalaga enostavno s CLEAR 63999:LOAD "" CODE in starta na naslovu 64013. če hočemo snemati basicov program, ki je trenutno v pomnilniku. Program lahko startamo tudi na naslovu 64000. vendar moramo pred tem popokati na naslov 64001 (in 64002) začetek, na naslov 64004 (64005) pa dolžino tistega dela pomnilnika, ki ga želimo posneti na kaseto (najprej nižji, nato višji byte). Druga verzija pa je napisana v basicu. zato ni primerna za snemanje programov v basicu. ampak z njo enostavno posnamemo del pomnilnika (lahko je to tekst nekega urejevalnika besedil, tekst zbirnika . . .). Na kaseto se običajno ne posname natanko željena dolžina, ampak se zaokroži navzgor na 250 bytov (vsi bloki so enako dolgi). To v praksi ne moti. saj pri prenosu programov v basicu računalnik tako ali tako zanemari zadnjih nekaj nesmiselnih bytov (na sporočila o napaki DIRECT COMMAND FOUND pa se ne ozirajte, ker se pojavi šele čisto na koncu). Glavni del pa je basicov program v amstradu; tokenizirani spectrumov basic prevede v ASCII tekst, ki je že razumljiv za amstrad. Ta program tudi prilagodi ukaze amstradu: vsem funkcijam dodaja oklepaje, če so potrebni (pri ZX niso obvezni), izpušča besedo LET. preimenuje določene ukaze, vrstico nič spremeni v vrstico s številko ena. če je vrstica popolnoma prazna (ima samo svojo številko), doda dvopičje (:), ker sicer amstrad javi napako. Pri ukazih PLOT in DRAW doda pred oba argumenta faktorja »qx« in -qy«. ki ju na začetku programa definiramo kot qx=640/256 qy=400/176. Zato nam potem ni treba več popravljati nobenih grafičnih koordinat, ker se spectrumove koordinate s tem pač avtomatično preračunavajo v amstra-dove. Podobno bi lahko naredili tudi z ukazom PRINT AT x,y, vendar je končni izgled programa veliko lepši, če izpise pač ročno prilagodimo amstradu (podobno tudi INPUT). Tudi redkeje uporabljenih ukazov ta program ne spreminja (npr. BEEP, VAL$, ASN, ACS, INK, PAPER ...). Podobno morate pri ukazih tipa DIM a$(22,11) zadnji argument izpuščati, ker ima v amstradu drugačen pomen. Jasno je, da morate morebitne rutine v strojnem jeziku tudi sami prilagoditi, saj sta operacijska sistema kljub enakemu mikroprocesorju zelo različna. Program v amstradu omogoča še druge možnosti, ki pa se manj uporabljajo (npr. izpis basica na tiskalnik v originalnem ZX basicu) in jih izbiramo v meniju ali pa dopišemo še svoje (spremenljivka cp pomeni izhodno enoto, 8 printer, 9 kasetofon oz. disketa). Zdaj ste verjetno tudi pomislili, ali ne bi šlo tudi nasprotno, z amstrada na spectrum. vendar bi bil prenos v tej smeri bistveno zahtevnejši. predvsem s strani spectruma.
|