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

  1. ;------------------------------------------------------------------------
  2. ;-                                    -
  3. ;-                 Vector-Stars                -
  4. ;-                                    -
  5. ;------------------------------------------------------------------------
  6.  
  7. org    $20000
  8. load    $20000
  9.  
  10. >EXTERN        'Perspektiv',Per
  11. >EXTERN        'VectorBob.RB',Bob
  12. >EXTERN        'VectorSin2',Sinus
  13.  
  14. ;------------------------------------------------------------------------
  15.  
  16. S:        movem.l    d0-d7/a0-a6,-(sp)
  17.         lea.l    $dff000,a6
  18.         bsr    Startup
  19.         bsr    InitRutin
  20.         bsr    BlitWait
  21.         bsr    StartCop
  22.         bsr    MainLoop
  23.         bsr    RestoreCop
  24.         movem.l    (sp)+,d0-d7/a0-a6
  25.         rts
  26.  
  27. Startup:    move.w    2(a6),d0
  28.         bset    #15,d0
  29.         move.w    d0,OldDma
  30.         move.w    $1c(a6),d0
  31.         bset    #15,d0
  32.         move.w    d0,OldIrq
  33.         move.l    $4,a6
  34.         lea.l    Lib(pc),a1
  35.         moveq    #0,d0
  36.         jsr    -408(a6)
  37.         move.l    d0,a0
  38.         move.l    $26(a0),OldCop
  39.         lea.l    $dff000,a6
  40.         rts
  41.  
  42. StartCop:    move.l    #CopperList,$80(a6)
  43.         tst.w    $88(a6)
  44.         move.w    #$7fff,$96(a6)
  45.         move.w    #$87c0,$96(a6)
  46.         move.w    #$7fff,$9a(a6)
  47.         move.w    #$c000,$9a(a6)
  48.         rts
  49.  
  50. RestoreCop:    move.l    OldCop(pc),$80(a6)
  51.         tst.w    $88(a6)
  52.         move.w    OldDma(pc),$96(a6)
  53.         move.w    OldIrq(pc),$9a(a6)
  54.         rts
  55.  
  56.     ;-----------------------------------------------------
  57.         OldCop:        dc.l    0
  58.         OldDma:        dc.w    0
  59.         OldIrq:        dc.w    0
  60.         Lib:        dc.b    'graphics.library',0
  61.                 even
  62.     ;-----------------------------------------------------
  63.  
  64. ;------------------------------------------------------------------------
  65.  
  66. BlitWait:    btst    #14,2(a6)
  67.         bne.S    BlitWait
  68.         rts
  69.  
  70. ClearScreen:    bsr.S    BlitWait
  71.         move.l    #-1,$44(a6)
  72.         move.l    #$01000000,$40(a6)
  73.         move.w    d2,$66(a6)
  74.         move.l    d0,$54(a6)
  75.         move.w    d1,$58(a6)
  76.         rts
  77.  
  78. ;------------------------------------------------------------------------
  79.  
  80. InitRutin:    move.l    Screen(pc),d0
  81.         move.w    #128*2*64+24,d1
  82.         moveq    #0,d2
  83.         bsr    ClearScreen
  84.         move.l    Screen+4(pc),d0
  85.         bsr    ClearScreen
  86.         bsr    BlitWait
  87.  
  88.         lea.l    MulsList,a0
  89.         moveq    #0,d0
  90.         move.w    #300-1,d7
  91. MulsLoop:    move.w    d0,(a0)+
  92.         add.w    #44*2,d0
  93.         dbra    d7,MulsLoop
  94.  
  95.         move.l    MatrisAdr(pc),a0
  96.         lea    Sinus,a1
  97.         move.w    #256-1,d7
  98.         moveq    #0,d4
  99. MatLoop1:    move.w    #255,d6
  100.         move.w    (a1)+,d4
  101.         move.l    #0,d0
  102. MatLoop2:    move.l    d4,d3
  103.         muls    d0,d3
  104.         asl.l    #2,d3
  105.         swap    d3
  106.         move.b    d3,(a0)+
  107.         addq.w    #1,d0
  108.         dbra    d6,MatLoop2
  109.         dbra    d7,MatLoop1
  110.         rts
  111.  
  112. MulsList:    =    $7b000
  113.  
  114. Screen:        dc.l    $60000
  115.         dc.l    $60000+[128*44]
  116.  
  117. MatrisAdr:    dc.l    $40000
  118.         dc.l    $60000+[256*44]
  119.  
  120. ;------------------------------------------------------------------------
  121.  
  122. MainLoop:    cmp.b    #-1,$6(a6)
  123.         bne.S    MainLoop
  124.         btst    #10,$16(a6)
  125.         beq.S    MainLoop
  126.  
  127.         move.w    #$4,$180(a6)
  128.         bsr    VectorBobs
  129.         move.w    #$40,$180(a6)
  130.  
  131.         btst    #6,$bfe001
  132.         bne.S    MainLoop
  133.         rts
  134.  
  135. ;------------------------------------------------------------------------
  136.  
  137. Vectorbobs:    bsr    Buffra
  138.         bsr    Rensa
  139.         bsr    VinkelAdd
  140.         bsr    Rakna
  141.         bsr    Plotta
  142.         rts
  143.  
  144. Buffra:        move.l    Screen(pc),d0
  145.         move.l    Screen+4(pc),Screen
  146.         move.l    d0,Screen+4
  147.         lea.l    BMap(pc),a0
  148.         moveq    #2-1,d7
  149. BMapLoop:    swap    d0
  150.         move.w    d0,2(a0)
  151.         swap    d0
  152.         move.w    d0,6(a0)
  153.         addq.l    #8,a0
  154.         add.l    #44,d0
  155.         dbra    d7,BMapLoop
  156.         rts
  157.  
  158. Rensa:        move.l    Screen(pc),d0
  159.         moveq    #44-40,d2
  160.         move.w    #128*64*2+20,d1
  161.         bsr    ClearScreen
  162.         rts
  163.  
  164. VinkelAdd:    lea.l    Vinklar(pc),a0
  165.         lea.l    VAdds(pc),a1
  166.         move.w    #512,d1
  167.         moveq    #3-1,d7
  168. VAddLoop:    move.w    (a0),d0
  169.         add.w    (a1)+,d0
  170.         cmp.w    d1,d0
  171.         bls.S    Nothing
  172.         sub.w    d1,d0
  173. Nothing:    move.w    d0,(a0)+
  174.         dbra    d7,VAddLoop
  175.         rts
  176.  
  177. Rakna:        lea.l    Vinklar(pc),a1
  178.         lea.l    Posses(pc),a4
  179.         lea.l    Per,a5
  180.  
  181.         lea    CalcUp(pc),a0
  182.         moveq    #3-1,d7
  183. OllesBoll:    move.w    (a1)+,d0
  184.         move.w    d0,d1
  185.         asl.w    #7,d1
  186.         move.w    d1,2(a0)
  187.         add.w    #128,d0
  188.         cmp.w    #512,d0
  189.         bls.S    NoD2222
  190.         sub.w    #512,d0
  191. NoD2222:    asl.w    #7,d0
  192.         move.w    d0,(a0)
  193.         addq.l    #4,a0
  194.         dbf    d7,OllesBoll
  195.  
  196.         moveq    #0,d1
  197.         moveq    #0,d2
  198.  
  199.         lea    CalcUp(pc),a1
  200.         lea.l    MulsList,a6
  201.         move.l    a7,SPSave
  202.         lea.l    ObjX(pc),a0
  203.         lea.l    ObjY(pc),a2
  204.         lea.l    ObjZ(pc),a7
  205.         move.l    MatrisAdr(pc),a3
  206.         move.w    AntBobs,d7
  207.  
  208. RakneLoop:    ;move.w    (a1)+,d1
  209.         ;move.w    (a1)+,d2
  210.         ;move.b    (a2),d2
  211.         ;move.b    (a3,d2.W),d3
  212.         ;ext.w    d3
  213.         ;move.b    (a7),d1
  214.         ;move.b    (a3,d1.W),d4
  215.         ;ext.w    d4
  216.         ;sub.w    d4,d3
  217.         ;move.b    (a2)+,d1
  218.         ;move.b    (a3,d1.W),d4
  219.         ;ext.w    d4
  220.         ;move.b    (a7)+,d2
  221.         ;move.b    (a3,d2.W),d5
  222.         ;ext.w    d5
  223.         ;add.w    d5,d4
  224.  
  225.         move.w    8(a1),d1        ;(a1)+
  226.         move.w    10(a1),d2        ;(a1)+
  227.         move.b    (a0),d2
  228.         move.b    (a3,d2.W),d5
  229.         ext.w    d5
  230.         move.b    (a2),d1            ;d3
  231.         move.b    (a3,d1.W),d6
  232.         ext.w    d6
  233.         sub.w    d6,d5
  234.         move.b    (a0)+,d1
  235.         move.b    (a3,d1.W),d6
  236.         ext.w    d6
  237.         move.b    (a2)+,d2        ;d3
  238.         move.b    (a3,d2.W),d3
  239.         ext.w    d3
  240.         add.w    d6,d3
  241.  
  242.         ;move.w    (a1)+,d1
  243.         ;move.w    (a1)+,d2
  244.         ;move.b    d5,d2
  245.         ;move.b    (a3,d2.W),d0
  246.         ;ext.w    d0
  247.         ;move.b    d4,d1
  248.         ;move.b    (a3,d1.W),d6
  249.         ;ext.w    d6
  250.         ;sub.w    d6,d0
  251.         ;move.b    d5,d1
  252.         ;move.b    (a3,d1.W),d5
  253.         ;ext.w    d5
  254.         ;move.b    d4,d2
  255.         ;move.b    (a3,d2.W),d4
  256.         ;ext.w    d4
  257.         ;add.w    d5,d4
  258.  
  259.         ;add.w    #228,d4
  260.         ;add.w    d4,d4
  261.         ;move.w    (a5,d4.W),d2
  262.         ;muls    d2,d0
  263.         ;muls    d2,d3
  264.         ;lsl.l    #5,d0
  265.         ;lsl.l    #5,d3
  266.         ;swap    d0
  267.         ;swap    d3
  268.  
  269.         ;add.w    #176,d0
  270.         ;add.w    #100,d3
  271.  
  272.         ;move.w    d0,d1
  273.         ;lsr.w    #3,d0
  274.         ;and.w    #$f,d1
  275.         ;ror.w    #4,d1
  276.         ;add.w    d3,d3
  277.         ;move.w    (a6,d3.W),d3
  278.         ;add.w    d3,d0
  279.  
  280.  
  281.         add.w    #130,d5
  282.         add.w    #130,d3
  283.         move.w    d5,d1
  284.         lsr.w    #3,d5
  285.         and.w    #$f,d1
  286.         ror.w    #4,d1
  287.         add.w    d3,d3
  288.         move.w    (a6,d3.W),d3
  289.         add.w    d3,d5
  290.  
  291.         move.w    d5,(a4)+
  292.         move.w    d1,(a4)+
  293.         move.w    d4,(a4)+
  294.         ;lea    -12(a1),a1
  295.         dbra    d7,RakneLoop
  296.         lea.l    $dff000,a6
  297.         move.l    SPSave(pc),a7
  298.         rts
  299.  
  300. SPSave:        dc.l    0
  301.  
  302. Plotta:        lea.l    Posses(pc),a0
  303.         move.l    Screen+4(pc),d0
  304.         move.l    #Bob,d1
  305.         move.l    d1,d2
  306.         ;add.l    #15*2*2,d2
  307.         move.w    #15*64*1+2,d3
  308.         move.w    #$fca,d6
  309.  
  310.         bsr    BlitWait
  311.         move.l    #$ffff0000,$44(a6)
  312.         move.w    #2-4,$62(a6)
  313.         move.w    #2-4,$64(a6)
  314.         move.w    #44-4,$60(a6)
  315.         move.w    #44-4,$66(a6)
  316.         move.l    d0,$48(a6)
  317.         move.l    d0,$54(a6)
  318.         move.l    d1,$4c(a6)
  319.         move.l    d2,$50(a6)
  320.  
  321.         lea.l    $40(a6),a1
  322.         lea.l    $4a(a6),a2
  323.         lea.l    $4e(a6),a3
  324.         lea.l    $52(a6),a4
  325.         lea.l    $56(a6),a5
  326.         lea.l    $58(a6),a6
  327.  
  328.         move.w    AntBobs(pc),d7
  329.  
  330. PlotLoop:    move.w    d0,d4
  331.         add.w    (a0)+,d4
  332.         move.w    (a0)+,d5
  333.         move.w    d5,2(a1)
  334.         add.w    d6,d5
  335.         move.w    d5,(a1)
  336.         move.w    d4,(a2)
  337.         move.w    d4,(a5)
  338.         move.w    d1,(a3)
  339.         move.w    d2,(a4)
  340.         move.w    d3,(a6)
  341.         addq.w    #2,a0
  342.         dbra    d7,PlotLoop
  343.         lea.l    $dff000,a6
  344.         rts
  345.  
  346.     ;--------------------------------------------------
  347.  
  348.         BMapSize:    =    280*44
  349.  
  350.         Posses:        blk.w    400*3,0
  351.         Posses2:    blk.w    400*3,0
  352.         CalcUp:        blk.w    3*2,0
  353.         BobAdr:        dc.l    0
  354.  
  355.         Vinklar:    dc.w    0
  356.                 dc.w    0
  357.                 dc.w    0
  358.  
  359.         VAdds:        dc.w    0
  360.                 dc.w    0
  361.                 dc.w    2
  362.  
  363.     ;--------------------------------------------------
  364.  
  365. ObjX:
  366. dc.b    5,10,15,0,10,20,0,10,20,0,20,0,20
  367.  
  368. ObjY:
  369. dc.b    0,0,0,5,5,5,10,10,10,15,15,20,20
  370.  
  371. ObjZ:
  372. dc.b    0,0,0,0,0,0,0,0,0,0,0,0,0
  373.  
  374. even
  375.  
  376. AntBobs:    dc.w    13-1
  377.  
  378. ;------------------------------------------------------------------------
  379.  
  380. CopperList:    dc.l    $008e6c66,$0090ecc6,$00920030,$009400d8
  381.         dc.l    $01020000,$01040000,$0108002c,$010a002c
  382.  
  383. Cols:        dc.l    $01800000,$01820fff,$01840fff,$01860fff
  384. BMap:        dc.l    $00e00000,$00e20000,$00e40000,$00e60000
  385.         dc.l    $01002200
  386.  
  387.         dc.l    -2
  388.  
  389. ;------------------------------------------------------------------------
  390.  
  391. Per:        =    $30000
  392. Bob:        =    $33000
  393.  
  394. Sinus:        =    $35000
  395.  
  396. org    $33000
  397. load    $33000
  398.  
  399. dc.w    %1000000000000000
  400. blk.w    15,0
  401.  
  402.  
  403.