home *** CD-ROM | disk | FTP | other *** search
- ; *****************
- ; * PROUT.asm *
- ; ************** **************
- ; * Copyright TimeSlice, Inc. 1985, 86, 87. *
- ; *******************************************
- ;
- ;
- include ts.inc
- ;
- start_data
- end_data
- ;
- start_code
- ;
- ;***
- ;* PROUT( X , Y , V , STRING )
- ;* Display 'string' on monochrome screen at position x, y.
- ;* Fully reentrant.
- ;***
- ;
- start_struct
- ifdef MICROSOFT
- mbr prtsi d_int ?
- mbr prtdi d_int ?
- endif
- mbr prtbp d_int ?
- mbr prtret d_ret ?
- mbr prtx d_int ?
- mbr prty d_int ?
- mbr prtv d_int ?
- mbr prtstr d_ptr ?
- ;
- routine prout
- push bp
- push_sdi
- mov bp,sp
- push ds
- push es ;es <-- video segment
- pushf ;save flags (especially direction flag)
- cld ;make sure to read and display l->r
- mov ax,_vidseg
- mov es,ax
- ldint ax,[bp].prty ;row number
- mov bx,50h ;times 80 character/row
- mul bx
- add ax,[bp].prtx ;add column number
- shl ax,1 ;multiply by 2 for video bytes
- mov di,ax ;di <-- offset of screen position
- ldptr ds,si,[bp].prtstr,d ;si <-- offset of string position
- ldint bx,[bp].prtv ;video attribute
- mov ah,bl
- prout0: lodsb ;al <- one character
- cmp al,0 ;finnished ?
- je prout1
- stosw ;put ax to screen
- jmp prout0
- prout1: popf ;restore flags, es & bp
- pop es
- pop ds
- pop_sdi
- pop bp
- return prout
- ;
- end_code
-
-