home *** CD-ROM | disk | FTP | other *** search
/ Jason Aller Floppy Collection / 181.img / TASM-101.ZIP / CHAPXMPL.ARC / SCROL.ASM < prev    next >
Assembly Source File  |  1989-05-02  |  2KB  |  84 lines

  1. ;  SCROL.ASM
  2. ;
  3.      name   scrol
  4. ;
  5. ;
  6. SCROL_TEXT     SEGMENT  BYTE PUBLIC 'CODE'
  7.      ASSUME    CS:SCROL_TEXT
  8.  
  9. PUBLIC SCROLL_LEFT_0
  10.  
  11. SCROLL_LEFT_0  PROC FAR
  12. ;
  13. ; parameters
  14. arg  NCOLS:WORD, NROWS:WORD, COL:WORD, ROW:WORD = ARGLEN
  15. ;
  16. ; local variable
  17. local      SSEG :WORD = LSIZE
  18.      push  bp
  19.      mov   bp,sp
  20.      sub   sp,LSIZE              ;room for local variables
  21.      push  si
  22.      push  di
  23.  
  24.      mov   SSEG, 0B800h
  25.  
  26.      sub   NCOLS, 3              ;NCOLS = NCOLS - 3
  27.  
  28.      mov   ax, ROW               ;DEST = ROW*160 + (COL+1)*2
  29.      mov   dx,160
  30.      mul   dx
  31.      mov   dx, COL
  32.      inc   dx                    ;added
  33.      shl   dx,1
  34.      add   dx,ax
  35.  
  36.      push  ds
  37.      push  es
  38.  
  39.      mov   bx , NROWS            ;loop NROWS times using BX as counter
  40.      dec   bx                    ;NROWS = NROWS - 2
  41.      dec   bx
  42.  
  43. Top: cmp   bx ,0
  44.      je    Done
  45.  
  46.      add   dx, 160               ;dest = dest + 160
  47.  
  48.      mov   ax,NCOLS              ;lastchar = dest + nc*2
  49.      shl   ax,1
  50.      add   ax,dx
  51.      push  ax                    ;push lastchar offset on stack
  52.  
  53.      mov   ax,SSEG               ;load screen segment into ES, DS
  54.      mov   es,ax
  55.      mov   ds,ax
  56.  
  57.      mov   di,dx                 ;set up SI and DI for movs
  58.      mov   si,di                 ;source is 2 bytes above DEST
  59.      add   si,2
  60.  
  61.      mov   ax,[di]               ;save the char in col 0 in AX
  62.  
  63.      mov   cx,NCOLS              ;mov NCOLS words
  64.      cld
  65.      rep   movsw
  66.  
  67.      pop   di                    ;pop lastchar offset to DI
  68.      mov   [di],ax               ;put char in AX to last column
  69.  
  70.      dec   bx
  71.      jmp   Top
  72. Done:pop   es
  73.      pop   ds
  74.      pop   di
  75.      pop   si
  76.      mov   sp,bp
  77.      pop   bp
  78.      ret   ARGLEN
  79. SCROLL_LEFT_0  ENDP
  80. SCROL_TEXT     ENDS
  81.      END
  82.  
  83.  
  84.