home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD1.iso / Source / pheno.lha / pha / Pointer.s < prev    next >
Encoding:
Text File  |  1987-12-17  |  3.0 KB  |  167 lines

  1.         ;--------------------------
  2.         ;--  Liten PrinterRutin  --
  3.         ;--------------------------
  4.  
  5. org    $20000
  6. load    $20000
  7.  
  8.  
  9. S:        movem.l    d0-d7/a0-a6,-(sp)
  10.         bsr.S    SaveAll
  11.         bsr    InitSpr
  12.         bsr    StartCopper
  13.         bsr    MainLoop
  14.         bsr    RestoreAll
  15.         movem.l    (sp)+,d0-d7/a0-a6
  16.         rts
  17.  
  18. SaveAll:    move.l    $4.W,a6
  19.         lea.l    GfxName(pc),a1
  20.         moveq    #0,d0
  21.         jsr    -408(a6)
  22.         move.l    d0,a0
  23.         lea    OldCop(pc),a2
  24.         move.l    $26(a0),(a2)+
  25.         move.l    a0,a1
  26.         jsr    -414(a6)
  27.         lea    $dff000,a6
  28.         move.w    2(a6),d0
  29.         bset    #15,d0
  30.         move.w    d0,(a2)+
  31.         move.w    #$4000,$9a(a6)
  32.  
  33.         lea    $bfd100,a0
  34.         move.b    #$fd,(a0)
  35.         nop
  36.         nop
  37.         move.b    #$f5,(a0)
  38.         rts
  39.  
  40. RestoreAll:    lea    OldCop(pc),a0
  41.         move.l    (a0)+,$80(a6)
  42.         tst.w    $88(a6)
  43.         move.w    (a0),$96(a6)
  44.         rts
  45.  
  46. InitSpr:    lea.l    CopperList(pc),a0
  47.         move.l    #BlindSpr,d0
  48.         moveq    #8-1,d7
  49. SprLoop1:    swap    d0
  50.         move.w    d0,2(a0)
  51.         swap    d0
  52.         move.w    d0,6(a0)
  53.         addq.l    #8,a0
  54.         dbra    d7,SprLoop1
  55.         move.l    #Pekare,d0
  56.         lea.l    CopperList(pc),a0
  57.         swap    d0
  58.         move.w    d0,2(a0)
  59.         swap    d0
  60.         move.w    d0,6(a0)
  61.         lea    OldX(pc),a0
  62.         move.b    $b(a6),(a0)+
  63.         move.b    $a(a6),(a0)+
  64.         rts
  65.  
  66. StartCopper:    lea    CopperList(pc),a0
  67.         move.l    a0,$80(a6)
  68.         tst.w    $88(a6)
  69.         move.w    #$85c0,$96(a6)
  70.         rts
  71.  
  72. MainLoop:    cmp.b    #-1,$6(a6)
  73.         bne.S    MainLoop
  74. W2:        cmp.b    #$38,$6(a6)
  75.         bne.S    W2
  76.         bsr.S    Pointer
  77.         btst    #6,$bfe001
  78.         bne.S    MainLoop
  79.         rts
  80.  
  81. Pointer:    lea.l    Pekare(pc),a0
  82.         moveq    #0,d0
  83.         moveq    #0,d1
  84.         lea    OldX(pc),a2
  85.         move.b    $b(a6),d0
  86.         move.b    $a(a6),d1
  87.         sub.b    (a2)+,d0
  88.         sub.b    (a2)+,d1
  89.         lea    2(a2),a3
  90.         ext.w    d0
  91.         ext.w    d1
  92.         add.w    d0,(a2)
  93.         add.w    d1,(a3)
  94.         cmp.w    #$125,(a3)
  95.         bmi.S    nn1
  96.         move.w    #$125,(a3)
  97. nn1:        cmp.w    #$2c,(a3)
  98.         bhi.S    nn2
  99.         move.w    #$2c,(a3)
  100. nn2:        cmp.w    #$80,(a2)
  101.         bhi.S    nn3
  102.         move.w    #$80,(a2)
  103. nn3:        cmp.w    #$1b8,(a2)
  104.         bmi.S    nn4
  105.         move.w    #$1b8,(a2)
  106. nn4:        move.w    (a2),d0
  107.         lsr.w    #1,d0
  108.         move.b    d0,1(a0)
  109.         move.w    (a2),d1
  110.         and.w    #$1,d1
  111.         move.w    (a3),d0
  112.         cmp.w    #$100,d0
  113.         blo.S    NoPal
  114.         bset    #2,d1
  115. NoPal:        addq.w    #7,d0
  116.         cmp.w    #$100,d0
  117.         blo.S    NoPal3
  118.         bset    #1,d1
  119. NoPal3:        subq.w    #$7,d0
  120.         move.b    d1,3(a0)
  121.         move.b    d0,(a0)
  122.         add.b    #$7,d0
  123.         move.b    d0,2(a0)
  124.         move.b    $b(a6),-2(a2)
  125.         move.b    $a(a6),-1(a2)
  126.         rts
  127.  
  128. OldX:        dc.b    0
  129. OldY:        dc.b    0
  130. NewX:        dc.w    0
  131. NewY:        dc.w    0
  132.  
  133. ;------------------------------------------------------------------------
  134.  
  135. CopperList:    dc.l    $01200000,$01220000,$01240000,$01260000
  136.         dc.l    $01280000,$012a0000,$012c0000,$012e0000
  137.         dc.l    $01300000,$01320000,$01340000,$01360000
  138.         dc.l    $01380000,$013a0000,$013c0000,$013e0000
  139.  
  140.         dc.l    $008e2c71,$00902cc0,$00920038,$009400d0
  141.         dc.l    $01020000,$01040020,$01080000,$010a0000
  142.         dc.l    $01800000,$01820000
  143.         dc.l    $01a20008,$01a4000c,$01a60fff
  144.         dc.l    $01001000,$00e00000,$00e20000
  145.  
  146.         dc.l    -2
  147.  
  148. ;------------------------------------------------------------------------
  149.  
  150. OldCop:        dc.l    0
  151. OldDma:        dc.w    0
  152. BlindSpr:    dc.l    0
  153. GfxName:    dc.b    'graphics.library',0
  154.         even
  155.  
  156. Pekare:
  157. dc.w    $2c40,$3300
  158. dc.w    %0001000000000000,%0000000000000000
  159. dc.w    %0000000000000000,%0001000000000000
  160. dc.w    %0001000000000000,%0000000000000000
  161. dc.w    %1011101000000000,%0101010000000000
  162. dc.w    %0001000000000000,%0000000000000000
  163. dc.w    %0000000000000000,%0001000000000000
  164. dc.w    %0001000000000000,%0000000000000000
  165. dc.l    0,0,0,0
  166.  
  167.