home *** CD-ROM | disk | FTP | other *** search
-
- page 60,132
- title Screen - Video Display Routines
-
- ;************************************************************************
- ;* *
- ;* Copyright (c) 1985 *
- ;* by Stephen Wilhite, 7431 Saunderlane Ct, Worthington, Ohio *
- ;* *
- ;************************************************************************
-
- ;++
- ; ABSTRACT:
- ;
- ; ?
- ;
- ; ENVIRONMENT: MS-DOS, DEC Rainbow 100B
- ;
- ; AUTHOR: Steve Wilhite, CREATION DATE: 15-Feb-85
- ;
- ; REVISION HISTORY:
- ;
- ;--
- include dos.mac
- pseg
- ;+
- ; Table of Contents:
- ;-
-
- public Put_Char ; Write a character to the screen
- public Put_Data ; Write characters to the screeen
- public Put_Data_A ; Write characters & attributes to the screen
- public Put_Attr ; Write "n" attributes to the screen
- public Beep ; Beep at user
-
- ROM_LATOFS equ 0EF4H
-
- ; Define the structure of the video line
-
- VLine struc
- Text db 80 dup(?)
- Term db ?
- Link dw ?
- VLine ends
-
- dseg
- Buffer db 81 dup(?)
- endds
-
-
-
-
-
-
-
-
- ;+
- ; Put_Char(Ch)
- ;-
- $proc Put_Char
- push BP
- mov BP,SP
- push ES
- mov DI,0
- mov AL,@ab[BP]
- int 18H
- pop ES
- pop BP
- ret
- $endp Put_Char
-
-
-
-
-
-
-
-
- ;+
- ; Put_Data(Row, Col, Len, Buf)
- ;-
- $proc Put_Data
- push BP
- mov BP,SP
- push ES
- mov AX,2 ; Character only, no attributes
- mov BL,@ab[BP] ; Row (1-24)
- mov BH,@ab+2[BP] ; Column (1-80)
- mov CX,@ab+4[BP] ; Byte count
- mov SI,@ab+6[BP] ; Data offset
- mov DI,14H ; Write data to screen
- mov BP,DS ; for ROM code
- int 18H
- pop ES
- pop BP
- ret
- $endp Put_Data
-
- ;+
- ; Put_Data_A(Row, Col, Len, Buf, Attr)
- ;-
- $proc Put_Data_A
- push BP
- mov BP,SP
- push ES
- push DS ; ES := DS
- pop ES
- mov CX,@ab+4[BP] ; Byte count
- mov AL,@ab+8[BP] ; Get attribute
- mov DI,offset Buffer
- cld ; Forward direction
- rep stosb ; Fill buffer with the attribute
- mov AX,0 ; Attributes only
- mov BL,@ab[BP] ; Row (1-24)
- mov BH,@ab+2[BP] ; Column (1-80)
- mov CX,@ab+4[BP] ; Byte count
- mov SI,@ab+6[BP] ; Data offset
- mov DX,offset Buffer
- mov DI,14H ;
- mov BP,DS ; for ROM code
- int 18H ; Write characters and attributes to
- pop ES ; the screen
- pop BP
- ret
- $endp Put_Data_A
-
-
-
-
-
-
-
-
- ;+
- ; Put_Attr(Row, Col, Count, Attr)
- ;-
- $proc Put_Attr
- push BP
- mov BP,SP
- push ES
- push DS ; ES := DS
- pop ES
- mov CX,@ab+4[BP] ; Byte count
- mov AL,@ab+6[BP] ; Get attribute
- mov DI,offset Buffer
- cld ; Forward direction
- rep stosb ; Fill buffer with the attribute
- mov AX,1 ; Attributes only
- mov BL,@ab[BP] ; Row (1-24)
- mov BH,@ab+2[BP] ; Column (1-80)
- mov CX,@ab+4[BP] ; Byte count
- mov DX,offset Buffer
- mov DI,14H ;
- mov BP,DS ; for ROM code
- int 18H ; Write attributes to screen
- pop ES
- pop BP
- ret
- $endp Put_Attr
-
-
-
-
-
-
-
-
- ;+
- ; Beep()
- ;-
- $proc Beep
- mov AX,7 ; BEL
- push AX
- call Put_Char
- add SP,2
- ret
- $endp Beep
-
- endps
- end
-
-
- OK
-