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)”
Je nám líto, ale formulář pro přidávání komentářů je momentálně uzavřen.
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)