Category : C Source Code
Archive   : MIKES40C.ZIP
Filename : PUTSCA.ASM
title putsca.asm - no snow screen update routine
;****************************************************************
;* No-snow screen display routine *
;* This routine moves screen attributes to a buffer on the *
;* current screen during horizontal retrace time, resulting in *
;* no screen flicker. *
;* *
;* definition: *
;* void putsca (unsigned , int, int, int); *
;* unsigned int attrib /* attribute *
;* int start_of_buff /* row*80 + col *
;* int length /* # of col *
;* int page /* video page *
;* *
;* note: designed for use with Microsoft 'C' (4.0) *
;* *
;* edit date: 10/19/86 by Mike Elkins *
;****************************************************************
_text segment byte public 'code'
assume cs:_text
public _putsca
_putsca proc near
; attrib = +6
; offset = +8
; length = +10
push bp ;save calling environment
mov bp,sp
push si
push di
push ds
mov ah,15 ;get current mode
int 10h ;system video
mov dx,3BAh ;monochrome port address
mov di,[bp+6] ;offset for attribute
add di,di ;correct for attribute bytes
cmp al,7 ;is b/w?
je movmno ;skip pages for mono
mov dx,3DAh ;color port
mov ax,0B800h ;color page 0
mov bx,[bp+10] ;get page
cmp bx,0
je mov001 ;page 0
mov ax,0B900h
cmp bx,1
je mov001 ;page 1
mov ax,0BA00h
cmp bx,2
je mov001 ;page 2
mov ax,0BB00h ;page 3
jmp mov001 ;skip past mono stuff
movmno: mov ax,0B000h ;set for mono address
mov001: add di,1 ;set to attribute byte
mov es,ax
mov cx,[bp+8] ;block length
mov002:
in al,dx ;screen status
test al,1 ;is 'high'?
jnz mov002 ;yes - wait
mov004: in al,dx ;screen status
test al,1 ;is 'low'?
jz mov004 ;yes - wait
mov ax,[bp+4]
mov es:[di],al ;mov byte to screen
add di,2 ;every other one
loop mov002
pop ds
pop di
pop si
pop bp
ret
_putsca endp
_text ends
end
Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!
This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.
But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/