home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD1.iso / Source / pheno.lha / pha / LabansTestare2.s < prev    next >
Encoding:
Text File  |  1987-12-17  |  6.5 KB  |  389 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    #-127,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    #6,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    #6,d0
  192.         move.w    d0,(a0)
  193.         addq.l    #4,a0
  194.         dbf    d7,OllesBoll
  195.  
  196.         lea    CalcUp(pc),a1
  197.         lea.l    MulsList,a6
  198.         move.l    a7,SPSave
  199.         lea.l    ObjX(pc),a0
  200.         lea.l    ObjY(pc),a2
  201.         lea.l    ObjZ(pc),a7
  202.         move.l    MatrisAdr(pc),a3
  203.         move.w    AntBobs,d7
  204.  
  205. RakneLoop:    move.w    (a1)+,d1
  206.         move.w    (a1)+,d2
  207.         move.b    (a2),d2
  208.         move.b    (a3,d2.W),d3
  209.         ext.w    d3
  210.         move.b    (a7),d1
  211.         move.b    (a3,d1.W),d4
  212.         ext.w    d4
  213.         sub.w    d4,d3
  214.         move.b    (a2)+,d1
  215.         move.b    (a3,d1.W),d4
  216.         ext.w    d4
  217.         move.b    (a7)+,d2
  218.         move.b    (a3,d2.W),d5
  219.         ext.w    d5
  220.         add.w    d5,d4
  221.  
  222.         move.w    (a1)+,d1
  223.         move.w    (a1)+,d2
  224.         move.b    (a0),d2
  225.         move.b    (a3,d2.W),d5
  226.         ext.w    d5
  227.         move.b    d3,d1
  228.         move.b    (a3,d1.W),d6
  229.         ext.w    d6
  230.         sub.w    d6,d5
  231.         move.b    (a0)+,d1
  232.         move.b    (a3,d1.W),d6
  233.         ext.w    d6
  234.         move.b    d3,d2
  235.         move.b    (a3,d2.W),d3
  236.         ext.w    d3
  237.         add.w    d6,d3
  238.  
  239.         move.w    (a1)+,d1
  240.         move.w    (a1)+,d2
  241.         move.b    d5,d2
  242.         move.b    (a3,d2.W),d0
  243.         ext.w    d0
  244.         move.b    d4,d1
  245.         move.b    (a3,d1.W),d6
  246.         ext.w    d6
  247.         sub.w    d6,d0
  248.         move.b    d5,d1
  249.         move.b    (a3,d1.W),d5
  250.         ext.w    d5
  251.         move.b    d4,d2
  252.         move.b    (a3,d2.W),d4
  253.         ext.w    d4
  254.         add.w    d5,d4
  255.  
  256.         add.w    #156,d4
  257.         add.w    d4,d4
  258.         move.w    (a5,d4.W),d2
  259.         muls    d2,d0
  260.         muls    d2,d3
  261.         lsl.l    #5,d0
  262.         lsl.l    #5,d3
  263.         swap    d0
  264.         swap    d3
  265.  
  266.         add.w    #176,d0
  267.         add.w    #100,d3
  268.  
  269.         move.w    d0,d1
  270.         lsr.w    #3,d0
  271.         and.w    #$f,d1
  272.         ror.w    #4,d1
  273.         add.w    d3,d3
  274.         move.w    (a6,d3.W),d3
  275.         add.w    d3,d0
  276.  
  277.         move.w    d0,(a4)+
  278.         move.w    d1,(a4)+
  279.         move.w    d4,(a4)+
  280.         lea    -12(a1),a1
  281.         dbra    d7,RakneLoop
  282.         lea.l    $dff000,a6
  283.         move.l    SPSave(pc),a7
  284.         rts
  285.  
  286. SPSave:        dc.l    0
  287.  
  288. Plotta:        lea.l    Posses(pc),a0
  289.         move.l    Screen+4(pc),d0
  290.         move.l    #Bob,d1
  291.         move.l    d1,d2
  292.         ;add.l    #15*2*2,d2
  293.         move.w    #15*64*1+2,d3
  294.         move.w    #$fca,d6
  295.  
  296.         bsr    BlitWait
  297.         move.l    #$ffff0000,$44(a6)
  298.         move.w    #2-4,$62(a6)
  299.         move.w    #2-4,$64(a6)
  300.         move.w    #44-4,$60(a6)
  301.         move.w    #44-4,$66(a6)
  302.         move.l    d0,$48(a6)
  303.         move.l    d0,$54(a6)
  304.         move.l    d1,$4c(a6)
  305.         move.l    d2,$50(a6)
  306.  
  307.         lea.l    $40(a6),a1
  308.         lea.l    $4a(a6),a2
  309.         lea.l    $4e(a6),a3
  310.         lea.l    $52(a6),a4
  311.         lea.l    $56(a6),a5
  312.         lea.l    $58(a6),a6
  313.  
  314.         move.w    AntBobs(pc),d7
  315.  
  316. PlotLoop:    move.w    d0,d4
  317.         add.w    (a0)+,d4
  318.         move.w    (a0)+,d5
  319.         move.w    d5,2(a1)
  320.         add.w    d6,d5
  321.         move.w    d5,(a1)
  322.         move.w    d4,(a2)
  323.         move.w    d4,(a5)
  324.         move.w    d1,(a3)
  325.         move.w    d2,(a4)
  326.         move.w    d3,(a6)
  327.         addq.w    #2,a0
  328.         dbra    d7,PlotLoop
  329.         lea.l    $dff000,a6
  330.         rts
  331.  
  332.     ;--------------------------------------------------
  333.  
  334.         BMapSize:    =    280*44
  335.  
  336.         Posses:        blk.w    400*3,0
  337.         Posses2:    blk.w    400*3,0
  338.         CalcUp:        blk.w    3*2,0
  339.         BobAdr:        dc.l    0
  340.  
  341.         Vinklar:    dc.w    0
  342.                 dc.w    0
  343.                 dc.w    0
  344.  
  345.         VAdds:        dc.w    0
  346.                 dc.w    0
  347.                 dc.w    0
  348.  
  349.     ;--------------------------------------------------
  350.  
  351. ObjX:
  352. dc.b    5,10,15,0,10,20,0,10,20,0,20,0,20
  353.  
  354. ObjY:
  355. dc.b    0,0,0,5,5,5,10,10,10,15,15,20,20
  356.  
  357. ObjZ:
  358. dc.b    0,0,0,0,0,0,0,0,0,0,0,0,0
  359.  
  360. even
  361.  
  362. AntBobs:    dc.w    13-1
  363.  
  364. ;------------------------------------------------------------------------
  365.  
  366. CopperList:    dc.l    $008e6c66,$0090ecc6,$00920030,$009400d8
  367.         dc.l    $01020000,$01040000,$0108002c,$010a002c
  368.  
  369. Cols:        dc.l    $01800000,$01820fff,$01840fff,$01860fff
  370. BMap:        dc.l    $00e00000,$00e20000,$00e40000,$00e60000
  371.         dc.l    $01002200
  372.  
  373.         dc.l    -2
  374.  
  375. ;------------------------------------------------------------------------
  376.  
  377. Per:        =    $30000
  378. Bob:        =    $33000
  379.  
  380. Sinus:        =    $35000
  381.  
  382. org    $33000
  383. load    $33000
  384.  
  385. dc.w    %1000000000000000
  386. blk.w    15,0
  387.  
  388.  
  389.