home *** CD-ROM | disk | FTP | other *** search
/ M.u.C.S. Disc 2000 / MUCS2000.iso / falcon / dsp / mars_dsp / mars_dsp.s < prev    next >
Text File  |  1995-04-30  |  18KB  |  481 lines

  1.  TEXT 
  2. Begin:
  3.                   PEA       0.W 
  4.                   MOVE.W    #$20,-(A7)
  5.                   TRAP      #1
  6.                   ADDQ.W    #6,A7 
  7.                   BSR       MAP_GENERATOR 
  8.                   BSR       MAP_LIGHT 
  9.                   BSR       CALC_Z_TAB
  10.                   BSR       DEF_SCREEN
  11.                   LEA       NFDSP,A6
  12.                   BSR       DSP_LOAD
  13.                   BSR       SEND_DATA_2_DSP 
  14.                   BSR       SET_REZ 
  15.                   BSR       TEST
  16.                   BSR       TEST2 
  17.                   MOVE.W    #7,-(A7)
  18.                   TRAP      #1
  19.                   ADDQ.L    #2,A7 
  20.                   BSET      #0,$FFFF82C3.W
  21.                   MOVE.L    #$F0,$FFFF9800.W
  22. VBL_LOOPZ:        MOVE.W    #$25,-(A7)
  23.                   TRAP      #$E 
  24.                   ADDQ.L    #2,A7 
  25.                   MOVE.B    L0035,$FFFF8201.W 
  26.                   MOVE.B    L0036,$FFFF8203.W 
  27.                   MOVE.B    L0037,$FFFF820D.W 
  28.                   MOVE.W    Y_POS,D0
  29.                   LSL.W     #7,D0 
  30.                   OR.W      X_POS,D0
  31. L0001:            BTST      #1,$FFFFA202.W
  32.                   BEQ.S     L0001 
  33.                   MOVE.W    D0,$FFFFA206.W
  34.                   MOVE.W    #$7E0,D4
  35.                   LEA       $FFFFA206.W,A6
  36.                   MOVEA.L   BACK,A0 
  37. RECEPT0:          BTST      #0,$FFFFA202.W
  38.                   BEQ.S     RECEPT0 
  39.                   MOVE.W    (A6),D0 
  40.                   BMI.S     END_MM
  41.                   MOVE.W    (A6),D1 
  42.                   MOVE.W    (A6),D2 
  43.                   MOVE.W    (A6),D3 
  44.                   LEA       (A0,D0.W*4),A1
  45.                   MOVE.W    D2,D5 
  46.                   AND.W     D4,D5 
  47. MM_GOURO:         MOVE.W    D5,(A1)+
  48.                   ADD.W     D3,D2 
  49.                   MOVE.W    D5,(A1)+
  50.                   MOVE.W    D2,D5 
  51.                   AND.W     D4,D5 
  52.                   LEA       764(A1),A1
  53.                   DBF       D1,MM_GOURO 
  54.                   BRA.S     RECEPT0 
  55. END_MM:           MOVEA.L   BACK,A0 
  56.                   LEA       $FFFFA206.W,A6
  57.                   MOVE.W    #$1E,D7 
  58.                   SWAP      D7
  59.                   MOVE.W    #$1E,D7 
  60. RECEPT1:          BTST      #0,$FFFFA202.W
  61.                   BEQ.S     RECEPT1 
  62.                   MOVE.W    (A6),D0 
  63.                   BMI.S     END_MM_CLS
  64.                   MOVE.W    (A6),D1 
  65.                   LEA       (A0,D0.W*4),A1
  66. MM_CLS:           MOVE.L    D7,(A1) 
  67.                   LEA       768(A1),A1
  68.                   DBF       D1,MM_CLS 
  69.                   BRA       RECEPT1 
  70. END_MM_CLS:       MOVE.L    PHYSIK,D0 
  71.                   MOVE.L    BACK,PHYSIK 
  72.                   MOVE.L    D0,BACK 
  73.                   MOVE.B    $FFFFFC02.W,D1
  74.                   MOVE.W    Y_POS,D0
  75.                   CMPI.B    #$48,D1 
  76.                   BNE.S     NO_UP 
  77.                   SUBQ.W    #1,D0 
  78. NO_UP:            CMPI.B    #$50,D1 
  79.                   BNE.S     NO_DOWN 
  80.                   ADDQ.W    #1,D0 
  81. NO_DOWN:          ANDI.W    #$7F,D0 
  82.                   MOVE.W    D0,Y_POS
  83.                   MOVE.W    X_POS,D0
  84.                   CMPI.B    #$4B,D1 
  85.                   BNE.S     NO_LEFT 
  86.                   SUBQ.W    #1,D0 
  87. NO_LEFT:          CMPI.B    #$4D,D1 
  88.                   BNE.S     NO_RIGHT
  89.                   ADDQ.W    #1,D0 
  90. NO_RIGHT:         ANDI.W    #$7F,D0 
  91.                   MOVE.W    D0,X_POS
  92.                   CMPI.B    #$39,$FFFFFC02.W
  93.                   BNE       VBL_LOOPZ 
  94.                   BSR       TEND_REZ
  95.                   CLR.W     -(A7) 
  96.                   TRAP      #1
  97. SEND_DATA_2_DSP:  LEA       $FFFFA204.W,A0
  98. WAIT_DSP1:        BTST      #1,$FFFFA202.W
  99.                   BEQ       WAIT_DSP1 
  100.                   MOVEQ     #1,D0 
  101.                   MOVE.W    #$81,D7 
  102. SEND1:            MOVE.L    #$800000,D1 
  103.                   DIVU.L    D0,D1 
  104.                   MOVE.L    D1,(A0) 
  105.                   ADDQ.L    #1,D0 
  106.                   DBF       D7,SEND1
  107. WAIT_DSP2:        BTST      #1,$FFFFA202.W
  108.                   BEQ       WAIT_DSP2 
  109.                   LEA       Z_TAB,A1
  110.                   MOVEQ     #7,D6 
  111.                   MOVE.W    #$3B,D7 
  112. SEND2:            MOVEQ     #0,D0 
  113.                   MOVE.W    (A1)+,D0
  114.                   MOVE.L    D0,(A0) 
  115.                   MOVEQ     #0,D0 
  116.                   MOVE.W    (A1)+,D0
  117.                   LSL.L     D6,D0 
  118.                   MOVE.L    D0,(A0) 
  119.                   MOVEQ     #0,D0 
  120.                   MOVE.W    (A1)+,D0
  121.                   LSL.L     D6,D0 
  122.                   MOVE.L    D0,(A0) 
  123.                   DBF       D7,SEND2
  124. WAIT_DSP0:        BTST      #1,$FFFFA202.W
  125.                   BEQ       WAIT_DSP0 
  126.                   LEA       MAP,A1
  127.                   LEA       COLOR_MAP,A2
  128.                   MOVE.W    #$3FFF,D7 
  129. SEND0:            MOVEQ     #0,D0 
  130.                   MOVE.B    (A2)+,D0
  131.                   SWAP      D0
  132.                   MOVE.W    (A1)+,D0
  133.                   MOVE.L    D0,(A0) 
  134.                   DBF       D7,SEND0
  135.                   RTS 
  136. CALC_Z_TAB:       LEA       Z_TAB,A0
  137.                   MOVEQ     #0,D0 
  138.                   MOVE.W    #8,D0 
  139.                   MOVE.L    #$10000,D1
  140.                   MOVEQ     #0,D2 
  141.                   MOVEQ     #0,D6 
  142.                   MOVE.W    #$60,D4 
  143.                   MOVE.W    #7,D5 
  144.                   MOVEQ     #$3B,D7 
  145. CALC_Z_TAB_LOOPZ: MOVE.W    #$80,D3 
  146.                   ADD.W     D2,D3 
  147.                   ADD.W     D0,D3 
  148.                   SUB.W     D6,D3 
  149.                   MOVE.W    D0,D2 
  150.                   MOVE.W    D3,(A0)+
  151.                   SWAP      D0
  152.                   MOVE.L    D0,D3 
  153.                   DIVU      D4,D3 
  154.                   MOVE.W    D3,(A0)+
  155.                   MULU      #$C0,D3 
  156.                   SWAP      D3
  157.                   MOVE.W    D2,D6 
  158.                   ADD.W     D6,D6 
  159.                   SUB.W     D3,D6 
  160.                   MOVEQ     #0,D3 
  161.                   MOVE.W    D4,D3 
  162.                   SWAP      D3
  163.                   LSR.L     D5,D3 
  164.                   DIVU      D2,D3 
  165.                   MOVE.W    D3,(A0)+
  166.                   ADD.L     D1,D0 
  167.                   SWAP      D0
  168.                   DBF       D7,CALC_Z_TAB_LOOPZ 
  169.                   RTS 
  170. MAP_LIGHT:        LEA       MAP,A0
  171.                   LEA       COLOR_MAP,A1
  172.                   MOVE.W    #4,D6 
  173.                   MOVE.W    #$3FFF,D7 
  174. NEXT_LIGHT_TO_CA: MOVE.W    (A0)+,D0
  175.                   SUB.W     (A0),D0 
  176.                   ASR.W     D6,D0 
  177.                   ADDI.W    #$20,D0 
  178.                   CMPI.W    #1,D0 
  179.                   BPL.S     NO_LIGHT_NEG
  180.                   MOVEQ     #1,D0 
  181.                   BRA.S     NO_TOO_LIGHT
  182. NO_LIGHT_NEG:     CMPI.W    #$3F,D0 
  183.                   BLS.S     NO_TOO_LIGHT
  184.                   MOVEQ     #$3F,D0 
  185. NO_TOO_LIGHT:     MOVE.B    D0,(A1)+
  186.                   DBF       D7,NEXT_LIGHT_TO_CA 
  187.                   RTS 
  188. MAP_GENERATOR:    LEA       MAP,A6
  189.                   MOVE.W    #$3FFF,D6 
  190.                   MOVE.W    #$11,-(A7)
  191.                   TRAP      #$E 
  192.                   ADDQ.L    #2,A7 
  193.                   AND.W     D6,D0 
  194.                   ADDI.W    #$2000,D0 
  195.                   MOVE.W    D0,(A6) 
  196.                   MOVE.W    #$11,-(A7)
  197.                   TRAP      #$E 
  198.                   ADDQ.L    #2,A7 
  199.                   AND.W     D6,D0 
  200.                   ADDI.W    #$2000,D0 
  201.                   MOVE.W    D0,128(A6)
  202.                   MOVE.W    #$11,-(A7)
  203.                   TRAP      #$E 
  204.                   ADDQ.L    #2,A7 
  205.                   AND.W     D6,D0 
  206.                   ADDI.W    #$2000,D0 
  207.                   MOVE.W    D0,16384(A6)
  208.                   MOVE.W    #$11,-(A7)
  209.                   TRAP      #$E 
  210.                   ADDQ.L    #2,A7 
  211.                   AND.W     D6,D0 
  212.                   ADDI.W    #$2000,D0 
  213.                   MOVE.W    D0,16512(A6)
  214.                   MOVE.W    #$20,D7 
  215. NEXT_PASS:        LSR.W     #1,D6 
  216.                   MOVE.W    D7,D4 
  217. P1_PART_Y:        MOVE.W    D7,D5 
  218. P1_PART_X:        MOVE.W    #$11,-(A7)
  219.                   TRAP      #$E 
  220.                   ADDQ.L    #2,A7 
  221.                   AND.W     D6,D0 
  222.                   MOVE.W    D6,D1 
  223.                   ADDQ.W    #1,D1 
  224.                   LSR.W     #1,D1 
  225.                   SUB.W     D1,D0 
  226.                   MOVEQ     #0,D2 
  227.                   MOVEQ     #0,D3 
  228.                   MOVE.W    D4,D1 
  229.                   SUB.W     D7,D1 
  230.                   LSL.W     #7,D1 
  231.                   ADD.W     D5,D1 
  232.                   SUB.W     D7,D1 
  233.                   MOVE.W    (A6,D1.W*2),D2
  234.                   MOVE.W    D4,D1 
  235.                   ADD.W     D7,D1 
  236.                   ANDI.W    #$7F,D1 
  237.                   LSL.W     #7,D1 
  238.                   ADD.W     D5,D1 
  239.                   SUB.W     D7,D1 
  240.                   MOVE.W    (A6,D1.W*2),D3
  241.                   ADD.L     D3,D2 
  242.                   MOVE.W    D4,D1 
  243.                   ADD.W     D7,D1 
  244.                   ANDI.W    #$7F,D1 
  245.                   LSL.W     #7,D1 
  246.                   MOVE.W    D5,D3 
  247.                   ADD.W     D7,D3 
  248.                   ANDI.W    #$7F,D3 
  249.                   ADD.W     D3,D1 
  250.                   MOVE.W    (A6,D1.W*2),D3
  251.                   ADD.L     D3,D2 
  252.                   MOVE.W    D4,D1 
  253.                   SUB.W     D7,D1 
  254.                   LSL.W     #7,D1 
  255.                   MOVE.W    D5,D3 
  256.                   ADD.W     D7,D3 
  257.                   ANDI.W    #$7F,D3 
  258.                   ADD.W     D3,D1 
  259.                   MOVE.W    (A6,D1.W*2),D3
  260.                   ADD.L     D3,D2 
  261.                   LSR.L     #2,D2 
  262.                   ADD.W     D0,D2 
  263.                   MOVE.W    D4,D1 
  264.                   LSL.W     #7,D1 
  265.                   ADD.W     D5,D1 
  266.                   MOVE.W    D2,(A6,D1.W*2)
  267.                   MOVE.W    D7,D1 
  268.                   ADD.W     D1,D1 
  269.                   ADD.W     D1,D5 
  270.                   CMPI.W    #$80,D5 
  271.                   BCS       P1_PART_X 
  272.                   ADD.W     D1,D4 
  273.                   CMPI.W    #$80,D4 
  274.                   BCS       P1_PART_Y 
  275.                   MOVE.W    D7,D4 
  276. P2_PART_Y:        MOVEQ     #0,D5 
  277. P2_PART_X:        MOVE.W    #$11,-(A7)
  278.                   TRAP      #$E 
  279.                   ADDQ.L    #2,A7 
  280.                   AND.W     D6,D0 
  281.                   MOVE.W    D6,D1 
  282.                   ADDQ.W    #1,D1 
  283.                   LSR.W     #1,D1 
  284.                   SUB.W     D1,D0 
  285.                   MOVEQ     #0,D2 
  286.                   MOVEQ     #0,D3 
  287.                   MOVE.W    D4,D1 
  288.                   SUB.W     D7,D1 
  289.                   LSL.W     #7,D1 
  290.                   ADD.W     D5,D1 
  291.                   MOVE.W    (A6,D1.W*2),D2
  292.                   MOVE.W    D4,D1 
  293.                   LSL.W     #7,D1 
  294.                   MOVE.W    D5,D3 
  295.                   SUB.W     D7,D3 
  296.                   ANDI.W    #$7F,D3 
  297.                   ADD.W     D3,D1 
  298.                   MOVE.W    (A6,D1.W*2),D3
  299.                   ADD.L     D3,D2 
  300.                   MOVE.W    D4,D1 
  301.                   ADD.W     D7,D1 
  302.                   ANDI.W    #$7F,D1 
  303.                   LSL.W     #7,D1 
  304.                   ADD.W     D5,D1 
  305.                   MOVE.W    (A6,D1.W*2),D3
  306.                   ADD.L     D3,D2 
  307.                   MOVE.W    D4,D1 
  308.                   LSL.W     #7,D1 
  309.                   MOVE.W    D5,D3 
  310.                   ADD.W     D7,D3 
  311.                   ANDI.W    #$7F,D3 
  312.                   ADD.W     D3,D1 
  313.                   MOVE.W    (A6,D1.W*2),D3
  314.                   ADD.L     D3,D2 
  315.                   LSR.L     #2,D2 
  316.                   ADD.W     D0,D2 
  317.                   MOVE.W    D4,D1 
  318.                   LSL.W     #7,D1 
  319.                   ADD.W     D5,D1 
  320.                   MOVE.W    D2,(A6,D1.W*2)
  321.                   SUB.W     D7,D4 
  322.                   ADD.W     D7,D5 
  323.                   MOVE.W    #$11,-(A7)
  324.                   TRAP      #$E 
  325.                   ADDQ.L    #2,A7 
  326.                   AND.W     D6,D0 
  327.                   MOVE.W    D6,D1 
  328.                   ADDQ.W    #1,D1 
  329.                   LSR.W     #1,D1 
  330.                   SUB.W     D1,D0 
  331.                   MOVEQ     #0,D2 
  332.                   MOVEQ     #0,D3 
  333.                   MOVE.W    D4,D1 
  334.                   SUB.W     D7,D1 
  335.                   ANDI.W    #$7F,D1 
  336.                   LSL.W     #7,D1 
  337.                   ADD.W     D5,D1 
  338.                   MOVE.W    (A6,D1.W*2),D2
  339.                   MOVE.W    D4,D1 
  340.                   LSL.W     #7,D1 
  341.                   ADD.W     D5,D1 
  342.                   SUB.W     D7,D1 
  343.                   MOVE.W    (A6,D1.W*2),D3
  344.                   ADD.L     D3,D2 
  345.                   MOVE.W    D4,D1 
  346.                   ADD.W     D7,D1 
  347.                   ANDI.W    #$7F,D1 
  348.                   LSL.W     #7,D1 
  349.                   ADD.W     D5,D1 
  350.                   MOVE.W    (A6,D1.W*2),D3
  351.                   ADD.L     D3,D2 
  352.                   MOVE.W    D4,D1 
  353.                   LSL.W     #7,D1 
  354.                   MOVE.W    D5,D3 
  355.                   ADD.W     D7,D3 
  356.                   ANDI.W    #$7F,D3 
  357.                   ADD.W     D3,D1 
  358.                   MOVE.W    (A6,D1.W*2),D3
  359.                   ADD.L     D3,D2 
  360.                   LSR.L     #2,D2 
  361.                   ADD.W     D0,D2 
  362.                   MOVE.W    D4,D1 
  363.                   LSL.W     #7,D1 
  364.                   ADD.W     D5,D1 
  365.                   MOVE.W    D2,(A6,D1.W*2)
  366.                   ADD.W     D7,D4 
  367.                   ADD.W     D7,D5 
  368.                   CMPI.W    #$80,D5 
  369.                   BCS       P2_PART_X 
  370.                   MOVE.W    D7,D1 
  371.                   ADD.W     D1,D1 
  372.                   ADD.W     D1,D4 
  373.                   CMPI.W    #$80,D4 
  374.                   BCS       P2_PART_Y 
  375.                   LSR.W     #1,D7 
  376.                   BNE       NEXT_PASS 
  377.                   MOVE.W    MAP,L002D 
  378.                   RTS 
  379. TEST:             LEA       MAP,A0
  380.                   MOVEA.L   BACK,A1 
  381.                   MOVE.W    #$7E0,D5
  382.                   MOVEQ     #$7F,D6 
  383. TEST_Y:           MOVEQ     #$7F,D7 
  384. TEST_X:           MOVE.W    (A0)+,D0
  385.                   LSL.W     #1,D0 
  386.                   LSR.W     #5,D0 
  387.                   AND.W     D5,D0 
  388.                   MOVE.W    D0,(A1)+
  389.                   DBF       D7,TEST_X 
  390.                   ADDA.W    #$200,A1
  391.                   DBF       D6,TEST_Y 
  392.                   RTS 
  393. TEST2:            LEA       COLOR_MAP,A0
  394.                   MOVEA.L   BACK,A1 
  395.                   ADDA.W    #$102,A1
  396.                   MOVE.W    #$7E0,D5
  397.                   MOVEQ     #$7F,D6 
  398. TEST_Y2:          MOVEQ     #$7F,D7 
  399. TEST_X2:          MOVE.B    (A0)+,D0
  400.                   LSL.W     #5,D0 
  401.                   AND.W     D5,D0 
  402.                   MOVE.W    D0,(A1)+
  403.                   DBF       D7,TEST_X2
  404.                   ADDA.W    #$200,A1
  405.                   DBF       D6,TEST_Y2
  406.                   RTS 
  407. DEF_SCREEN:       MOVE.L    #L003A,D0 
  408.                   ANDI.B    #$FC,D0 
  409.                   MOVE.L    D0,BACK 
  410.                   ADDI.L    #$16800,D0
  411.                   MOVE.L    D0,PHYSIK 
  412.                   RTS 
  413. SET_REZ:          DC.B      $A0,$0A 
  414.                   MOVE.W    #2,-(A7)
  415.                   TRAP      #$E 
  416.                   ADDQ.L    #2,A7 
  417.                   MOVE.L    D0,OLD_PBAS 
  418.                   MOVE.W    #$FFFF,-(A7)
  419.                   MOVE.W    #$58,-(A7)
  420.                   TRAP      #$E 
  421.                   ADDQ.L    #4,A7 
  422.                   MOVE.W    D0,OLD_REZO 
  423.                   MOVE.W    #$44,-(A7)
  424.                   MOVE.W    #3,-(A7)
  425.                   MOVE.L    BACK,-(A7)
  426.                   MOVE.L    BACK,-(A7)
  427.                   MOVE.W    #5,-(A7)
  428.                   TRAP      #$E 
  429.                   ADDA.L    #$E,A7
  430.                   MOVE.W    #$25,-(A7)
  431.                   TRAP      #$E 
  432.                   ADDQ.L    #2,A7 
  433.                   RTS 
  434. TEND_REZ:         MOVE.W    OLD_REZO,-(A7)
  435.                   MOVE.W    #3,-(A7)
  436.                   MOVE.L    OLD_PBAS,-(A7)
  437.                   MOVE.L    OLD_PBAS,-(A7)
  438.                   MOVE.W    #5,-(A7)
  439.                   TRAP      #$E 
  440.                   ADDA.L    #$E,A7
  441.                   DC.B      $A0,$09 
  442.                   RTS 
  443. DSP_LOAD:         PEA       YAV 
  444.                   PEA       XAV 
  445.                   MOVE.W    #$6A,-(A7)
  446.                   TRAP      #$E 
  447.                   ADDA.L    #$A,A7
  448.                   MOVE.L    YAV,-(A7) 
  449.                   MOVE.L    XAV,-(A7) 
  450.                   MOVE.W    #$6B,-(A7)
  451.                   TRAP      #$E 
  452.                   ADDA.L    #$A,A7
  453.                   PEA       BUF_DSP 
  454.                   MOVE.W    #3,-(A7)
  455.                   PEA       (A6)
  456.                   MOVE.W    #$6C,-(A7)
  457.                   TRAP      #$E 
  458.                   ADDA.L    #$C,A7
  459.                   RTS 
  460.  DATA 
  461. NFDSP:            DC.B      $6D,$61,$72,$73,$2E,$6C,$6F,$64,$00,$00 
  462. X_POS:            DC.B      $00,$7F 
  463. Y_POS:            DC.B      $00,$0A 
  464.  BSS
  465. MAP:              DS.B      32768 
  466. L002D:            DS.W      1 
  467. COLOR_MAP:        DS.B      16384 
  468. Z_TAB:            DS.B      1128
  469. XAV:              DS.L      1 
  470. YAV:              DS.L      1 
  471. BUF_DSP:          DS.B      8000
  472. BACK:             DS.L      1 
  473. PHYSIK:           DS.B      1 
  474. L0035:            DS.B      1 
  475. L0036:            DS.B      1 
  476. L0037:            DS.B      1 
  477. OLD_REZO:         DS.W      1 
  478. OLD_PBAS:         DS.B      256008
  479. L003A:            DS.B      368640
  480. ZUEND: END
  481.