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

  1. ;------------------------------------------------------------------------
  2. ;-                                    -
  3. ;-                Memorysearcher                -
  4. ;-                                    -
  5. ;------------------------------------------------------------------------
  6.  
  7. org    $7fb00
  8. load    $7fb00
  9.  
  10. >EXTERN        'Siffror',Siffror
  11.  
  12. S:        movem.l    d0-d7/a0-a6,-(sp)
  13.         bsr.S    StartUp
  14.         bsr    Init
  15.         bsr    BlitWait
  16.         bsr    StartCopper
  17.         bsr    MainLoop
  18.         bsr    RestoreCopper
  19.         movem.l    (sp)+,d0-d7/a0-a6
  20.         rts
  21.  
  22. StartUp:    move.l    $4.W,a6
  23.         lea    GfxName(pc),a1
  24.         lea    OldCop(pc),a2
  25.         moveq    #0,d0
  26.         jsr    -408(a6)
  27.         move.l    d0,a1
  28.         move.l    $26(a1),(a2)+
  29.         jsr    -414(a6)
  30.         lea    $dff000,a6
  31.         move.w    $2(a6),d0
  32.         bset    #15,d0
  33.         move.w    d0,(a2)+
  34.         rts
  35.  
  36. StartCopper:    move.l    #CopperList,$80(a6)
  37.         tst.w    $88(a6)
  38.         move.w    #$7fff,$96(a6)
  39.         move.w    #$83c0,$96(a6)
  40.         move.l    $4,a6
  41.         jsr    -132(a6)
  42.         lea    $dff000,a6
  43.         rts
  44.  
  45. RestoreCopper:    move.l    OldCop(pc),$80(a6)
  46.         move.w    OldDma(pc),$96(a6)
  47.         move.l    $4,a6
  48.         jsr    -138(a6)
  49.         rts
  50.  
  51. Init:        bsr.S    BlitWait
  52.         move.l    #$01000000,$40(a6)
  53.         clr.w    $66(a6)
  54.         move.l    BMapAdr(pc),$54(a6)
  55.         move.w    #8*64+20,$58(a6)
  56.  
  57.         lea    BMap1(pc),a0
  58.         move.l    BMapAdr(pc),d0
  59.         move.w    d0,6(a0)
  60.         swap    d0
  61.         move.w    d0,2(a0)
  62.  
  63.         move.w    $dff00a,OldY
  64.         rts
  65.  
  66. BlitWait:    btst    #14,$2(a6)
  67.         bne.S    BlitWait
  68.         rts
  69.  
  70. ;------------------------------------------------------------------------
  71.  
  72. MainLoop:    cmp.b    #-1,$6(a6)
  73.         bne.S    MainLoop
  74. SQ:        cmp.b    #$28,$6(a6)
  75.         bne.S    SQ
  76.  
  77.         bsr.S    CheckKeys
  78.         bsr    Mouse
  79.         bsr    MoveScreen
  80.         bsr    NyAddress
  81.  
  82.         btst    #6,$bfe001
  83.         bne.S    MainLoop
  84.         rts
  85.  
  86. ;------------------------------------------------------------------------
  87.  
  88. CheckKeys:    btst    #10,$16(a6)
  89.         bne.S    NoRight
  90.         bsr    ChangeIt
  91. NoRight:    move.b    $bfec01,d0
  92.         cmp.b    #$37,d0
  93.         beq.S    RaiseMod
  94.         cmp.b    #$33,d0
  95.         beq.S    LowerMod
  96.         rts
  97.  
  98. RaiseMod:    addq.w    #2,X+6
  99.         addq.w    #2,Mulun
  100.         add.w    #16,XV
  101.         rts
  102.  
  103. LowerMod:    subq.w    #2,X+6
  104.         subq.w    #2,Mulun
  105.         sub.w    #16,XV
  106.         rts
  107.  
  108. ChangeIt:    move.w    HiLoReg(pc),d0
  109.         lea    X(pc),a4
  110.         lea    Mulun(pc),a5
  111.         bchg    #0,d0
  112.         move.w    d0,HiLoReg
  113.         cmp.w    #0,d0
  114.         beq.S    MakeLo
  115. MakeHi:        move.w    #80,(a5)
  116.         move.w    #$9200,10(a4)
  117.         move.w    #$fff4,6(a4)
  118.         move.w    #640,2(a5)
  119.         add.w    #320,-6(a5)
  120.         move.w    #2,4(a5)
  121. Return:        bsr    MoveScreen
  122. Waitt:        btst    #10,$16(a6)
  123.         beq.S    Waitt
  124.         move.w    $dff00a,OldY
  125.         rts
  126.  
  127. MakeLo:        move.w    #40,(a5)
  128.         move.w    #$1200,10(a4)
  129.         move.w    #$fffa,6(a4)
  130.         move.w    #320,2(a5)
  131.         move.w    #3,4(a5)
  132.         bra.S    Return
  133.  
  134. HiLoReg:    dc.w    0
  135. Wait:        dc.w    0
  136.  
  137. Mouse:        moveq    #0,d0
  138.         moveq    #0,d1
  139.         lea    NewX(pc),a3
  140.         clr.l    (a3)
  141.         lea    $dff00a,a0
  142.         move.b    1(a0),d0
  143.         move.b    (a0),d1
  144.         sub.b    5(a3),d0
  145.         sub.b    4(a3),d1
  146.         ext.w    d0
  147.         ext.w    d1
  148.         cmp.w    #$8000,d0
  149.         blo.S    NoD
  150.         not.w    d0
  151.         move.w    XV(pc),d3
  152.         subq.w    #1,d3
  153.         sub.w    d0,d3
  154.         move.w    d3,d0
  155. NoD:        move.w    d0,(a3)
  156.         move.w    d1,2(a3)
  157.         move.w    (a0),4(a3)
  158.         rts
  159.  
  160. MoveScreen:    lea    NewX(pc),a5
  161.         move.l    BMapAdr2(pc),d0
  162.         moveq    #0,d3
  163.         moveq    #0,d2
  164.         move.w    (a5),d1
  165.         move.w    2(a5),d2
  166.         move.w    14(a5),d3
  167.         add.w    d1,d3
  168.         move.w    22(a5),d4
  169.         cmp.w    d4,d3
  170.         bls.S    NoNewY
  171.         sub.w    d4,d3
  172. NoNewY:        move.w    d3,14(a5)
  173.         move.w    d4,d5
  174.         sub.w    d3,d5
  175.         move.w    d5,d3
  176.         eor.w    #$ffff,d2
  177.         addq.w    #1,d2
  178.         move.w    d3,d4
  179.         move.w    24(a5),d5
  180.         lsr.w    d5,d3
  181.         bclr    #0,d3
  182.         and.w    #$f,d4
  183.         eor.w    #$f,d4
  184.         move.w    d4,X+14
  185.         muls    20(a5),d2
  186.         add.l    d2,d0
  187.         add.l    d3,d0
  188.  
  189.         move.l    #$80000,d2
  190.         cmp.l    #0,d0
  191.         bge.S    NoD2
  192.         add.l    d2,d0
  193. NoD2:        cmp.l    d2,d0
  194.         blo.S    NoD3
  195.         sub.l    d2,d0
  196.  
  197. NoD3:        sub.l    d3,d0
  198.         move.l    d0,10(a5)
  199.         add.l    d3,d0
  200.         move.l    d0,16(a5)
  201.         lea    BMap2(pc),a0
  202.         move.w    d0,6(a0)
  203.         swap    d0
  204.         move.w    d0,2(a0)
  205.         rts
  206.  
  207. NyAddress:    move.l    RealAddy(pc),d0
  208.         move.l    BMapAdr(pc),d2
  209.         add.l    #20,d2
  210.         moveq    #40,d4
  211.         moveq    #16,d5
  212.         lea    Siffror,a1
  213.         moveq    #8-1,d7
  214. AddLoop:    rol.l    #4,d0
  215.         move.l    d0,d1
  216.         and.w    #$f,d1
  217.         move.l    a1,a0
  218.         add.w    d1,a0
  219.         move.l    d2,a2
  220.         moveq    #7-1,d6
  221. MoveLoop:    move.b    (a0),(a2)
  222.         add.w    d4,a2
  223.         add.w    d5,a0
  224.         dbra    d6,MoveLoop
  225.         addq.l    #1,d2
  226.         dbra    d7,AddLoop
  227.         rts
  228.  
  229. NewX:        dc.w    0
  230. NewY:        dc.w    0
  231. OldY:        dc.b    0
  232. OldX:        dc.b    0
  233.  
  234. BMapAdr:    dc.l    $7c000
  235. BMapAdr2:    dc.l    0
  236. Xet:        dc.w    319
  237. RealAddy:    dc.l    0
  238. Mulun:        dc.w    40
  239. XV:        dc.w    320
  240. Ola:        dc.w    3
  241.  
  242. ;------------------------------------------------------------------------
  243.  
  244. CopperList:    dc.l    $008e2881,$009034c1,$00920028,$009400d8
  245.         dc.l    $01040040,$01020000,$0108fffa
  246.  
  247.         dc.l    $01001200
  248.         dc.l    $01800000,$01820fff
  249.  
  250. BMap1:        dc.l    $00e00000,$00e20000
  251.         dc.l    $2507fffe,$01800f00
  252.         dc.l    $2607fffe,$01800006
  253.         dc.l    $3107fffe,$01800f00
  254.  
  255. X:        dc.l    $01000000,$0108fffa,$01001200,$01020000
  256.  
  257.         dc.l    $3207fffe,$01800000
  258. BMap2:        dc.l    $00e00000,$00e20000
  259.  
  260.         dc.l    -2
  261.  
  262. ;------------------------------------------------------------------------
  263.  
  264. BlindSpr:    dc.l    0
  265. OldCop:        dc.l    0
  266. OldDma:        dc.w    0
  267. GfxName:    dc.b    'graphics.library',0
  268.         even
  269.  
  270. Siffror:    blk.b    112,0
  271.  
  272. ss:
  273.