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

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