home *** CD-ROM | disk | FTP | other *** search
- ;* ------------------------------------------------------- *
- ;* CSNAP.TSR *
- ;* Snapshotroutine zum Einbinden in das TSR-Gerüstprogramm *
- ;* (c) 1992 Ralph Seelig & DMV-Verlag *
- ;* ------------------------------------------------------- *
-
- datname db 'SCREEN.COM',0
- handle dw ?
-
- ;* ------------------------------------------------------- *
- TsrProgram PROC
-
- mov ah,0fh
- int 10h
- mov vmode,al
- cmp al,07h ; unerlaubte Modi ?
- jng @@erlaubt
- @@fehler:
-
- mov ah,02h ; dann TSR mit Piepston
- mov dl,07h
- int 21h
- ret ; beenden
-
- @@erlaubt:
- mov dx,offset datname
- xor cx,cx
- mov ah,3ch
- int 21h ; Datei erstellen
- jc @@fehler
-
- mov handle,ax ; Handle retten
- mov bx,ax
- mov cx,048h
- mov dx,offset runtime
- mov ah,40h
- int 21h ; Runtime schreiben
- mov al,vmode
- mov cx,7d0h
- mov dx,0b800h ; Segmentadresse Color
- cmp al,07h ; Monochrom-Modus
- jnz @@KeinMda ; nein => dann weiter
-
- mov cx,0fa0h
- mov dx,0b000h ; Segmentadresse HGC
- jmp short @@banz
-
- @@KeinMda:
- cmp al,1
- jng @@banz
-
- cmp al,3
- jg @@GrMode
-
- mov cx,0fa0h
- jmp short @@banz
-
- @@GrMode:
- mov cx,4000h
-
- @@banz:
- push ds ; DS retten
- mov bx,handle
- mov ds,dx ; Seg-Adresse der Videokarte
- push ds
- xor dx,dx
- mov ds,dx
- mov word ptr dx,ds:[044eh] ; Offset akt. Seite
- pop ds
- mov ah,40h
- int 21h ; Videodaten schreiben
- pop ds
- mov ah,3eh
- int 21h ; Datei schließen
- ret
-
- ;* ------------------------------------------------------- *
-
- Runtime:
- ; Laufzeitroutine, die den gesicherten Screen anzeigt
-
- jmp short rmain
-
- aktmode db ? ; Offsetadresse 102h
-
- rmain:
- mov ah,0fh
- int 10h
- mov byte ptr [ds:102h],al
- mov si,0147h
- lodsb
- mov cx,7d0h
- mov bx,0b800h ; Offset Color
- cmp al,07h ; Monochrom Modus
- jnz KeinMda ; nein => dann weiter
- mov cx,0fa0h
- mov bx,0b000h
- jmp short banz
- KeinMda:
- cmp al,1
- jng banz
-
- cmp al,3
- jg GrMode
- mov cx,0fa0h
- jmp short banz
-
- GrMode:
- mov cx,4000h
- banz:
- xor ah,ah
- int 10h ; Videomode setzen
- mov es,bx ; Segment der Videokarte
- xor di,di
- rep movsb ; Screen erstellen
- xor ax,ax
- int 16h
- xor ah,ah
- mov al,byte ptr [ds:102h]
- int 10h
- int 20h
-
- vmode db ? ; Offsetadresse 14eh
-
- TsrProgram ENDP
-
- ;* ------------------------------------------------------- *
- ;* Ende von CSNAP.TSR *
-
-