ještě jsem zapoměl dodat: DOSBox si přepněte do režimu Herculesu, aby ty příklady fungovaly. Potom není vůbec žádný problém (až na to vypínání videa).
DosBox jsem si přepnul do režimu Hercules, ale mám jeden problém: abych vymazal celou obrazovku, musím dát smyčku do 364 (zjištěno experimentálně). Pokud dám pouze 348 zůstane na konec obrazovky nevymazán (odhadl jsem to podle teček na střídavě 40h a 0fh). Přijde mi to jako by ta videoram pokračovala ještě 16 řádků než se vrátí opět nahoru do druhého mikrořádku....
Procedura putpixel mi funguje korektně, dokonce jsem si zkoušel v posledním příkladu přidávat ručně pixely a opravdu pravý dolní roh mám 719,347.
Ještě by se mi při hraní hodila procedura pro zpětné přepnutí do textu. Dělám věci po staru: překládám z příkazového řádku a program pak z příkazového řádku spustím. Když program skončí , zůstane dosbox v grafickém režimu, na obrazovce je změť čehosi, a musím to napravit poslepu napsáním CLS. Zkoušel jsem použít set_control text, dopadlo to špatně, vidím že tak jednoduchý to není (a na další jsem zatím neměl čas).
zdravim. To vymazani odpoledne zkusim, to je zajimavej problem (ale muze byt, treba je spatne nastavenej vert sync counter nebo tak). Prepnuti do textu, ok to dopisu, to neni tezke (je to totiz ta stejna procedura, jako pro prepnuti do grafiky, jen se tomu predhodi jinych 12 registru CRTC + prepnuti dvou bitu).
Asi to bude jak jsem to ráno odhadl. Zkusil jsem pár výpočtů: pro první čtvrtinu obrazovky (0.mikrořádek) potřebuji 90*348/4 = 7830 byte. Další (1.mikrořádek) začíná až na adrese 8192, což odpovídá i konstantám v proceduře putpixel. Je to zaokrouhlený na 8KB a celkem 32KB. Takhle to bude i jednodušší pro řadič při vykreslování).
Takže regulerní hodnota pro cyklus vymazání obrazovky je 32768
19. 7. 2024, 15:22 editováno autorem komentáře
A taky už asi vím proč se vám neprojevilo nedomazání obrazovky. Pokud se pouští Dosbox (a navíc máte variantu pro linux narozdíl ode mne kde ho provozuju v Win XP) pouze pro spustění jednoho COM programu, bude videoram "prázná". Já spustil Dosbox, v něm mi běží VC, pak spustím dávkou NASM a teprve pak spouštím COM, v tu dobu je už ve videpaměti spousta hodnot. Dokonce při přepnutí Dosboxu do grafického režimu Hercules se mi změní velikost okna Dosboxu.
Ještě přidám jednu perličku ke kartě Hercules. V roce 1996/97 když jsem psal diplomku kolegové vedle na pokoji měli počítač už s W95 a pouštěli nějaké porno. To mne inspirovalo k tomu abych naprogramoval pro svůj počítač "Hercules porno" Základem byla inspirace z obrázku od kreslíře Petra Urbana: dvě jednoduše obrysově nakreslená prasátka si to rozdávají. Programované je to v turbopascalu s knihovnou BGI.
Volkov po spuštění cizího programu kombinací шифт+ентер uvolnil víc paměti.
Občas ani to nestačilo... (640 KB je dost pro každého...
;oD )
Já volil jiný postup:
- jednoduché menu, kdy stačilo v CLI zadat položky, a ErrorLevel vrátil číslo řádku,
- složitější menu, definované souborem (obdoba NC.MNU
), kdy odsazené řádky naházel do RUN.BAT
, který se následně spustil...
Daly se s tím dělat opravdu kouzla. Škoda, že to někdy s příchodem Windows NT přestalo fungovat...
ano, kazda 1/4 obrazovych radku vzdycky zacina na nasobku 8 kB (na CGA taky ale tam jsou to jen sude/liche radky). Ale porad mi moc neni jasne, jak se ta "neviditelna" (a nemezana) oblast zobrazi v DOSBoxu. Ja v prikladech nikde mazani nemam, zacina se s prazdnym obsahem (ne uplne, je tam ten radek C:\ co se zmeni na asi 30 pixelu)
Zkoušel jsem si ted dát wait_key hned za init graphic a mám v dosboxu obrazovku plnou svislých pruhů tenký (40h) a silnější (0fh) + je tam nahoře pár pixelů. Možná to bude jinou verzí Dosboxu. Mám 0.74 (2002-2010) pro Windows.
Třeba v posledním příkladu (kreslení úsečky) je pro vymazání smyčka dlouhá pouze 90*348=31320 takže ve 4/4 obrazovky zbyyde dole kus nedomazaný. úsečku mi to pak vykreslilo korektně i přes nesmazanou obrazovku.
bude toto v tve konfiguraci (kdy je video RAM necim zaplnena ) funkcni? https://github.com/tisnik/8bit-fame/blob/master/pc-dos/hercules_putpixel.asm
je tam opravena ta smycka (a jeste lepsi bude REP STOSW, ale to uz je trivka)