Čvn 172006
 

V tomto serálu si ukážeme použítí služeb MDOS3 a vytvoříme v několika dílech program PATCHRUN.

Program bude mít za úkol projít všechny diskety na aktuální partišně a na nich najít soubor run.P a ten opatchovat tak, aby šel použít i na neupravených 128KB strojích.

Když si prohlédneme soubor README_cz.txt tak se v něm dočteme, že File Manager od George K. nepracuje s neupravenými ZXS128. Je tam také postup, jak tento program patchnout. Náš program to udělá za nás a pro jistotu na všech disketách.

K tomu budeme potřebovat assembler as, program bin2tap a zmakebas. Podívejte se do článku 0.díl: příprava assembleru. Zmakebas byl na stránkách MB MANIAX, ale bůhvíproč tyto stránky stále nejdou. ZMAKEBAS si u nás, snad je to správně.

Připravíme si taky soubor Makefile, podle kterého kompilace proběhne, obsah zaváděcího basicu (a využijeme vlastností ZMAKEBAS), adresář s „knihovními“ funkcemi (uphl, dowhl, font, programy pro obsluhu klávesnice, test breaku).

Probereme si některé postupně:

downde.a80:

; posune DE o 8 miroradku dolu

DOWNDE8:        ld      a,e            ;nizzi bajt
                add     a,%00100000    ;pripocti 1 k cislu ATTR radku v tretine
                                       ;ponecha cislo sloupce
                ld      e,a            ;vrat zpet
                ret     nc             ;pokud nepreteklo, OK
                ld      a,d
                add     a,8            ;zvys cislo tretiny
                cp      %01011000      ;nebude to nahodou cislo 3?
                jr      c,DOWNDE8A     ;neni, skok
                and     %111           ;je: nech cislo radku v ATTR
                or      %01000000      ;ostatni nastav na zacatek (tretina cislo 0)
DOWNDE8A:       ld      d,a            ;na spravne %010x xxx.
                ret

upde8.a80

;posune DE o 8 mikroradku nahoru

UPDE8:          ld      a,e
                sub     %00100000
                ld      e,a
                ret     nc
                ld      a,d
                sub     8
                cp      %01000000               ;nesmi byt mensi nez toto cislo.
                jr      nc,UPDE8A
                and     %111
                or      %01010000
UPDE8A:         ld      d,a
                ret

DOWNDE8 a UPDE8 jsou rutiny vhodné pro vytváření seznamů. Občas je třeba naplnit seznam zhora dolů, nebo zdola nahoru.

inkey.a80

;knihovna INKEY
;umoznuje volat test klaves z prestrankovane ROM do MDOS3
;samozrejme pak INKEY2 z normalni ZXROM
;ci INKEY1 ale bez nastaveneho modu L.

;WARNING WARNING WARNING WARNING WARNING
;POUZIVA BASIC PROMENNE a registr IY=23610


INKEY:          rst     $28
                dw      INKEY2
                ret

INKEY2:         ld      a,204
                ld      (iy+1),a
                xor     a
                ld      (iy+7),a
                ld      (iy+48),a
INKEY1:         ei
                halt
                bit     5,(iy+1)
                jr      z,INKEY1
                res     5,(iy+1)
                ld      a,(23560)
                ret

KEYBREAK:       ;out:nc=stisknut BREAK
                ld      a,254
                in      a,(254)
                rra
                ret     c
                ld      a,127
                in      a,(254)
                rra

shade.a80

;rutiny na prestrankovani do D80
;a do ZXROM

SHADE:          ld      a,79
                ld      de,TAB-26
                call    $25AB
                ld      hl,0
                ld      (TAB),hl
                ld      hl,16119
                ld      (TAB+2),hl
                rst     0
                ret

TAB:            dw      0
                dw      16119

ZXROM:          ld      a,32
                ld      (16119),a
                jp      $1700

Součástí knihoven jsou ještě soubory print.a80 (tiskne 42 znaků na řádek, opsaný ze ZXM 5/1994), font.b (font, kterým se tiskne), procento.a80 (z článku Výpočet procent pro 32-bitová čísla) a standartní rutina downhl.a80.

Dole na stránce najdete celý projekt ke stažení, ale zatím bez hlavního kódu. Ten budeme probírat v dalších částech. Zatím ještě není ani napsán 🙂

Stažení:

  Jeden komentář na “Programujeme pro MDOS3 (1)”

  1. Tyjo, esli dobře chápu, tohle je live přenos z tvorby programu. Realtime rulez!

    Jsem zvědav, jestli tu najdu i seznam nadávek pořízený ve chvíli, kdy program nefunguje tak, jak má :o)

Je nám líto, ale formulář pro přidávání komentářů je momentálně uzavřen.