home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / dtx9202 / tricks / asm / csnap.tsr < prev    next >
Encoding:
Text File  |  1992-01-10  |  3.5 KB  |  130 lines

  1. ;* ------------------------------------------------------- *
  2. ;*                      CSNAP.TSR                          *
  3. ;* Snapshotroutine zum Einbinden in das TSR-Gerüstprogramm *
  4. ;*          (c) 1992 Ralph Seelig & DMV-Verlag             *
  5. ;* ------------------------------------------------------- *
  6.  
  7. datname  db 'SCREEN.COM',0
  8. handle   dw ?
  9.  
  10. ;* ------------------------------------------------------- *
  11. TsrProgram PROC
  12.  
  13.         mov     ah,0fh
  14.         int     10h
  15.         mov     vmode,al
  16.         cmp     al,07h          ; unerlaubte Modi ?
  17.         jng     @@erlaubt
  18.       @@fehler:
  19.  
  20.         mov     ah,02h          ; dann TSR mit Piepston
  21.         mov     dl,07h
  22.         int     21h
  23.         ret                     ; beenden
  24.  
  25.       @@erlaubt:
  26.         mov     dx,offset datname
  27.         xor     cx,cx
  28.         mov     ah,3ch
  29.         int     21h             ; Datei erstellen
  30.         jc      @@fehler
  31.  
  32.         mov     handle,ax       ; Handle retten
  33.         mov     bx,ax
  34.         mov     cx,048h
  35.         mov     dx,offset runtime
  36.         mov     ah,40h
  37.         int     21h             ; Runtime schreiben
  38.         mov     al,vmode
  39.         mov     cx,7d0h
  40.         mov     dx,0b800h       ; Segmentadresse Color
  41.         cmp     al,07h          ; Monochrom-Modus
  42.         jnz     @@KeinMda       ; nein => dann weiter
  43.  
  44.         mov     cx,0fa0h
  45.         mov     dx,0b000h       ; Segmentadresse HGC
  46.         jmp     short @@banz
  47.  
  48.       @@KeinMda:
  49.         cmp     al,1
  50.         jng     @@banz
  51.  
  52.         cmp     al,3
  53.         jg      @@GrMode
  54.  
  55.         mov     cx,0fa0h
  56.         jmp     short @@banz
  57.  
  58.       @@GrMode:
  59.         mov     cx,4000h
  60.  
  61.       @@banz:
  62.         push    ds              ; DS retten
  63.         mov     bx,handle
  64.         mov     ds,dx           ; Seg-Adresse der Videokarte
  65.         push    ds
  66.         xor     dx,dx
  67.         mov     ds,dx
  68.         mov     word ptr dx,ds:[044eh]   ; Offset akt. Seite
  69.         pop     ds
  70.         mov     ah,40h
  71.         int     21h             ; Videodaten schreiben
  72.         pop     ds
  73.         mov     ah,3eh
  74.         int     21h             ; Datei schließen
  75.         ret
  76.  
  77. ;* ------------------------------------------------------- *
  78.  
  79. Runtime:
  80.   ; Laufzeitroutine, die den gesicherten Screen anzeigt
  81.  
  82.         jmp    short rmain
  83.  
  84.   aktmode db ?                  ; Offsetadresse 102h
  85.  
  86. rmain:
  87.          mov    ah,0fh
  88.          int    10h
  89.          mov    byte ptr [ds:102h],al
  90.          mov    si,0147h
  91.          lodsb
  92.          mov    cx,7d0h
  93.          mov    bx,0b800h       ; Offset Color
  94.          cmp    al,07h          ; Monochrom Modus
  95.          jnz    KeinMda         ; nein => dann weiter
  96.          mov    cx,0fa0h
  97.          mov    bx,0b000h
  98.          jmp    short banz
  99. KeinMda:
  100.          cmp    al,1
  101.          jng    banz
  102.  
  103.          cmp    al,3
  104.          jg     GrMode
  105.          mov    cx,0fa0h
  106.          jmp    short banz
  107.  
  108. GrMode:
  109.          mov    cx,4000h
  110. banz:
  111.          xor    ah,ah
  112.          int    10h             ; Videomode setzen
  113.          mov    es,bx           ; Segment der Videokarte
  114.          xor    di,di
  115.          rep    movsb           ; Screen erstellen
  116.          xor    ax,ax
  117.          int    16h
  118.          xor    ah,ah
  119.          mov    al,byte ptr [ds:102h]
  120.          int    10h
  121.          int    20h
  122.  
  123.   vmode  db     ?               ; Offsetadresse 14eh
  124.  
  125. TsrProgram ENDP
  126.  
  127. ;* ------------------------------------------------------- *
  128. ;*                Ende von CSNAP.TSR                       *
  129.  
  130.