home *** CD-ROM | disk | FTP | other *** search
/ Computer Club Elmshorn Atari PD / CCE_PD.iso / pc / 0600 / CCE_0657.ZIP / CCE_0657.PD / DREHE_90.S < prev    next >
Text File  |  1993-09-01  |  766b  |  39 lines

  1.  
  2. EXPORT    drehe_90
  3.  
  4. ; * Bitmap zeilenweise um 90 Grad drehen:
  5. ; *
  6. ; * drehe_90( char *quelle, char *ziel, long qweite, long zweite, long x );
  7.     TEXT
  8. drehe_90:
  9.     MOVEM.L    D3-D6,    -(A7)
  10.     MOVE.L    D2,    D4
  11.     LSR    #3,    D2
  12.     ADD.L    D2,    A0
  13.  
  14.     ANDI    #7,    D4
  15.     MOVEQ    #7,    D3
  16.     SUB    D4,    D3    ; x = 7-(x%8)
  17.  
  18.     ADD.L    D1,    A1
  19.     ADDQ.L    #1,    A1    ; ziel += zweite+1
  20.  
  21. next_byte:
  22.     MOVEQ    #0,    D4    ; data = 0
  23.     MOVEQ    #7,    D5    ; i=7
  24.     MOVEQ    #0,    D6    ; j=0
  25. bit_test:            ; je Durchlauf ein Bit drehen
  26.     ADD.L    D0,    A0    ; quelle += qweite
  27.     BTST    D3,    (A0)    ; Bit x bei *quelle gesetzt?
  28.     BEQ    neq
  29.     BSET    D6,    D4    ; Wenn nicht, bei data Bit j setzen
  30. neq:    ADDQ    #1,    D6
  31.     DBF    D5,    bit_test; while( i-->0 )
  32.  
  33.     MOVE.B    D4,    -(A1)    ; *--ziel = data
  34.     DBF    D1,    next_byte; while( q-->0  )
  35.  
  36.     MOVEM.L    (A7)+,    D3-D6
  37.     RTS
  38.  
  39.