Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libc/sys/go32/screen.S')
-rw-r--r--newlib/libc/sys/go32/screen.S256
1 files changed, 0 insertions, 256 deletions
diff --git a/newlib/libc/sys/go32/screen.S b/newlib/libc/sys/go32/screen.S
deleted file mode 100644
index 0d4b1732d..000000000
--- a/newlib/libc/sys/go32/screen.S
+++ /dev/null
@@ -1,256 +0,0 @@
-/* This is file SCREEN.S */
-/*
-** Copyright (C) 1993 DJ Delorie
-**
-** This file is distributed under the terms listed in the document
-** "copying.dj".
-** A copy of "copying.dj" should accompany this file; if not, a copy
-** should be available from where this file was obtained. This file
-** may not be distributed without a verbatim copy of "copying.dj".
-**
-** This file is distributed WITHOUT ANY WARRANTY; without even the implied
-** warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-**
-** Modified by J. Alan Eldridge, Liberty Brokerage, 77 Water St, NYC 10005
-**
-** added global char ScreenAttrib -- this is the attribute
-** used by ScreenClear(): it defaults to 0x07 so as not to
-** break existing code.
-**
-** Modified by C. Sandmann (sandmann@clio.rice.edu) for DPMI support
-** Combined SCREEN2.S and SCREEN.C into SCREEN.S
-*/
-
- .data
-
- .globl _ScreenAttrib
-_ScreenAttrib:
- .byte 0x07
-
- .text
-
- .align 2
- .globl _ScreenSetCursor
- /* row, col */
-_ScreenSetCursor:
- pushl %ebp
- movl %esp,%ebp
- pushl %ebx
- pushl %esi
- pushl %edi
- movb $0x02,%ah
- movb $0,%bh
- movb 8(%ebp),%dh
- movb 12(%ebp),%dl
- int $0x10
- popl %edi
- popl %esi
- popl %ebx
- popl %ebp
- ret
-
- .align 2
- .globl _ScreenGetCursor
- /* &row, &col */
-_ScreenGetCursor:
- pushl %ebp
- movl %esp,%ebp
- pushl %ebx
- pushl %esi
- pushl %edi
- movb $0x03,%ah
- movb $0,%bh
- pushl %ebp
- int $0x10
- popl %ebp
- movl 8(%ebp),%esi
- movzbl %dh,%eax
- movl %eax,(%esi)
- movl 12(%ebp),%esi
- movzbl %dl,%eax
- movl %eax,(%esi)
- popl %edi
- popl %esi
- popl %ebx
- popl %ebp
- ret
-
- .align 2
- .globl _ScreenClear
-_ScreenClear:
- pushl %edi
- call _ScreenCols
- movl %eax,%ecx
- call _ScreenRows
- /* ECX is total words to store */
- imull %eax,%ecx
- movl _ScreenPrimary,%eax
- call dosmemsetup
- movl %eax,%edi
- push %es
- push %gs
- pop %es
- movb $0x20,%al
- movb _ScreenAttrib,%ah
- rep
- stosw
- pop %es
- popl %edi
- ret
-
- .align 2
- .globl _ScreenRows
-_ScreenRows:
- movl $0x484,%eax
- call dosmemsetup
- movzbl %gs:(%eax),%eax
- incl %eax
- ret
-
- .align 2
- .globl _ScreenCols
-_ScreenCols:
- movl $0x44a,%eax
- call dosmemsetup
- movzwl %gs:(%eax),%eax
- ret
-
- .align 2
- .globl _ScreenMode
-_ScreenMode:
- movl $0x449,%eax
- call dosmemsetup
- movzbl %gs:(%eax),%eax
- ret
-
- .align 2
- .globl _ScreenPutChar
-_ScreenPutChar:
- /* int ch, int attr, unsigned x, unsigned y */
-/*
- if ( (x >= ScreenCols()) || (y >= ScreenRows())) return;
- ch &= 0xff;
- attr = (attr & 0xff) << 8;
- *(unsigned short *)(ScreenPrimary+x+y*ScreenCols()) = ch | attr;
-*/
- call _ScreenRows
- cmpl %eax,16(%esp)
- jae L1
- call _ScreenCols
- cmpl %eax,12(%esp)
- jae L1
- /* Out of range */
- movl %eax,%edx
- imull 16(%esp),%edx
- addl 12(%esp),%edx
- /* EDX = x + y*ScreenCols */
-
- movb 4(%esp),%cl
- movb 8(%esp),%ch
-
- movl _ScreenPrimary,%eax
- call dosmemsetup
- movw %cx,%gs:(%eax,%edx,2)
-L1:
- ret
-
-/* A quick way to update the screen from a logical video buffer, used
- primarily for DPMI full screen management */
- .align 2
- .globl _ScreenUpdate
- /* (void *)screenbuf */
-_ScreenUpdate:
- call _ScreenRows
- movl %eax,%ecx
- call _ScreenCols
- imull %eax,%ecx
- sarl $1,%ecx
- /* Number of long words in screen */
-
- movl _ScreenPrimary,%eax
- call dosmemsetup
- movl 4(%esp),%edx
- /* screenbuf */
-
- pushl %esi
- pushl %edi
- movl %eax,%edi
- movl %edx,%esi
- push %es
- push %gs
- pop %es
- rep
- movsl
- /* move ECX bytes to Real area */
- pop %es
- popl %edi
- popl %esi
- ret
-
-/* A quick way to update a screen line from a logical video buffer, used
- primarily for DPMI full screen management */
- .align 2
- .globl _ScreenUpdateLine
- /* (void *)screenline, int row */
-_ScreenUpdateLine:
- call _ScreenCols
- movl %eax,%ecx
- sarl $1,%ecx
- /* Number of long words in screen line */
- shll $1,%eax
- imull 8(%esp),%eax
- addl _ScreenPrimary,%eax
- call dosmemsetup
- movl 4(%esp),%edx
- /* screenbuf */
-
- pushl %esi
- pushl %edi
- movl %eax,%edi
- movl %edx,%esi
- push %es
- push %gs
- pop %es
- rep
- movsl
- /* move ECX bytes to Real area */
- pop %es
- popl %edi
- popl %esi
- ret
-
-
-/* A quick way to update the screen from a logical video buffer, used
- primarily for DPMI full screen management */
- .align 2
- .globl _ScreenRetrieve
- /* (void *)screenbuf */
-_ScreenRetrieve:
- call _ScreenRows
- movl %eax,%ecx
- call _ScreenCols
- imull %eax,%ecx
- sarl $1,%ecx
- /* Number of long words in screen */
-
- movl _ScreenPrimary,%eax
- call dosmemsetup
- movl 4(%esp),%edx
- /* screenbuf */
-
- pushl %esi
- pushl %edi
- movl %eax,%esi
- movl %edx,%edi
- push %ds
- push %gs
- pop %ds
- rep
- movsl
- /* move ECX bytes to Real area */
- pop %ds
- popl %edi
- popl %esi
- ret
-
-