; Dispose la page à l'offset spécifié dans la bitmap. La page est affichée ; quand cette routine s'achève. ; Testée avec TASM 4.0 par Jim Mischel 12/16/94. ; Appelable en C near comme suit : void ShowPage(unsigned int StartOffset); INPUT_STATUS_1 equ 03dah ;registre Input Status 1 CRTC_INDEX equ 03d4h ;registre Index CRT Controller START_ADDRESS_HIGH equ 0ch ;octet de poids fort de l'adresse de début de la bitmap START_ADDRESS_LOW equ 0dh ;octet de poids faible de l'adresse de début de la bitmap ShowPageParms struc dw 2 dup (?) ; BP empilé et adresse de retour StartOffset dw ? ;offset dans la bitmap de la page à afficher ShowPageParms ends .model small .code public _ShowPage _ShowPage proc near push bp ;préserve la stack frame de l'appelant mov bp,sp ;pointe sur la stack frame locale mov bl,START_ADDRESS_LOW ;precharge pour permuter mov bh,byte ptr StartOffset[bp] ; plus vite une fois que mov cl,START_ADDRESS_HIGH ; l'autorisation d'affichage détectée mov ch,byte ptr StartOffset+1[bp] mov dx,INPUT_STATUS_1 WaitDE: in al,dx test al,01h jnz WaitDE ;Paramètre l'offset de départ dans la mémoire vidéo de la page à afficher. mov dx,CRTC_INDEX mov ax,bx out dx,ax mov ax,cx out dx,ax ; Attend à présent une sync verticale, l'autre page sera invisible quand ;nous commencerons à l'afficher. mov dx,INPUT_STATUS_1 WaitVS: in al,dx test al,08h jz WaitVS pop bp ;restaure la stack frame de l'appelant ret _ShowPage endp end