home *** CD-ROM | disk | FTP | other *** search
/ World of Shareware - Software Farm 2 / wosw_2.zip / wosw_2 / CPROG / CEXPRESS.ZIP / GRAPHIC.ASM / PAGESWAP.ASM < prev    next >
Assembly Source File  |  1989-05-03  |  2KB  |  64 lines

  1. ;void  page_swap(box,page_number);
  2. ;  unsigned char  *box,page_number;
  3.  
  4.     EXTRN  _memory_model:byte
  5.     EXTRN  _video_buffer:word
  6.     EXTRN  _snow_protect:byte
  7.  
  8. _TEXT    SEGMENT  BYTE PUBLIC 'CODE'
  9.     ASSUME CS:_TEXT
  10.     PUBLIC _page_swap
  11. _page_swap proc near
  12.     push bp            ;
  13.     mov  bp,sp        ;set stack frame
  14.     push di            ;
  15.     push si            ;
  16.     cmp  _memory_model,0    ;near or far?
  17.     jle  begin        ;jump if near
  18.     inc  bp            ;else add 2 to BP
  19.     inc  bp            ;
  20. begin:    push ds            ;save DS
  21.     cmp  _memory_model,2    ;data near or far?
  22.     jb   L0            ;jump if near
  23.     lds  si,dword ptr[bp+4] ;DS:SI pts to byte array
  24.     inc  bp            ;inc BP since dword ptr
  25.     inc  bp            ;
  26.     jmp  short L00        ;
  27. L0:    mov  si,[bp+4]        ;NEAR case
  28. L00:    mov  bl,_snow_protect    ;fetch _snow_protect
  29.     cld            ;set direction flag
  30.     mov  cx,_video_buffer    ;get video buffer addr
  31.     mov  dl,[bp+6]        ;get page number
  32.     mov  ax,1000H        ;page size
  33.     mul  dl            ;times number pages
  34.     add  ax,cx        ;add to buffer offset
  35.     mov  es,ax        ;ES pts to page
  36.     mov  cx,2000        ;number words to exchange
  37.     sub  di,di        ;point DI to 0 offset
  38.     cmp  bl,0        ;_snow_protect?
  39.     je   L1            ;jump if not
  40.     mov  dx,3D8H        ;CGA mode select register
  41.     mov  al,25h        ;shuts off screen
  42.     out  dx,al        ;disable video
  43. L1:    mov  ax,es:[di]        ;get video word
  44.     xchg ax,[si]        ;xchg with word in Box
  45.     stosw            ;move Box word to screen
  46.     add  si,2        ;forward box ptr
  47.     loop L1            ;go do next word
  48.     cmp  bl,0        ;snow protect?
  49.     je   L2            ;jump ahead if not
  50.     mov  dx,3d8h        ;CGA mode select register
  51.     mov  al,41        ;80x25, blink enabled
  52.     out  dx,al        ;reenable video
  53. L2:    pop  ds            ;
  54.     pop  si            ;
  55.     pop  di            ;
  56.     pop  bp            ;
  57.     cmp  _memory_model,0    ;quit
  58.     jle  quit        ;
  59.     db   0CBh        ;RET far
  60. quit:    ret            ;RET near
  61. _page_swap endp
  62. _TEXT    ENDS
  63.     END
  64.