23. 8. 2008

Najdlhsi program na reset ZX Spectra

Jelikož se mi na netu povedlo vyšťourat pár starších článků z bývalého SpeccyWebu, tak je zde občas uveřejníme. Dnes to bude: zabavny prispevok od mikezt. :)

Vo svojich programoch budete mozno niekedy potrebovat funkciu RESET. Ja som vytvoril najdlhsi program na tuto uzitocnu funkciu. Program skutocne vyuziva do posledneho bitu celu pamat, od adresy 16384 (#4000) az po 65535 (#ffff). Tu je zdrojovy text:


          ld hl,RESET
          ld de,16384
          push de
          ld bc,RESETLEN
          ldir
          ret
RESET     ld hl,16384+RESETLEN
          ld d,h
          ld e,l
          inc e
          ld bc,(65536-16384+RESETLEN)
          ld (hl),0
          ldir
RESETLEN  equ $-RESET


Ako je vidiet, program nie je relokovatelny, ale moze sa prelozit na lubovolne miesto v pamati od 16384+RESETLEN az po 65535-RESETLEN-13. Pre majitelov 128ciek by som doporucil na zaciatok doplnit OUT 32765,16, aby sa im po resete objavila prva stranka a prva videoram. Mozno si hovorite, to nie je mozne, tychto par riadkov zdrojoveho textu sa hrdo nazyva najdlhsi program na reset ZX Spectra? Ano, vazeny priatelia, je to tak. Program totiz sam o sebe nie je tym programom, ktory reset vykonava, ale iba jeho generatorom. Program si pozorne prestudujte a ak vam nic nehovori, vyskusajte si ho krokovat vo svojom oblubenom monitore strojoveho kodu.

Prajem vam vela uspesnych resetov vasho milacika a tiez vasho ZX Spectra.

mikezt

4 komentáře:

Anonymní řekl(a)...

Mozem sa mylit, ale nechyba nahodou pred 'push de' este 'ld bc,RESETLEN' ?
Roman

Shrek řekl(a)...

Jaj dekuji ;)

ja jsem to jen tuupe opsal a omylem jsem tu jednu radku smazal ;)

sweet128 řekl(a)...

Bezva program.

f6 řekl(a)...

vyborne! od ted se moje spectrum docka jen kvalitnich resetovych vyprasku ve stylu s/m! :)