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

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