🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.asm
Article #641

Re: Problem z przesunięciem ekranu

#641
From: Johnny
Date: Thu, 14 Sep 2006 09:32
106 lines
3271 bytes
Mam kolejny problem. Wszystko u mnie działa pięknie do momentu gdy
wskaźnik nie dojdzie do ostatniego wiersza i przedostatniej kolumny
wówczas wprowadzony znak nie zostaje wyświetlony, pojawia się on dopiero
wtedy gdy następuje przewinięcie okna. I tak się dzieje cały czas znak z
przedostatniej kolumny nie jest wyświetlany. Nie mam pojęcia dlaczego.
Podejrzewam, że może atrybut w pamięci dla tego obszaru jest "dziwny"
ale po pierwsze niby dlaczego po drugie nie potrafię go podejrzeć
(podgląd B800 w trybie debugowania CodeView pokazuje mi oczywiście
zawartość bieżącego okna).

Poniżej zamieszczam kod programu. Może ktoś wie w czym rzecz.

title 6_04
.model small
.stack 100h
.386
.code
;---------------------------------------------
; main
;---------------------------------------------
main proc
mov ax,@data		; inicjalizacja ds
mov ds,ax

mov ah,0h		; ustawienie trybu grafiki
mov al,1h
mov bh,0h
int 10h

mov ah,3h		; odczytanie położenia wskaźnika
int 10h

odczytaj:		; odczyt znaku
mov ah,10h
mov bh,0h
int 16h

cmp ah,1h		; jeżeli wprowadzono ESC zakończ program
je exit

cmp ah,2h		; jeżeli wprowadzono znak z zakresu 0-9
jb odczytaj		; wyświetl go i przesuń wskaźnik
cmp ah,0Bh
ja odczytaj

;mov ah,0Ah		; wyświetl znak
;mov bh,0h
;mov cx,1h
;int 10h

mov ah,9h		; wyświetl znak
mov bh,0h
mov bl,7h
mov cx,1h
int 10h

inc dl			; zwiększ wskaźnik kolumny
;cmp dl,4Fh		; sprawdź czy to nie jest ostatnia kolumna
cmp dl,27h
ja next_row		; jeśli tak to przejdź do następnego wiersza

mov ah,2h		; ustaw wskaźnik kolumnę dalej
int 10h
jmp odczytaj

next_row:		; przejście do następnego wiersza
inc dh			; zwiększ wskaźnik wiersza
cmp dh,18h		; sprawdź czy to nie jest ostatni wiersz
ja scroll		; jeśli tak skocz do sekcji przewijania okna

mov ah,2h		; ustaw wskaźnik w nowym wierszu
mov dl,0h
int 10h

jmp odczytaj		; odczytaj kolejny znak

scroll:			; przewiń okno
mov ah,6h
mov al,1h
xor cx,cx
;mov dl,4Fh
mov dl,27h
mov dh,18h
mov bh,7h
int 10h

mov ah,2h		; ustaw wskaźnik w nowym wierszu
mov bx,0h
mov dl,0h
mov dh,18h
int 10h

jmp odczytaj		; odczytaj kolejny znak


exit:
mov ax,4C00h		; zakończenie procedury
int 21h
main endp

.data
end main


-- 
Johnny
Technical Details
Message-ID: <eeb7nb$1r0$1@nemesis.news.tpi.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.nask.pl!news.nask.org.pl!newsfeed.tpinternet.pl!nemesis.news.tpi.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail
References: <ee8g03$ia2$1@nemesis.news.tpi.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.nask.pl!news.nask.org.pl!newsfeed.tpinternet.pl!nemesis.news.tpi.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail
From: Johnny <johnny_bez_spamu_@klub.chip.pl>
Newsgroups: pl.comp.lang.asm
Subject: Re: Problem z przesunięciem ekranu
Date: Thu, 14 Sep 2006 11:32:38 +0200
Organization: tp.internet - http://www.tpi.pl/
Lines: 106
Message-ID: <eeb7nb$1r0$1@nemesis.news.tpi.pl>
References: <ee8g03$ia2$1@nemesis.news.tpi.pl>
NNTP-Posting-Host: nat-132.wasko.pl
Mime-Version: 1.0
X-Trace: nemesis.news.tpi.pl 1158226475 1888 193.178.240.132 (14 Sep 2006 09:34:35 GMT)
X-Complaints-To: usenet@tpi.pl
NNTP-Posting-Date: Thu, 14 Sep 2006 09:34:35 +0000 (UTC)
User-Agent: Thunderbird 1.5.0.5 (Windows/20060719)
In-Reply-To: <ee8g03$ia2$1@nemesis.news.tpi.pl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit