Pozdravljeni na straneh programov iz prejšnje Jugoslavije za 8 in 16 bitne mlinčke.



        Sinclair ZX SPECTRUM


News
ZX Spectrum
Commodore 64
Amiga
Amstrad CPC
Commodore +4
Atari ST
Galaksija
Orao
Orao
ReCracks
Misc
Misc
Forum
  
News
 
Big (1) Intro Maker
Predrag Bećirić


       Jezik: Angleški
    Povzetek: Zanimiv Maker.
     Skupina: Intro Kreatorji 
    Komentar: Pretipkano iz "Svet Kompjutera"
              številka 12, December 1988.
  Leto Izida: 1988
      Format: TZX
Big1IntroMaker   Download


Opisi:
Svet Kompjutera, #12, December 1988, ZX Intro Servis, Predrag Bećirić

Tata, kupi mi Maker!

  U prošlom  broju objasnili  smo kako praviti  Intro Makere, takođe smo dali i
prvi Intro maker za Spectrum. Sada je na red došao i nešto Jednostavniji,  ali,
vrlo kvalitetan program.

  

  Program BIG (1) Intro maker omogućava  vam da ispred  neke igre stavite svoju
propagandnu poruku. Kada neko sledeći put učita tu igru, moraće prvo da pročita
vašu poruku, a zatim, pritiskom na  dolazi do starta igre. Evo ukratko i
načina kako to ostvariti.

  Kada startujete program, pojaviće se meni,slično kao i u CRAZY INTRO MAKER-u.
Meni vam nudi sledeće opcije:

  1. ENTER TEXT FOR SCROLLING
  2. SAVE INTRO
  3. INSTRUCTIONS
  4. CHANGE SCROLL

  Prva opcija omogućava vam  da unesete  tekst koji  želite da  se skroluje. Po
stanovanju ove opcije ulazite editor poruka. U gornjoj trećini ekrana  pojaviće
se prozor u  kojem je predstavljeno  32 karaktera poruke  (poruka je maksimalne
dužine 512 karaktera). Unošenjem novih karaktera, dolazi i do skrola poruke  po
ekranu. Kada ste otkucali ćelu poruku,  potrebno je da unesete ® kao  marker za
kraj teksta.  Taj specijalni  znak omogućava  programu da  zna koliko je poruka
dugačka, a takode i da kasnije, kada ispiše ćelu poruku, počne sa  ispisivanjem
od početka.  Za izlazak  iz ove  opcije potrebno  je pritisnuti taster (ENTER).
Pored ovih komandi EDITOR još  poznaje i komande "(" (SS  + R) i ")" (SS  + T).
Koristeći ove  komande moguće  je pomerati  kursor po  poruci i  po potrebi  je
ispravljati.
  Sledeća opcija omogućava vam da gotov intro snimite  na kasetu. Kasnije  ćete
taj Intro moći da učitate od bilo koje adrese u RAM-u i, naravno, startovati ga
od te adrese. Ne treba brinuti o adresi za učitavanje: program će raditi učitan
na bilo koju slobodnu adresu u RAM-u.
  Opcija pod rednim brojem tri daje  kratko uputstvo o  tome kako ubaciti intro
program u igru, bilo da se ona učitava iz BASIC-a ili mašinca.
  Sledeća opcija ima ulogu da razbije monotoniju. Naime,  ako bi skrol uvek bio
isti,  posle  nekoliko  igara  to bi  postalo  dosadno.  Zbog  toga je  moguće,
menjajući neke parametre skrola, menjati i efekat. Stanovanjem ove opcije ulazi
se u novi meni, sa sledećim opcijama:

  1. Character up
  2. Character down
  3. Bold
  4. Normal
  Q. Paper scroll
  W. Ink Scroll

  Prva i druga opcija  ovog  novog menija  omogućavaju  vam da  menjate  izgled
karaktera  kojim  je predstavljena  jedna  tačka iz  definicije  karakter seta.
Ukupno  postoji  8  različitih  definicija,  koje,  koristeći  tastere  1  i 2,
pomerate.gete-dole.
  Treća i četvrta opcija  menjaju definiciju  karakter seta. Možete izabrati da
karakter set bude originalni Spectrumov (iz ROM-a), ili novi, podebljani.
  Koristeći petu ili šestu  opciju moguće  je izabrati  da li  će se skrol boja
vršiti po slovima, ili po pozadini.  Na ovaj  način  značajno se menja  efektat
koji se dobija ovim programom.

  Kako raditi sa B.I.M.-om

  Prva stvar koju je potrebno uraditi jeste da se unese tekst za skrolovanje.Ne
zaboravite, na  kraju teksta  potrebno je  staviti @  kao marker.  Ukoliko ovaj
marker zaboravite da stavite, program  će nastaviti da na ekranu  ispisuje neke
gluposti, sve dok negde u memoriji ne naiđe na @.
  Zatim je potrebno da, koristeći opciju 4 iz glavnog menija,odredite parametre
za skrol. Sada možete snimiti gotov intro. Intro je dugačak 1536 bajtova.

  Kako ubaciti intro u igru?
  
  Kao prvo, potrebno je da cela igra bude učitana u memoriju računara,ali da se
pritom  ne startuje.  Zatim je  potrebno pretražiti  memoriju i  pronaći  negde
prazan blok memorije dužine 1,5 Kb.  U ovo područje je, sada, potrebno  učitati
snimljeni intro. Preostalo nam je još samo  da učinimo da igra pre nego što  se
startuje pozove ovaj naš intro.
  U poslednje vreme  sve igre  za Spectrum  dolaze snimljene,  uglavnom, na dva
načina. Prvi je  takozvani Spec-Mac sistem,  a drugi je  učitavanje direktno iz
BASIC-a.  Ukoliko se  igra u  koju želimo  da unesemo  intro  učitava  Spec-Mac
sistemom, potrebno je da u BASIC-u takve igre izvršimo sledeću izmenu:
    1. Učitamo BASIC sa MERGE ""
    2. Nakon toga treba da pogledamo kakav je sadržaj lokacija 23797,
       23800 i 23808. Zapamtićemo lokaciju čiji je sadržaj bio 205.
    3. Zatim je potrebno da 20. liniju BASIC-a zamenimo sa:

    20 CLEAR 24999: POKE ,195: RANDOMIZE USR 23760: RANDOMIZE
    USR (adresa gde je učitan intro): RANDOMIZE USR (zapamćena adresa + 3)

    4. Ovako prepravljen BASIC sada možemo snimiti na neku kasetu.
    
  Iza BASIC-a treba snimiti  ostale delove  igre (screen$,  prvi deo od 25000 u
dužini 20000, drugi  deo od 45000  u dužini 20536,  treći deo od  23296 dugačak
1704 i drugi screen$). Naravno, tu je potrebno da bude snimljen i intro.
  Ukoliko se igra u koju želimo da ubacimo  intro učitava iz BASIC-a, uradićemo
sledeće:

    1. Učitamo BASIC sa MERGE ""
    2. Ispred poslednje RANDOMIZE USR instrukcije stavićemo RANDOMIZE USR
       (adresa gde je učitan intro)
    3. Snimimo BASIC, a iza njega i igru u koju je ubačen intro.

  Ukoliko se igra u  koju želite  da ubacite  ovaj intro  učitava na neki drugi
način, pokušajte sami da pronađete način na koji ćete to izvesti.

  Big scroll

  U prvom delu teksta opisali smo rad sa Intro Makerom,kao i kako da ga ubacite
u igru. Sada vam  dajemo i uprošćenu, a  u isto vreme i  detaljno dokumentovanu
rutinu za skrol poruka po jednoj trećini ekrana. Listing je dat u formatu Laser
Genius-a. Ako koristite GENS3M21 i  slične programe, moraćete da izvršite  neke
izmene. Naredbu DB potrebno je ćelu kucati kao DEFB. Ukoliko se iza nje  nalazi
neki string, potrebno ju je promeniti u DEFM; PUT instrukciju treba izbaciti, a
ispred svake linije potrebno je da stoji linijski broj. Evo rutine:

        ORG  25500        ; Adresa odakle se program izvršava.
        PUT  25500        ; Mesto gde se smešta program.
        XOR  A            ; U  sistemsku  promenljivu  LAST_K
                          ; smeštamo
        LD   (23560),A    ; nulu, tako da sada možemo da detek-
                          ; tujemo
                          ; kada je pritisnut neki taster za povra-
                          ; tak.
        LD   HL,16384     ; Rutina za brisanje ekrana.
        LD   DE,16385     ; U prvi bajt postavimo nulu, a zatim s
        LD   (HL),A       ; njim popunimo ćelu video memoriju.
        LD   BC6911       ;
        LDIR              ;
        LD   HL,tekst     ; Početak teksta u  memoriji smeštamo u
        LD   (tek),HL     ; memorijsku lokaciju, koja se koristi ;
                          ; kao varijabla.
        LD   HL,buffer    ; Početak bafera se takode smešta u
        LD   (buff),HL    ; memorijsku lokaciju.
        LD   (brojac),A   ; U brojač se smešta nula.
ispis:  LD   A,(brojac)   ; Uzima se vrednost  iz brojača.
        AND  A            ; Proverava se da li je nula.
        JP   Z,slovo      ; Ukoliko jeste,  postavlja se novo slovo.
        DEC  A            ; Umanji se brojač za jedan.
        LD   (brojač),A   ; I to se sada smešta kao brojač.
        LD   HL,22528+512 ; U HL smeštamo početak atributa
                          ; poslednje trećine ekrana.
        LD   B,8          ; Brojač redova postavljamo na 8.
wl:     PUSH BC           ; Pamtimo lu vrednost.
        LD   B,31         ; U redu imamo 31 karakter. Trideset
                          ; drugi moramo da maskiramo.
w2:     LD   (HL),A       ; Postavljamo boju atributa za karakter.
        INC  HL           ; Tako radimo za 31 karakter u redu.
        DJNZ w2           ;
        POP  BC           ; Obnavljamo brojač redova.
        INC  HL           ; Preskačemo 32. karakter.
        INC  A            ; Uvećavamo boju za jedan.
        CP   8            ; Ukoliko je veća od 8 pozivamo
        CALL Z,chg        ; chg, gde se boja ponovo postavlja
                          ; na početnu vrednost.
        DJNZ wl           ; Idemo na sledeći red.
        CALL scroll       ; Na rutinu za skrol donje trećine.
        LD   B,8          ; Novi brojač postavljamo na 8.
        LD   HL,20480 + 31; Adresa od koje se smešta novo slovo.
        LD   DE,(buff)    ; U DE se postavlja početak tablice.
toopl:  PUSH BC           ; Na stek se smeštaju vređnosti
        PUSH DE           ; registarskih aprova BC, DE i HL.
        PUSH HL           ;
        LD   B,8          ; Brojač postavljamo na 8.
        LD   A,(DE)       ; Uzimamo prvi podatak iz tablice.
        AND  A            ; Da li je nula?
        JR   Z,toop2      ; Ukoliko jeste, idi na toop2.
        LD   IX,tble      ; U IX je početak tablice za definiciju
                          ; jedne uvećane tačke.
toop3:  LD   A,(IX + 0)   ; Uzima se jedan podatak,
        LD   (HL),A       ; a zatim se smešta u video memoriju.
        INC  H            ; Sledeći red na ekranu i
        INC  IX           ; sledeći podatak iz tablice.
        DJNZ toop3        ; Crta se  ceo karakter.
        JR   nxt2         ; Nastavlja se program.
toop2:  LD   (HL), A      ; Postavlja se prazan karakter na ekran.
        INC  H
        DJNZ toop2
nxt2:   POP  HL           ; Sa steka se uzima stara vrednost za
        LD   DE,32        ; HL a zatim se uvećava za 32  da bi
        ADD  HL,DE        ; se dobio početak za sledeći red.
        POP  DE           ; Obnavlja se vrednost sa steka,
        INC  DE           ; a zatim se uvežava za jedan.
        POP  BC           ; Obnavlja se vrednost brojača.
        DJNZ toopl        ; Dok je on različit od nule, petlja
                          ; se ponavlja.
        LD   (buff),DE    ; Vrednost se ponavlja u 'buff.
        LD   A,(23560)    ; Da li je pritisnut neki taster?
        AND  A            ; Ukoliko jeste, vrednost će biti
        RET  NZ           ; različita od nule i doći će do povratka.
        JR   ispis        ; Ukoliko je nula, program se nastavlja.
chg:    LD   A,l          ; Registar A dobija novu vrednost.'
        RET               ; Povratak.
change: LD   HL.tekst     ; Ponovo se postavlja vrednost
        LD   (tek),HL     ; početka teksta u memoriji u varijablu
        LD   A,(HL)       ; 'tek',  a zatim se kod prvog karaktera
        RET               ; smešta u registar A. Povratak.
kec:    LD   A,255        ; U registar A smešta se 255, a  zatim
        JR   mrt          ; dolazi do povratka
scroll: LD   HL,20481     ; Postavljaju se početne vređnosti
        LD   DE,20480     ; za skrol ekrana.
        HALT              ; Čeka se da se završi interapt tj. da
                          ; elektronski mlaz dođe u  gornji
                          ; deo ekrana.
        LD   B,64         ; Potrebno je skrolovati 64 linije.
kop:    PUSH BC           ; Skrolovanje se vrši LDI
        LDI               ; naredbom, jer je ona mnogo
        LDI               ; brža od LDIR naredbe, ali
                          ; zbog toga prosto guta memoriju.
                          ; U ovom slučaju potrebno je postaviti
        LDI               ; 32 puta, jer jedna LDI instrukcija
        LDI               ; i premešta samo jedan bajt.
        POP  BC           ; Pošto imamo 64 linije, to moramo
        DJNZ kop          ; da izvršimo 64 puta.
slovo:  LD   HL,(tek)     ; U HL se smešta lokacija, sa koje je
                          ; potrebno uzeti podatak za skrol.
        LD   A,8          ; U brojač se postavlja 8.
        LD   (brojac),A   ;
        LD   De,buffer    ; Postavlja se ukazivač početka bafera
        LD   (buff),DE    ; na fizički početak bafera.
        LD   A,(HL)       ; Kod novog karaktera smešta se u A.
        CP   "&"          ; Da li je on '&'?
        CALL Z,change     ; Ukoliko jeste, pozovi change.
        INC  HL           ; Pomeri pokazivač na sledeći karakter
        LD   (tek),HL     ; i zapamti tu vrednost.
        CALL convert      ; Pozivamo potprogram convert.
        LD   B,8          ; Postavljamo brojač ciklusa.
        LD   HL,buffer    ; Početak bafera se smešta u HL.
m2:     PUSH BC           ; Pamti se vrednost brojača.
        LD   B,8          ; Novi brojač.
        LD   DE,buffl     ; U DE je početak bafera buffl.
ml:     LD   A,(DE)       ; Uzima se prvi podatak.
        RLCA              ; Rotira se ulevo. Sedmi bit u CARRY.
        LD   (DE),A       ; Dobijena vrednost se zatim ponovo
                          ; smešta u memoriju.
        JR   C,kec        ; Ako je CARRY setovan, zovemo 'kec'.
        XOR  A            ; Registar A = 0.
nxt:    LD   (HL),A       ; Vrednost registra A smešta se u me-
                          ; moriju.
        INC  DE           ; Povećava se vrednost DE.
        INC  HL           ; Povećava se vrednost HL.
        DJNZ ml           ; Obnovi ciklus.
        POP  BC           ; Pokupi vrednost za brojač.
        DJNZ m2           ; Obnovi ciklus.  •
        JP   ispis        ; Idi na početak programa.
convert:LD   L,A          ; U registar L se smešta kod karaktera.
        LD   H,0          ; U registru H je nula. Znači, u HL je
        ADD  HL,HL        ; kod  karaktera. Zatim se množi sa 8,
        ADD  HL,HL        ; jer svaki karakter ima 8 bajtova
        ADD  HL,HL        ; za svoju definiciju.
        LD   DE, # 3C00   ; Početak definicije karaktera
        ADD  HL,DE        ; To se sabira sa vrednošću u HL.
        LD   DE,buffl     ; U DE je početak bufferal.
moop:   LD   A, (HL)      ; prvi  bajt iz definicije
                          ; karaktera.
        LD   (DE),A       ; Smešta se u bafer.
        INC  DE           ; Povećava se DE.
        INC  HL           ; Povećava se HL.
        DJNZ moop         ; Tako se radi osam puta.
        RET               ; Povratak na program.
tble:   DB   24,36,90,165
                          ; Tablica za definiciju jednog
        DB   165,90,36,24
                          ; karaktera, koji predstavlja
                          ; jednu tačku originalnog karaktera.
buffl:  DS   8            ; Bafer za jedan red slova.
buffer: DS   64           ; Bafer za sve tačke slova.
buff:   DS   2
tek:    DS   2            ;
brojač: DS   1            ;
tekst:  DB   „Svet igara 4"
                          ; Tekst koji se skroluje.
        DB   "&"          ; Na kraju  obavezno mora biti &.
        
  Sada sledi i program koji smo vam pripremili za ovaj broj-BIG(l) INTRO MAKER.
Da biste ga imali na svojoj kaseti potrebno je da pažljivo prekucate listing sa
str. 38 i startujete ga. Ukoliko vam kompjuter ispiše poruku ERROR potrebno  je
da pronađete grešku, i zatim  ponovo startujete program. Ukoliko ste  sve dobro
uneli kompjuter  će od  vas zatražiti  da stavite  kasetu na  koju želite da se
snimi B.I.M., a zatim će ga i snimiti.
  Na ovaj način  dobili ste još  jedan intro program za računar ZX Spectrum. Da
biste ga učitali potrebno je da ispred mašinskog dela snimite sledeći BASIC:

    10 CLEAR 65535:LOAD "" CODE 27000
    20 RANDOMIZE USR 27000: RANDOMIZE USR 4535

                            • • •
                             
  Ovo je sve  što smo  vam pripremili  za ovo  izdanje Spectrum Intro servisa.
Ukoliko vam  nešto od  ovoga nije  bilo jasno,  slobodno nam  pišite. Adresa je
ista:
                       Svet kompjutera
                        Makedonska 31
                        11000 Beograd
                  (za Spectrum Intro servis)

  Do čitanja u sledećem broju!