home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD1.iso / Source / pheno.lha / pha / LabansTestare.s < prev    next >
Encoding:
Text File  |  1987-12-17  |  8.9 KB  |  432 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.  
  13. ;------------------------------------------------------------------------
  14.  
  15. S:        movem.l    d0-d7/a0-a6,-(sp)
  16.         lea.l    $dff000,a6
  17.         bsr    Startup
  18.         bsr    InitRutin
  19.         bsr    BlitWait
  20.         bsr    StartCop
  21.         bsr    MainLoop
  22.         bsr    RestoreCop
  23.         movem.l    (sp)+,d0-d7/a0-a6
  24.         rts
  25.  
  26. Startup:    move.w    2(a6),d0
  27.         bset    #15,d0
  28.         move.w    d0,OldDma
  29.         move.w    $1c(a6),d0
  30.         bset    #15,d0
  31.         move.w    d0,OldIrq
  32.         move.l    $4,a6
  33.         lea.l    Lib(pc),a1
  34.         moveq    #0,d0
  35.         jsr    -408(a6)
  36.         move.l    d0,a0
  37.         move.l    $26(a0),OldCop
  38.         lea.l    $dff000,a6
  39.         rts
  40.  
  41. StartCop:    move.l    #CopperList,$80(a6)
  42.         tst.w    $88(a6)
  43.         move.w    #$7fff,$96(a6)
  44.         move.w    #$87c0,$96(a6)
  45.         move.w    #$7fff,$9a(a6)
  46.         move.w    #$c000,$9a(a6)
  47.         rts
  48.  
  49. RestoreCop:    move.l    OldCop(pc),$80(a6)
  50.         tst.w    $88(a6)
  51.         move.w    OldDma(pc),$96(a6)
  52.         move.w    OldIrq(pc),$9a(a6)
  53.         rts
  54.  
  55.     ;-----------------------------------------------------
  56.         OldCop:        dc.l    0
  57.         OldDma:        dc.w    0
  58.         OldIrq:        dc.w    0
  59.         Lib:        dc.b    'graphics.library',0
  60.                 even
  61.     ;-----------------------------------------------------
  62.  
  63. ;------------------------------------------------------------------------
  64.  
  65. BlitWait:    btst    #14,2(a6)
  66.         bne.S    BlitWait
  67.         rts
  68.  
  69. ClearScreen:    bsr.S    BlitWait
  70.         move.l    #-1,$44(a6)
  71.         move.l    #$01000000,$40(a6)
  72.         move.w    d2,$66(a6)
  73.         move.l    d0,$54(a6)
  74.         move.w    d1,$58(a6)
  75.         rts
  76.  
  77. ;------------------------------------------------------------------------
  78.  
  79. InitRutin:    move.l    Screen(pc),d0
  80.         move.w    #128*2*64+24,d1
  81.         moveq    #0,d2
  82.         bsr    ClearScreen
  83.         move.l    Screen+4(pc),d0
  84.         bsr    ClearScreen
  85.         bsr    BlitWait
  86.  
  87.         lea.l    MulsList,a0
  88.         moveq    #0,d0
  89.         move.w    #300-1,d7
  90. MulsLoop:    move.w    d0,(a0)+
  91.         add.w    #44*2,d0
  92.         dbra    d7,MulsLoop
  93.  
  94.         move.l    MatrisAdr(pc),a0
  95.         lea    Sinus(pc),a1
  96.         move.w    #360-1,d7
  97.         moveq    #0,d4
  98. MatLoop1:    move.w    #127,d6
  99.         move.w    (a1)+,d4
  100.         move.l    #-63,d0
  101. MatLoop2:    move.l    d4,d3
  102.         muls    d0,d3
  103.         asl.l    #2,d3
  104.         swap    d3
  105.         move.b    d3,(a0)+
  106.         addq.w    #1,d0
  107.         dbra    d6,MatLoop2
  108.         dbra    d7,MatLoop1
  109.         rts
  110.  
  111. MulsList:    =    $7b000
  112.  
  113. Screen:        dc.l    $60000
  114.         dc.l    $60000+[128*44]
  115.  
  116. MatrisAdr:    dc.l    $40000
  117.         dc.l    $60000+[256*44]
  118.  
  119. ;------------------------------------------------------------------------
  120.  
  121. MainLoop:    cmp.b    #-1,$6(a6)
  122.         bne.S    MainLoop
  123.         btst    #10,$16(a6)
  124.         beq.S    MainLoop
  125.  
  126.         move.w    #$4,$180(a6)
  127.         bsr    VectorBobs
  128.         move.w    #$40,$180(a6)
  129.  
  130.         btst    #6,$bfe001
  131.         bne.S    MainLoop
  132.         rts
  133.  
  134. ;------------------------------------------------------------------------
  135.  
  136. Vectorbobs:    bsr    Buffra
  137.         bsr    Rensa
  138.         bsr    VinkelAdd
  139.         bsr    Rakna
  140.         bsr    Plotta
  141.         rts
  142.  
  143. Buffra:        move.l    Screen(pc),d0
  144.         move.l    Screen+4(pc),Screen
  145.         move.l    d0,Screen+4
  146.         lea.l    BMap(pc),a0
  147.         moveq    #2-1,d7
  148. BMapLoop:    swap    d0
  149.         move.w    d0,2(a0)
  150.         swap    d0
  151.         move.w    d0,6(a0)
  152.         addq.l    #8,a0
  153.         add.l    #44,d0
  154.         dbra    d7,BMapLoop
  155.         rts
  156.  
  157. Rensa:        move.l    Screen(pc),d0
  158.         moveq    #44-40,d2
  159.         move.w    #128*64*2+20,d1
  160.         bsr    ClearScreen
  161.         rts
  162.  
  163. VinkelAdd:    lea.l    Vinklar(pc),a0
  164.         lea.l    VAdds(pc),a1
  165.         move.w    #720,d1
  166.         moveq    #3-1,d7
  167. VAddLoop:    move.w    (a0),d0
  168.         add.w    (a1)+,d0
  169.         cmp.w    d1,d0
  170.         bls.S    Nothing
  171.         sub.w    d1,d0
  172. Nothing:    move.w    d0,(a0)+
  173.         dbra    d7,VAddLoop
  174.         rts
  175.  
  176. Rakna:        lea.l    Vinklar(pc),a1
  177.         lea.l    Posses(pc),a4
  178.         lea.l    Per,a5
  179.  
  180.         lea    CalcUp(pc),a0
  181.         moveq    #3-1,d7
  182. OllesBoll:    move.w    (a1)+,d0
  183.         move.w    d0,d1
  184.         asl.w    #6,d1
  185.         move.w    d1,2(a0)
  186.         add.w    #180,d0
  187.         cmp.w    #720,d0
  188.         bls.S    NoD2222
  189.         sub.w    #720,d0
  190. NoD2222:    asl.w    #6,d0
  191.         move.w    d0,(a0)
  192.         addq.l    #4,a0
  193.         dbf    d7,OllesBoll
  194.  
  195.         lea    CalcUp(pc),a1
  196.         lea.l    MulsList,a6
  197.         move.l    a7,SPSave
  198.         lea.l    ObjX(pc),a0
  199.         lea.l    ObjY(pc),a2
  200.         lea.l    ObjZ(pc),a7
  201.         move.l    MatrisAdr(pc),a3
  202.         move.w    AntBobs,d7
  203.  
  204. RakneLoop:    move.w    (a1)+,d1
  205.         move.w    (a1)+,d2
  206.         move.b    (a2),d2
  207.         move.b    (a3,d2.W),d3
  208.         ext.w    d3
  209.         move.b    (a7),d1
  210.         move.b    (a3,d1.W),d4
  211.         ext.w    d4
  212.         sub.w    d4,d3
  213.         move.b    (a2)+,d1
  214.         move.b    (a3,d1.W),d4
  215.         ext.w    d4
  216.         move.b    (a7)+,d2
  217.         move.b    (a3,d2.W),d5
  218.         ext.w    d5
  219.         add.w    d5,d4
  220.  
  221.         move.w    (a1)+,d1
  222.         move.w    (a1)+,d2
  223.         move.b    (a0),d2
  224.         move.b    (a3,d2.W),d5
  225.         ext.w    d5
  226.         move.b    d3,d1
  227.         move.b    (a3,d1.W),d6
  228.         ext.w    d6
  229.         sub.w    d6,d5
  230.         move.b    (a0)+,d1
  231.         move.b    (a3,d1.W),d6
  232.         ext.w    d6
  233.         move.b    d3,d2
  234.         move.b    (a3,d2.W),d3
  235.         ext.w    d3
  236.         add.w    d6,d3
  237.  
  238.         move.w    (a1)+,d1
  239.         move.w    (a1)+,d2
  240.         move.b    d5,d2
  241.         move.b    (a3,d2.W),d0
  242.         ext.w    d0
  243.         move.b    d4,d1
  244.         move.b    (a3,d1.W),d6
  245.         ext.w    d6
  246.         sub.w    d6,d0
  247.         move.b    d5,d1
  248.         move.b    (a3,d1.W),d5
  249.         ext.w    d5
  250.         move.b    d4,d2
  251.         move.b    (a3,d2.W),d4
  252.         ext.w    d4
  253.         add.w    d5,d4
  254.  
  255.         add.w    #156,d4
  256.         add.w    d4,d4
  257.         move.w    (a5,d4.W),d2
  258.         muls    d2,d0
  259.         muls    d2,d3
  260.         lsl.l    #5,d0
  261.         lsl.l    #5,d3
  262.         swap    d0
  263.         swap    d3
  264.  
  265.         add.w    #176,d0
  266.         add.w    #100,d3
  267.  
  268.         move.w    d0,d1
  269.         lsr.w    #3,d0
  270.         and.w    #$f,d1
  271.         ror.w    #4,d1
  272.         add.w    d3,d3
  273.         move.w    (a6,d3.W),d3
  274.         add.w    d3,d0
  275.  
  276.         move.w    d0,(a4)+
  277.         move.w    d1,(a4)+
  278.         move.w    d4,(a4)+
  279.         lea    -12(a1),a1
  280.         dbra    d7,RakneLoop
  281.         lea.l    $dff000,a6
  282.         move.l    SPSave(pc),a7
  283.         rts
  284.  
  285. SPSave:        dc.l    0
  286.  
  287. Plotta:        lea.l    Posses(pc),a0
  288.         move.l    Screen+4(pc),d0
  289.         move.l    #Bob,d1
  290.         move.l    d1,d2
  291.         ;add.l    #15*2*2,d2
  292.         move.w    #15*64*1+2,d3
  293.         move.w    #$fca,d6
  294.  
  295.         bsr    BlitWait
  296.         move.l    #$ffff0000,$44(a6)
  297.         move.w    #2-4,$62(a6)
  298.         move.w    #2-4,$64(a6)
  299.         move.w    #44-4,$60(a6)
  300.         move.w    #44-4,$66(a6)
  301.         move.l    d0,$48(a6)
  302.         move.l    d0,$54(a6)
  303.         move.l    d1,$4c(a6)
  304.         move.l    d2,$50(a6)
  305.  
  306.         lea.l    $40(a6),a1
  307.         lea.l    $4a(a6),a2
  308.         lea.l    $4e(a6),a3
  309.         lea.l    $52(a6),a4
  310.         lea.l    $56(a6),a5
  311.         lea.l    $58(a6),a6
  312.  
  313.         move.w    AntBobs(pc),d7
  314.  
  315. PlotLoop:    move.w    d0,d4
  316.         add.w    (a0)+,d4
  317.         move.w    (a0)+,d5
  318.         move.w    d5,2(a1)
  319.         add.w    d6,d5
  320.         move.w    d5,(a1)
  321.         move.w    d4,(a2)
  322.         move.w    d4,(a5)
  323.         move.w    d1,(a3)
  324.         move.w    d2,(a4)
  325.         move.w    d3,(a6)
  326.         addq.w    #2,a0
  327.         dbra    d7,PlotLoop
  328.         lea.l    $dff000,a6
  329.         rts
  330.  
  331.     ;--------------------------------------------------
  332.  
  333.         BMapSize:    =    280*44
  334.  
  335.         Posses:        blk.w    400*3,0
  336.         Posses2:    blk.w    400*3,0
  337.         CalcUp:        blk.w    3*2,0
  338.         BobAdr:        dc.l    0
  339.  
  340.         Vinklar:    dc.w    0
  341.                 dc.w    0
  342.                 dc.w    0
  343.  
  344.         VAdds:        dc.w    0
  345.                 dc.w    0
  346.                 dc.w    0
  347.  
  348.     ;--------------------------------------------------
  349.  
  350. ObjX:
  351. dc.b    5,10,15,0,10,20,0,10,20,0,20,0,20
  352.  
  353. ObjY:
  354. dc.b    0,0,0,5,5,5,10,10,10,15,15,20,20
  355.  
  356. ObjZ:
  357. dc.b    0,0,0,0,0,0,0,0,0,0,0,0,0
  358.  
  359. even
  360.  
  361. AntBobs:    dc.w    13-1
  362.  
  363. ;------------------------------------------------------------------------
  364.  
  365. CopperList:    dc.l    $008e6c66,$0090ecc6,$00920030,$009400d8
  366.         dc.l    $01020000,$01040000,$0108002c,$010a002c
  367.  
  368. Cols:        dc.l    $01800000,$01820fff,$01840fff,$01860fff
  369. BMap:        dc.l    $00e00000,$00e20000,$00e40000,$00e60000
  370.         dc.l    $01002200
  371.  
  372.         dc.l    -2
  373.  
  374. ;------------------------------------------------------------------------
  375.  
  376. Per:        =    $30000
  377. Bob:        =    $33000
  378.  
  379. Sinus:    dc.w    16384,16382,16374,16362,16344,16322,16294,16262
  380.     dc.w    16225,16182,16135,16083,16026,15964,15897,15826
  381.     dc.w    15749,15668,15582,15491,15396,15296,15191,15082
  382.     dc.w    14967,14849,14726,14598,14466,14330,14189,14044
  383.     dc.w    13894,13741,13583,13421,13255,13085,12911,12733
  384.     dc.w    12551,12365,12176,11982,11786,11585,11381,11174
  385.     dc.w    10963,10749,10531,10311,10087,9860,9630,9397
  386.     dc.w    9162,8923,8682,8438,8192,7943,7692,7438
  387.     dc.w    7182,6924,6664,6401,6137,5871,5603,5334
  388.     dc.w    5063,4790,4516,4240,3963,3685,3406,3126
  389.     dc.w    2845,2563,2280,1996,1712,1427,1142,857
  390.     dc.w    571,285,0,-285,-571,-857,-1142,-1428
  391.     dc.w    -1712,-1996,-2280,-2563,-2845,-3126,-3406,-3685
  392.     dc.w    -3963,-4240,-4516,-4790,-5063,-5334,-5603,-5871
  393.     dc.w    -6137,-6401,-6664,-6924,-7182,-7438,-7692,-7943
  394.     dc.w    -8192,-8438,-8682,-8923,-9162,-9397,-9630,-9860
  395.     dc.w    -10087,-10311,-10531,-10749,-10963,-11174,-11381,-11585
  396.     dc.w    -11786,-11982,-12176,-12365,-12551,-12733,-12911,-13085
  397.     dc.w    -13255,-13421,-13583,-13741,-13894,-14044,-14189,-14330
  398.     dc.w    -14466,-14598,-14726,-14849,-14967,-15082,-15191,-15296
  399.     dc.w    -15396,-15491,-15582,-15668,-15749,-15826,-15897,-15964
  400.     dc.w    -16026,-16083,-16135,-16182,-16225,-16262,-16294,-16322
  401.     dc.w    -16344,-16362,-16374,-16382,-16384,-16382,-16374,-16362
  402.     dc.w    -16344,-16322,-16294,-16262,-16225,-16182,-16135,-16083
  403.     dc.w    -16026,-15964,-15897,-15826,-15749,-15668,-15582,-15491
  404.     dc.w    -15396,-15296,-15191,-15082,-14968,-14849,-14726,-14598
  405.     dc.w    -14466,-14330,-14189,-14044,-13894,-13741,-13583,-13421
  406.     dc.w    -13255,-13085,-12911,-12733,-12551,-12365,-12176,-11982
  407.     dc.w    -11786,-11585,-11381,-11174,-10963,-10749,-10531,-10311
  408.     dc.w    -10087,-9860,-9630,-9397,-9162,-8923,-8682,-8438
  409.     dc.w    -8192,-7943,-7692,-7438,-7182,-6924,-6664,-6402
  410.     dc.w    -6137,-5871,-5604,-5334,-5063,-4790,-4516,-4240
  411.     dc.w    -3963,-3685,-3406,-3126,-2845,-2563,-2280,-1996
  412.     dc.w    -1712,-1428,-1143,-857,-572,-286,0,285
  413.     dc.w    571,857,1142,1427,1712,1996,2280,2562
  414.     dc.w    2844,3126,3406,3685,3963,4240,4515,4790
  415.     dc.w    5062,5334,5603,5871,6137,6401,6663,6924
  416.     dc.w    7182,7438,7691,7943,8192,8438,8682,8923
  417.     dc.w    9161,9397,9630,9860,10087,10310,10531,10748
  418.     dc.w    10963,11173,11381,11585,11785,11982,12175,12365
  419.     dc.w    12551,12732,12910,13085,13255,13421,13583,13740
  420.     dc.w    13894,14044,14189,14330,14466,14598,14726,14849
  421.     dc.w    14967,15081,15191,15296,15396,15491,15582,15668
  422.     dc.w    15749,15826,15897,15964,16026,16083,16135,16182
  423.     dc.w    16224,16262,16294,16322,16344,16361,16374,16382
  424.  
  425. org    $33000
  426. load    $33000
  427.  
  428. dc.w    %1000000000000000
  429. blk.w    15,0
  430.  
  431.  
  432.