home *** CD-ROM | disk | FTP | other *** search
/ Power Programming / powerprogramming1994.iso / progtool / clipper / nannws12.arc / ROLLSCRN.ASM < prev    next >
Assembly Source File  |  1986-07-08  |  3KB  |  148 lines

  1. ;    Title:    ROLLSCRN.ASM
  2. ;    Author:    F. Ho
  3. ;    Date:    sometime 1985
  4. ;    Syntax:    DO ROLLUP WITH 1,2,3,4
  5. ;            DO ROLLDN WITH 1,2,3,4
  6. ;    Note:    - rollup = rolls UP that part of the screen specified by the coordinates
  7. ;            - rolldn = rolls DOWN that part of the screen specified by the coordinates
  8. ;
  9. public    ROLLUP                    ; declare as public
  10. public    ROLLDN                    ;
  11. ;
  12. extrn    _PARNI:far                ; declare as external of type far
  13. extrn    _RET:far                    ;
  14. ;
  15. ;
  16. datasg    segment    para    'DATA'        ; start of data segment
  17. ;
  18. TOP        db    0h                    ; top -
  19. LEFT    db    0h                    ; left corner
  20. BOTTOM    db    0h                    ; bottom -
  21. RIGHT    db    0h                    ; right corner
  22. ;
  23. datasg    ends                        ; end of data segment
  24. ;
  25. ;
  26. _prog    segment    byte                ; start of code segment
  27. assume    cs:_prog,ds:datasg,es:_prog
  28. ;
  29. ROLLUP    proc    far                    ; start of ROLLUP process
  30.         push    bp                    ; preserve return address
  31.         mov    bp,sp
  32.  
  33.         push    ds                    ; save registers
  34.         push    es                    ;
  35.  
  36.         mov    ax,1                    ; take 1st para
  37.         push    ax
  38.         call    _PARNI
  39.         add    sp,2                    ; restore stack
  40.         mov    TOP,al                ; assign 1st para to TOP
  41.  
  42.         mov    ax,2                    ; take 2nd para
  43.         push    ax
  44.         call    _PARNI
  45.         add    sp,2
  46.         mov    LEFT,al                ; assign to LEFT
  47.     
  48.         mov    ax,3                    ; take 3rd para
  49.         push    ax
  50.         call    _PARNI
  51.         add    sp,2
  52.         mov    BOTTOM,al                ; assign to BOTTOM
  53.  
  54.         mov    ax,4                    ; take 4th para
  55.         push    ax
  56.         call    _PARNI
  57.         add    sp,2
  58.         mov    RIGHT,al                ; assign to right
  59.  
  60.         push    cx                    ; preserve coordinate
  61.         push    dx                    ; registers
  62.  
  63.         mov    ch,TOP                ; assign TOP to high CX
  64.         mov    cl,LEFT                ; assign LEFT to low CX
  65.         mov    dh,BOTTOM                ; assign BOTTOM to high DX
  66.         mov    dl,RIGHT                ; assign RIGHT to low DX
  67.  
  68.         xor    ax,ax                ; zero out AX
  69.         push    ax
  70.         mov    ax,0601h                ; request roll up service
  71.         mov    bh,07                ; normal attribute
  72.         int    10h                    ; issue video int
  73.  
  74.         pop    ax                    ; restore registers
  75.         pop    dx                    ; before calling RETs
  76.         pop    cx                    ;    |
  77.  
  78.         pop    es                    ;    |
  79.         pop    ds                    ;    |
  80.         pop    bp                    ;    |
  81.  
  82.         call    _RET                    ; Clipper return (actual cleaning)
  83.  
  84.         ret                        ; actual physical return
  85. ROLLUP    endp                        ; end of process
  86. ;
  87. ;
  88. ROLLDN    proc    far
  89.         push    bp
  90.         mov    bp,sp
  91.  
  92.         push    ds
  93.         push    es
  94.  
  95.         mov    ax,1
  96.         push    ax
  97.         call    _PARNI
  98.         add    sp,2
  99.         mov    TOP,al
  100.  
  101.         mov    ax,2
  102.         push    ax
  103.         call    _PARNI
  104.         add    sp,2
  105.         mov    LEFT,al
  106.     
  107.         mov    ax,3
  108.         push    ax
  109.         call    _PARNI
  110.         add    sp,2
  111.         mov    BOTTOM,al
  112.         mov    ax,4
  113.         push    ax
  114.         call    _PARNI
  115.         add    sp,2
  116.         mov    RIGHT,al
  117.  
  118.         push    cx
  119.         push    dx
  120.  
  121.         mov    ch,TOP
  122.         mov    cl,LEFT
  123.         mov    dh,BOTTOM
  124.         mov    dl,RIGHT
  125.  
  126.         xor    ax,ax
  127.         push    ax
  128.         mov    ax,0701h                ; request roll down service
  129.         mov    bh,07
  130.         int    10h
  131.  
  132.         pop    ax
  133.         pop    dx
  134.         pop    cx
  135.  
  136.         pop    es
  137.         pop    ds
  138.         pop    bp
  139.  
  140.         call    _RET
  141.  
  142.         ret
  143. ROLLDN    endp
  144. ;
  145. _prog    ends
  146.         end
  147.  
  148.