
Vous n'êtes pas identifié.
Pages: 1 2
Ou alors y'a qu'a modifier cette routine la dans la mémoire:
; Subroutine at C000:2BB9
; Display the character in AL
; and advance the cursor to next position.
; If the first bit (MSB) of BL is on, then
; the old char on screen is first cleared; if the
; second bit is on, the color of the new char
; will be inverted.
;
; If AL = F6h, the current font will be the set at
; CED0:0000 for the next displayed char
; else if AL = F7h, the font will be the set at
; CF50:0000.
;
; Inputs: AL, BL
; Outputs: /
;
;
sub_C2BB9 proc near
cmp word ptr ds:0C4h, 0CE50h ; 0040:00C4 = segment of
; the current character font
jnz loc_C2BD7 ; if the current font is already
; not the normal set, then jump
cmp al, 0F6h ; '÷'
jnz loc_C2BCC
mov word ptr ds:0C4h, 0CED0h ; set the current font as the one
; saved at CED0:0000
retn ; and quit
; ---------------------------------------------------------------------------
loc_C2BCC: ; CODE XREF: sub_C2BB9+Aj
cmp al, 0F7h ; '¸'
jnz loc_C2BD7
mov word ptr ds:0C4h, 0CF50h ; set the current font as the one
; saved at CF50:0000
retn ; and quit
; ---------------------------------------------------------------------------
loc_C2BD7: ; CODE XREF: sub_C2BB9+6j
; sub_C2BB9+15j
push ax
push bx
push dx
push bp
push si
push es
mov bh, ds:62h ; BH = number of the current page
call sub_C2F4A ; Return in DX the position of the cursor
; in page with number BH (DH=line, DL=column)
;
; Inputs: BH
; Outputs: DL, DH
cmp word ptr ds:0C4h, 0CE50h
jnz loc_C2C16
cmp al, 8 ; if the user wanted to display the 'b' character
; to move the cursor backward
jnz loc_C2C06
sub dl, 1 ; decrement the column
jnb loc_C2C5B
mov ax, ds:4Ah
sub al, 1
mov dl, al ; if the column was zero then
; go to last column of the previous line
sub dh, 1
jnb loc_C2C5B
mov dx, 0
jmp short loc_C2C5B ; save the new position and quit
; ---------------------------------------------------------------------------
loc_C2C06: ; CODE XREF: sub_C2BB9+35j
cmp al, 0FFh
jz loc_C2C29
cmp al, 0Ah ; 'n' char
jz loc_C2C39
cmp al, 0Dh ; 'r' char
jnz loc_C2C16
xor dl, dl ; go to first column
jmp short loc_C2C5B ; save the new position and quit
; ---------------------------------------------------------------------------
loc_C2C16: ; CODE XREF: sub_C2BB9+31j
; sub_C2BB9+57j
mov bp, ds:0E0h
mov es, bp
mov bp, ds:4Eh ; display a normal char at the cursor's position
call sub_C2CCE ; Replace the character at line DH and column DL
; by the char with number AL.
; If the first (strongest) bit of BL is on, then
; the char on screen is first cleared; if the
; second bit is on, the color of the new char
; will be inverted.
;
; Inputs: AL, BL, DL, DH
; Ouputs: /
mov word ptr ds:0C4h, 0CE50h
loc_C2C29: ; CODE XREF: sub_C2BB9+4Fj
inc dx ; move the cursor to next position
xor ax, ax
mov al, dl
cmp ax, ds:4Ah ; test if we have reached the end of the line
jb loc_C2C5B ; if no then jump
xor dl, dl
call sub_C2A92 ; Move the cursor on the video page BH
; at line DH and column DL
;
; Inputs: BH, DL, DH
; Outputs: /
loc_C2C39: ; CODE XREF: sub_C2BB9+53j
cmp dh, ds:84h ; check the line of the cursor
jl loc_C2C59 ; jump if we had not reached the last line
mov bx, cx ; if yes move the whole screen up
xor cx, cx
mov dx, ds:4Ah
mov dh, ds:84h
dec dl
mov al, 1
call sub_C2AEC ; Move a text line up:
; Copy the chars CL to DL from each line
; between (CH+AL) and DH, paste it
; on the lines CH to (DH-AL) and clear those
; chars on lines (DH-AL) to DH.
;
; Inputs: AL, CL, CH, DL, DH
; Outputs: /
call sub_C304C ; Get the part of the current video page that contains
; the character on which the cursor will appear, then
; change this char in the copy by the sprite of the cursor
; The result is saved at 0040:0050.
;
; Inputs: /
; Outputs: new image in buffer at 0040:0050
mov cx, bx
jmp short loc_C2C5E
; ---------------------------------------------------------------------------
loc_C2C59: ; CODE XREF: sub_C2BB9+84j
inc dh ; move the cursor to the next position
loc_C2C5B: ; CODE XREF: sub_C2BB9+3Aj
; sub_C2BB9+46j ...
call sub_C2A92 ; Move the cursor on the video page BH
; at line DH and column DL
;
; Inputs: BH, DL, DH
; Outputs: /
loc_C2C5E: ; CODE XREF: sub_C2BB9+9Ej
pop es
pop si
pop bp
pop dx
pop bx
pop ax
retn
sub_C2BB9 endp:mrd:
Hors ligne
Pages: 1 2