APPLICATIONSCREATION GRAPHIQUE ★ SCREEN ENCODER V3|MOJ MICRO) ★

Screen Encoder v3 (Moj Micro)Applications Creation Graphique
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

Stisnimo zaslon CPC 6128

Za program Screen Encoder 3.1 sem dobil idejo v programu Stlačimo zaslon (Moj mikro, 10/1985). Ta je bil namenjen spectrumu. a me je precej zanimal in sem ga priredil za svoj CPC 6128. S predelanim programom je bilo mogoče shraniti poljuben zaslon (screen) v komprimirani obliki, se pravi tako. da je slika na disketi namesto 17 zasedla povprečno 9 K. Algoritem pa je bil zapleten in je bilo treba čakati kar 30 sekund, da je program analiziral in kodiral zaslon. Tudi dekodiranje je bilo počasno. Zato sem sklenil narediti boljši program.

Malo teorije, da bi bila ideja bolj razumljiva. Na kateremkoli zaslonu, tudi najbolj zapletenem. se nekateri byti ponavljajo, npr. na področju enake barve. Take byte je pametno zapisati v obliki število ponovitev byta, byte. To ne velja za raznolika področja zaslona, kjer se zaporedni byti med seboj razlikujejo. Splača se kodirati le tiste byte, ki se ponovijo vsaj trikrat, saj v kodirani obliki potrebujemo za podatek dva byta. Zato je na kodiranem zaslonu na začetku katerekoli skupine bytov t. i. kontrolni byte. V njem je zapisano, ali mu bodo sledili različni ali enaki byti. To informacijo shranimo v bitu 0 (če so byti različni: LSB 0; če so enaki: LSB=1). V drugih sedmih bitih zapišemo, koliko različnih' bytov sledi oziroma kolikokrat se bo byte ponovil. S takim bytom lahko zapišemo le 128 različnih ali 130 enakih bytov (najmanj pa 3). Če je enakih bytov npr. 200, jih moramo kodirati v štirih bytih. Prihranek prostora je precejšen. Pri zapisu kontrolnega byta pomaknemo 7 bitov v levo. v LSB pa vstavimo 0 ali 1. Pri tem uporabimo ilegalni ukaz SLSO. opisan v Mojem mikru 4/1985. str. 42.

S programom je mogoče kodirati ne samo zaslon, temveč tudi poljuben pravokotnik na zaslonu. Zato sem vnesel rutine, ki poiščejo naslov byta na zaslonu z danimi koordinatami X in Y. Oglišča okna (window) na zaslonu definiramo s koordinatami X1. X2. Y1, Y2. ki so v prvem delu programa shranjene v (IY+0 IY+4). Tu so zapisani po vrsti: začetni in končni X. končni Y ter trenutna X in Y. Tabela je postavljena v nevidnem delu zaslona. Rutini FARD in FINDAD poiščeta iz danih X in Y (z izhodiščem v zgornjem levem kotu) naslov na zaslonu. Pri tem se lahko zahvalimo načrtovalcem grafičnega čipa, da niso toliko zapletli te operacije kot sir Clive pri spectrumu. Če gresta Y od 0 do 199 in X od 0 do 79 (ker je v vrstici 80 bytov), zaslon pa se začne normalno* na #C000,izračunamo naslov z izrazom

NASLOV = #C000+(Y MOD 8)*2048 + INT(Y/8)#80 + X.

Končna rutina za izračun naslova je

NASLOV = #C000 + (Y AND %111)#2048+(Y AND %11111000)#10 + X.

Program, ki dekodira zaslon, uporablja več ilegalnih ukazov, opisanih v Mojem mikru 3/1985. str. 36. Parametri za izračun naslova so začetni X (XH). dolžina A »osnovnice« pravokotnega okna (C. XL). začetni Y (YH) in dolžina B »višine« okna (YL). S tem sem dosegel, da se ves zaslon dekodira izredno hitro, v približno 27 stotinkah sekunde.

Zgled, kako se uporablja proqram v zbirniku. je program v basicu SCREEN ENCODER 3.1. Dela z modeli CPC 464. 664 in 6128 (v vrsticah 50 in 140 sta simulirana ukaza, ki ju 464 nima). Program v zbirniku je enak tistemu v vrsticah DATA. Če ga boste uporabili v lastnih programih, boste morali sami vnesti vrednosti okna tako kot v vrsticah 80 in 90 programa v basicu.

Navodila za uporabo: poženite program v basicu. Najprej vas vpraša za ime zaslona, ki ste ga shranili na disketi ali kaseti, in grafični način, v katerem običajno »gledamo« zaslon. Če vpišete napačen modus, se vam prikaže slika z navpičnim rastrom. V tem primeru pritisnite tipko DEL. da se začne slika nalagati znova. Potem se odločite, kakšno velikost okna boste kodirali. Če je to ves zaslon, samo pritisnite RETURN ali ENTER. Program vam bo pokazal dolžino kodiranega zaslona in vas bo vprašal za ime novega kodiranega zaslona. Okno zmanjšate tako. da hkrati s tipko COPY pritisnete eno od kurzorskih tipk. Ko COPY spustite, se zaslon poveča. Kodirati se da katerikoli del zaslona, program pa sam izračuna naslov, na katerega je treba sliko dekodirati. S pritiskom na presledek dobite negativ vsega zaslona (rutina je v vrstici 630 programa v zbirniku). To je uporabno pri Hobbitu ali Rambu. Napake sporoča program sam. Amstradovci brez disketnika bodo najbrž morali nekoliko spremeniti ali izpustiti del v vrsticah 160-240. Stavkov REM ni treba prepisovati.

Dekodiranje zaslona je zelo preprosto: Hl-MEM morate postaviti pod 20000, npr. z ukazom MEMORY 19999. Nato naložite strojni del z ukazom LOAD »ime slike« in poženete program s CALL 20000. Če ste komprimirali uvodno sliko, normalno naložite ostanek igre.

Nekaj zgledov stlačene kode (normalna dolžina je 17 K): FRIDAY THE 13th zasede 5, ARABIAN NIGHTS 7, HOBBIT 10, CHOPPER SQUAD 6. PING-PONG 4. COMMANDO 12, MONTY ON THE RUN 8. ATLANTIS 6. SABOTEUR 6. ALIEN 8 pa 8 K. Najdaljšli je
GHOSTS 'N' GOBLINS (14 K). Program se da prirediti za komprimiranje katerekoli kode Astro Attack porabi v taki obliki 11 K namesto 16!

Opozorilo: če imate CPC 6128 in vnašate program v zbirniku z Devpackom 3.0. bo nekaj težav. GENA za CPC 464 uporablja za vnos in shranjevanje programov vmesni pomnilnik (buffer). ki leži v modelu 6128 tik pod pomnilnikom, prihranjenim za delo AMSDOS. Če je program v zbirniku predolg, vmesni pomnilnik pri ukazih PUT in GET prekorači mejo HIMEM in onemogoči vse ukaze v zvezi z disketo ali kaseto (RSX). Začetek vmesnega pomnilnika je treba spremeniti takole: GENA vnesite na lokacijo 1000. vrnite se v basic in natipkajte POKE 1118,&00 in POKE 1119,&C0 Program poženite s CALL 1004. Vmesni pomnilnik se zdaj začenja na #C000. Če vas ne motijo packe na zaslonu, ko vnašate ali shranjujete programe, je to najboljša rešitev Pri Devpacku 3.1 ali poznejših verzijah pa teh problemov sploh ni.

Moj Micro

★ PUBLISHER: Moj Micro
★ ANNÉES: 1986 , 1987
★ CONFIG: AMSDOS + 64K
★ LANGAGE:
★ LiCENCE: FREEWARE
★ AUTHOR: Tom Hmeljak

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listings:
» Screen  Encoder  v3.1    (Moj  Micro)    LISTING    SLOVENIANDATE: 2021-10-31
DL: 11 fois
TYPE: PDF
SIZE: 278Ko
NOTE: 2 pages/PDFlib v1.6

» Screen  Encoder  v3.1    SLOVENIANDATE: 2017-04-25
DL: 75 fois
TYPE: ZIP
SIZE: 5Ko
NOTE: Uploaded by CPCLOV ; Extended DSK/40 Cyls
.HFE: NON

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » Machpoke
» Applications » Transparence Tag et Inversion Video (CPC Revue)
» Applications » CreDATA
» Applications » Compilation : Demon PD - PD 78 - Utilities #8
» Applications » Speedbas CPC (CPC Amstrad International)
» Applications » RSX Scroller v4.0
Je participe au site:
» Vous avez des infos personnel» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop
Page créée en 884 millisecondes et consultée 692 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.