glokyfull

C2PLAS7E.S

May 25th, 2023
590
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. ;
  3. ;
  4. ; c2P utilisant les segment de 64k
  5. ; 3 sinus de 7 bit
  6.  
  7. _NBlignes equ 45 34  50 16 50  37
  8. offsetYecran    equ (200-_NBlignes*4)/2
  9. HEMOROID EQU 0
  10. DEBUG   EQU 1
  11.  
  12. pcstart
  13.     jsr convert1
  14.     jsr initallpalette
  15.     clr.l -(sp)
  16.     move.w #$20,-(sp)
  17.     trap #1
  18.     addq.l #6,sp
  19.    
  20.     lea sinsin900,a0
  21.     lea sinsinBSS900,a1
  22.     move.w #900-1,d7
  23.     MOVE.W #20,D0
  24.     bsr titi
  25.     bra.s zozozo
  26. titi
  27.     moveq #0,d1
  28.     move.w (a0)+,d1
  29.     add.w #32767,d1
  30.     mulu d0,d1
  31.     swap d1
  32.    
  33.     move.w d1,(a1)+
  34.     dbf d7,titi
  35.     rts
  36.  
  37.  
  38.  
  39.  
  40. zozozo
  41.     lea sinsinsin4000,a0
  42.     lea sinsinsinBSS4000,a1
  43.     move.w #4000-1,d7
  44.     MOVE.W #30,D0
  45.     bsr titi
  46.  
  47.  
  48.  
  49. init:
  50.  
  51.     lea 8(a1),a6
  52.  
  53.     IFEQ DEBUG
  54.  
  55.     MOVE.W #$2700,SR
  56.         MOVE.L $70.W,D0
  57.       MOVE.L #ITVBL,$70
  58.         MOVE.L D0,OLDITVBL
  59.         MOVE.W #$2300,SR
  60.     ENDC
  61.     IFEQ HEMOROID
  62.     move.b #0,$ffff8260.w
  63.     jsr wvbl
  64.     move.b #0,$ffff8260.w
  65.     ENDC
  66.    
  67.     move.l #c2ptable,d0
  68.     clr.w d0
  69.     move.l d0,c2ptableptr
  70.     add.l #65536,d0
  71.    
  72.     lea ptrscreen,a0
  73.     move.l d0,(a0)+
  74.     add.l #32000,d0
  75.     move.l d0,(a0)
  76.    
  77.    
  78.     jsr initc2ploop
  79.     jsr inithalftone
  80.     move.l c2ptableptr,a2
  81.     jsr makec2ptable
  82.     jsr prepsinAsinBsinC
  83.     jsr initfonction
  84.     move.l #16000-1,d1
  85.     move.l ptrscreen,a0
  86.     moveq #0,d0
  87. .clrscr
  88.     move.l d0,(a0)+
  89.     dbf d1,.clrscr
  90.    
  91.     movem.l palplasma,d0-d7
  92.     movem.l d0-d7,$ffff8240.w
  93.     ifeq debug
  94.     jsr sound
  95.     endc
  96. main
  97.     lea ptrscreen,a0
  98.     move.l (a0),d0
  99.     move.l 4(a0),d1
  100.     move.l d1,(a0)+
  101.     move.l d0,(a0)
  102.    
  103.     lsr.w #8,d0
  104.     move.l d0,$ffff8200.w
  105.     bsr wvbl
  106.  
  107.     move.l d1,a3
  108.     move.l d1,-(sp)
  109.     lea offsetYecran*160(a3),a3
  110.     jsr plasmaaa
  111.     move.l (sp)+,a0
  112.     lea offsetYecran*160(a0),a0
  113.    
  114.     ; copie des ligne
  115.  
  116.     rept _NBlignes
  117.  
  118.     movem.l (a0)+,d0-d7/a1-a6               14*4
  119. ;   movem.l d0-d7/a1-a6,160-14*4(a0)   
  120.     movem.l d0-d7/a1-a6,320-14*4(a0)   
  121. ;   movem.l d0-d7/a1-a6,480-14*4(a0)   
  122.     movem.l (a0)+,d0-d7/a1-a6               28*4
  123. ;   movem.l d0-d7/a1-a6,160-14*4(a0)
  124.     movem.l d0-d7/a1-a6,320-14*4(a0)
  125. ;   movem.l d0-d7/a1-a6,480-14*4(a0)
  126.     movem.l (a0)+,d0-d7/a1-a4               28+12*4=40*4
  127. ;   movem.l d0-d7/a1-a4,160-12*4(a0)
  128.     movem.l d0-d7/a1-a4,320-12*4(a0)
  129. ;   movem.l d0-d7/a1-a4,480-12*4(a0)
  130.  
  131.     lea 640-80*2(a0),a0
  132.     endr
  133.  
  134.     ;jsr codegenmovem
  135.    
  136.    
  137.     move.w #$777,$ffff8240.w
  138.     move.w #$00,$ffff8240.w
  139.    
  140.     cmp.b #$39,$fffffc02.w
  141.     bne main
  142.    
  143.    
  144.     IFEQ HEMOROID
  145.     move.b #1,$ffff8260.w
  146.     move.l $44e.w,d0
  147.     lsr.w #8,d0
  148.     move.l d0,$ffff8200.w
  149.     endc
  150.    
  151.     jsr wvbl
  152.     ifeq debug
  153.     MOVE.W #$2700,SR
  154.     MOVE.L OLDITVBL,D0
  155.     MOVE.L D0,$70.W
  156.     MOVE.W #$2300,SR
  157.    
  158.     jsr sound+4
  159.     endc   
  160.    
  161.     clr.w -(sp)
  162.     trap #1
  163.    
  164.    
  165.    
  166.     ifeq debug
  167. ITVBL
  168.     ADDQ.W #1,CPTVBL
  169.    
  170.     movem.l d0/d1,-(sp)
  171.     jsr sound+8
  172.     subq #1,cpttimer
  173.     movem.l (sp)+,d0/d1
  174.     RTE
  175.     endc
  176. CPTVBL  DC.W 0
  177.    
  178. cpttimer    dc.w 512
  179. OLDITVBL    DC.L 0
  180. palette dc.w 0,$111,$112,$222,$223,$333,$334,$555,$666,$777,$775,$764,$753,$742,$731,$720,$710
  181.  
  182. *palette    dc.w 0,$112,$223,$334,$337,$237,$127,$226,$325,$424,$613,$712,$612,$511,$410,$300,$200
  183.  
  184. ptrfonction dc.l firstfonction
  185. palramcpt   dc.w 0
  186. initfonction
  187.     lea palram,a2
  188.     add.w #32,palramcpt
  189.     cmp.w #6*32,palramcpt
  190.     bne.s .1
  191.     move.w #0,palramcpt
  192.    
  193. .1
  194.     add.w palramcpt,a2
  195.     movem.l (a2),d0-d7
  196.     movem.L d0-d7,$ffff8240.w
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.     ; a0 = liste parametre
  206.     ;
  207.     lea ptrfonction,a2
  208.     move.l (a2),d0
  209.     cmp.l #endfonction,d0
  210.     bne.s ok
  211.     move.l #firstfonction,d0
  212.     move.l d0,(a2)
  213. TAMERE
  214.     NOP
  215. ;   clr.w -(sp)
  216. ;   trap #1
  217. ok
  218.     move.l d0,a0
  219.    
  220.     lea plasmaauto,a1
  221.  
  222.     move.w (a0)+,d0
  223.     add d0,d0
  224.     add d0,d0
  225.     move.w d0,(a1)
  226.  
  227.  
  228.     move.w (a0)+,d0
  229.     add d0,d0
  230.     add d0,d0
  231.     move.w d0,4(a1)
  232.  
  233.  
  234.     move.w (a0)+,d0
  235.     add d0,d0
  236.     add d0,d0
  237.     move.w d0,8(a1)
  238.  
  239.     move.w (a0)+,_ad1+2         512
  240.     move.w (a0)+,_ad2+2         512
  241.    
  242.     move.w (a0)+,_ad3+2         1540
  243.     move.w (a0)+,_ad4+2         1540
  244.  
  245.     move.w (a0)+,_ad5+2         1540
  246.     move.w (a0)+,_ad6+2         1540
  247.     move.l a0,d0
  248.     move.l d0,(a2)
  249.     jsr initfx2
  250.     rts
  251.  
  252. modnosp macro \1,\2
  253.     ;move.w \2,-(sp)
  254.     ;move.w #192,\2
  255.     tst.w \1
  256.     dc.w $6b08
  257.     cmp \2,\1
  258.     dc.w $6d08
  259.     sub \2,\1
  260.     dc.w $60F8
  261.     add \2,\1
  262.     dc.w $6bfc
  263.     ;move.w (sp)+,\2
  264.     endm
  265.  
  266.  
  267.  
  268. routineadjustd0
  269.     move.w (a0),d4
  270.     tst.w d4
  271.     bpl.s .ok
  272.     add.w d0,d4
  273. .ok move.w d4,(a0)+
  274.     rts
  275. routineadjustd1
  276.     move.w (a0),d4
  277.     tst.w d4
  278.     bpl.s .ok
  279.     add.w d1,d4
  280. .ok move.w d4,(a0)+
  281.     rts
  282. routineadjustd2
  283.     move.w (a0),d4
  284.     tst.w d4
  285.     bpl.s .ok
  286.     add.w d2,d4
  287. .ok move.w d4,(a0)+
  288.     rts
  289.  
  290. convert1
  291.     lea firstfonction,a0
  292.     lea endfonction,a6
  293.     move.w #1540,d0
  294.     move.w #900,d1
  295.     move.W #4000,d2
  296.  
  297. loop
  298.     bsr routineadjustd0
  299.     bsr routineadjustd1
  300.     bsr routineadjustd2
  301.     bsr routineadjustd0
  302.     bsr routineadjustd0
  303.     bsr routineadjustd1
  304.     bsr routineadjustd1
  305.     bsr routineadjustd2
  306.     bsr routineadjustd2
  307.     cmp.l a6,a0
  308.     bmi.s loop
  309.     rts
  310.    
  311.    
  312.    
  313.    
  314. firstfonction:
  315.  
  316.     ;dc.w 511,1539,1539         ajout each vbl sin1,sin2,sin3
  317.     ;dc.w 511,511               ajout sin 1: pas sur la ligne(x), pas retour a la ligne(y)
  318.     ;dc.w 1539,1539             ajout sin 2: pas sur la ligne, pas retour a la ligne
  319.     ;dc.w 1539,1539             ajout sin 3: pas sur la ligne, pas retour a la ligne
  320.     ; les valeur si dessus sont les valeur max que peuvent prendre les valeur
  321.     ; (ici ca correspond a un pas de -1 partout)
  322.     ; a part sur les pas each vbl , les 0 sont mal accepté (ca prend beaucoup de memoire)
  323.  
  324.  
  325.  
  326.     dc.w -1,5,2
  327.     dc.w 9,-3
  328.     dc.w 5,-11
  329.     dc.w -3,2
  330.  
  331.     dc.w 4,-11,3
  332.     dc.w -7,10
  333.     dc.w 21,7
  334.     dc.w -8,13
  335.    
  336.  
  337.     dc.w 1,10,-5
  338.     dc.W 12,7
  339.     dc.w 3,16
  340.     dc.w -10,4
  341.    
  342.     dc.w -3,2,5
  343.     dc.w 14,29
  344.     dc.w 2,10
  345.     dc.w 1,4
  346.  
  347.     dc.w 21,-13,2
  348.     dc.w -3,4
  349.     dc.w 5,6
  350.     dc.w -4,1
  351.    
  352.     dc.w -12,4,1
  353.     dc.w 25,-3
  354.     dc.w 7,9
  355.     dc.w -2,3
  356.    
  357.  
  358.     dc.w 11,-12,14
  359.     dc.w 3,5
  360.     dc.w 3,7
  361.     dc.w 4,-3
  362.    
  363.     dc.w 2,-1,4
  364.     dc.w 7,25
  365.     dc.w -11,31
  366.     dc.w -14,1
  367.    
  368.     dc.w 4,2,1
  369.     dc.w 5,0
  370.     dc.w 11,1
  371.     dc.w 1,4
  372.    
  373.     dc.w 1,2,3
  374.     dc.w 8,5
  375.     dc.w 4,9
  376.     dc.w 3,1
  377.    
  378.     dc.w 1,2,3
  379.     dc.w 9,19
  380.     dc.w 8,1
  381.     dc.w 2,3
  382.    
  383.     dc.w 1,2,4
  384.     dc.w -9,10
  385.     dc.w -1,2
  386.     dc.w 2,4
  387.    
  388.     dc.w 1,2,4
  389.     dc.w 11,5
  390.     dc.w -11,12
  391.     dc.w 2,4
  392.    
  393.     dc.w 2,3,7
  394.     dc.w 1,11
  395.     dc.w 10,12
  396.     dc.w 1,2
  397.    
  398.    
  399.    
  400.    
  401.    
  402.    
  403.    
  404.    
  405.     dc.w 10,20,-30
  406.     dc.w 11,21
  407.     dc.w 1,-1,3,4
  408.    
  409.     dc.w 16,17,18
  410.     dc.w 5,4
  411.     dc.w 1,2
  412.     dc.w 3,4
  413.    
  414.     dc.w 1,2,3
  415.     dc.w 2,3
  416.     dc.w 4,5
  417.     dc.w 6,7
  418.    
  419.     dc.w 1+4,2+4,3+4
  420.     dc.w 2+4,3+4
  421.     dc.w 4+4,5+4
  422.     dc.w 4,1
  423.  
  424.  
  425.     dc.w 1,-11,-2
  426.     dc.w 10,15
  427.     dc.w 11,16
  428.     dc.w 12,-17
  429.  
  430.  
  431.     dc.w -11,3,17
  432.     dc.w 9,-5
  433.     dc.w 15,-12
  434.     dc.w -2,6
  435.  
  436.     dc.w 1,2,3
  437.     dc.w -7,10
  438.     dc.w -9,7
  439.     dc.w -6,13
  440.    
  441.  
  442.     dc.w 1,11,-5
  443.     dc.W 1,7
  444.     dc.w 3,6
  445.     dc.w -4,1
  446.    
  447.     dc.w 3,2,5
  448.     dc.w 4,2
  449.     dc.w 5,1
  450.     dc.w 1,4
  451.  
  452.     dc.w 6,-3,2
  453.     dc.w 4,-2
  454.     dc.w 5,4
  455.     dc.w -3,1
  456.    
  457.     dc.w 2,4,11
  458.     dc.w 5,3
  459.     dc.w 7,9
  460.     dc.w -10,7
  461.    
  462.    
  463. endfonction
  464.  
  465.  
  466. plasmaaa   
  467.     ; a3 = logscreen
  468.     movem.w anglex4,d1-d3
  469.     move.l adrrefA,a6
  470.     add d1,a6
  471.     move.l adrrefB,a4
  472.     add d2,a4
  473.     move.l adrrefC,a5
  474.     add d3,a5
  475.     move.l (a6),a6
  476.     move.l (a4),a4
  477.     move.l (a5),a5
  478.     move.l (a6)+,a0
  479.     move.l (a4)+,a1
  480.     move.l (a5)+,a2
  481.     move.l a6,d5
  482.     move.w #_NBlignes-1,d7          ; nombre de ligne
  483.     move.l c2ptableptr,d0
  484.        
  485.     jsr codegenere
  486.     movem.w anglex4,d1-d3
  487. plasmaauto equ *+2
  488.     add.w #(1540-11)*4,d1
  489.     add.w #(3)*4,d2
  490.     add.w #(17)*4,d3
  491.  
  492.     cmp.w #1540*4,d1
  493.     blt.s .00
  494.     sub.w #1540*4,d1
  495. .00
  496.  
  497.     ;and.w #511*4,d1
  498.     move.w #900*4,d0
  499.     cmp.w d0,d2
  500.     blt.s .1
  501.     sub d0,d2
  502. .1  move.w #4000*4,d0
  503.  
  504.     cmp.w d0,d3
  505.     blt.s .2
  506.     sub d0,d3
  507. .2  movem.w d1-d3,anglex4
  508.     rts
  509.    
  510.    
  511. wvbl:
  512.     ifeq debug
  513.         move.w d7,-(sp)
  514.         move.w CPTVBL,d7
  515. .1      cmp.w CPTVBL,d7
  516.         beq.s .1
  517.         move.w (sp)+,d7
  518.  
  519.         tst.w cpttimer
  520.         bpl.s .2
  521.         move.w #1400,cpttimer
  522.         movem.l d0/d1,-(sp)
  523.         jsr initfonction
  524.         movem.l (sp)+,d0/d1
  525. .2
  526.     endc
  527.     ifne debug
  528.         move.w #$25,-(sp)
  529.         trap #14
  530.         addq.l #2,sp
  531.         addq.w #1,CPTVBL
  532.         subq.w #1,cpttimer
  533.         tst.w cpttimer
  534.         bpl.s .3
  535.         move.w #1400,cpttimer
  536.         movem.l d0/d1,-(sp)
  537.         jsr initfonction
  538.         movem.l (sp)+,d0/d1
  539. .3
  540.     endc       
  541.         rts
  542.     dc.l $f0000000
  543.     dc.l $0f000000
  544.     ;dc.l
  545.     DC.L $3000
  546.     dc.l $0C00
  547. initfonte
  548.     ;lea fonte,a0
  549.     ;lea doublezero,a1
  550.     moveq #7,d7
  551.     moveq #0,d1
  552. .loop
  553.     move.b (a0),(a1)
  554.     move.w (a1),d0
  555.     lsl.w #1,d0
  556.     bvc .suite
  557. .putbloc
  558.     move.l #$F000,d1
  559.    
  560. .suite
  561.     lsl.w #1,d0
  562.     bvc.s .suite2
  563. .putbloc2
  564.     or.w #$0F00,d1
  565.  
  566. .suite2
  567.     lsl.w #1,d0
  568.     bvc.s .suite3
  569. .putbloc3
  570.     or.w #$00F0,d1
  571. .suite3
  572.     lsl.w #1,d0
  573.     bvc .suite4
  574. .putbloc4
  575.     or.w #$000F,d1
  576.  
  577. .suite4
  578.     move.w d1,(a2)+
  579.     moveq #0,d1
  580.     move.w #$F000,d2
  581.    
  582.    
  583.    
  584.  
  585.     ;moveq #0,d1
  586.     ;btst d1,d0
  587.     ;b;eq.s .1
  588.     ;move.l #00000000000000,d2
  589.    
  590.  
  591. initc2ploop
  592.     lea codegenere,a6
  593.     lea automovep1,a1
  594.     lea automovep2,a2
  595.     move.w #0,(a1)          ; pas necessaire sauf si on appelle une seconde fois la routine
  596. ;   move.w #320,4(a1)
  597.     move.w #1,(a2)
  598. ;   move.w #321,4(a2)
  599.    
  600.     lea c2ptounrol,a3
  601.     move.l a3,a4
  602. ;.;loopligne
  603.     moveq #19,d7
  604. .loop
  605.     move.l a4,a3
  606.     lea c2ptounrolend,a5
  607. .cpy
  608.     move.w (a3)+,(a6)+
  609.     cmp.l a3,a5
  610.     bne.s .cpy
  611.     add.w #8,(a1)
  612.     add.w #8,(a2)
  613.     ;add #8,4(a1)
  614.     ;add #8,4(a2)
  615.     dbf d7,.loop
  616.  
  617.     lea c2pinita0a1a2,a3
  618.     lea c2pfina0a1a2,a5
  619. .cpy2
  620.     move.w (a3)+,(a6)+
  621.     cmp.l a3,a5
  622.     bne.s .cpy2
  623.    
  624.  
  625.     rts
  626.  
  627.     lea codegenmovem,a6
  628.     move.l #$4CD87EFF,d0        movem.l (a0)+,d0-d7/a1-a6
  629.     move.l #$48E87EFF,d1        movem.l d0-d7/a1-a6,dep(a0)
  630.     move.w #$68,d2
  631.     move.w #$108,d3
  632.     move.w #$1a8,d4
  633.     move.l #$48e81eff,d6
  634.    
  635.            
  636.     move.w #_NBlignes-1,d7
  637. .cpynbligne
  638.     moveq #1,d5
  639. .loopcpy
  640.     move.l d0,(a6)+
  641. ;   move.l d1,(a6)+
  642. ;   move.w d2,(a6)+
  643.     move.l d1,(a6)+
  644.     move.w d3,(a6)+
  645. ;   move.l d1,(a6)+
  646. ;   move.w d4,(a6)+                     ; (22 octet*2
  647.     dbf d5,.loopcpy    
  648.     move.l #$4cd81eff,(a6)+
  649. ;   move.l d6,(a6)+
  650. ;   move.w #$70,(a6)+
  651.     move.l d6,(a6)+
  652.     move.w #$110,(a6)+
  653. ;   move.l d6,(a6)+
  654. ;   move.w #$1b0,(a6)+
  655.     move.l #$41e801e0,(a6)+             ; +26 octet) * nbligne   22+13 = 35 word*nbligne
  656.     dbf d7,.cpynbligne
  657.     move.w #$4e75,-4(a6)        ; rts a la place du dernier lea
  658.                                         ; -2
  659.  
  660.     rts
  661.        
  662. ; code mort a unrolé comme il faut
  663.  
  664. ;cp2routinitline
  665. ;   lea 320(a3),a3
  666. c2ptounrol
  667.     move.w (a0)+,d0
  668.     add.w (a1)+,d0
  669.     add.w (a2)+,d0
  670.     move.l d0,a6
  671.     move.l (a6),d4
  672. automovep1 equ *+2
  673.     movep.l d4,(a3)
  674.     ;movep.l d4,320(a3)
  675.  
  676.  
  677.     move.w (a0)+,d0
  678.     add.w (a1)+,d0
  679.     add.w (a2)+,d0
  680.     move.l d0,a6
  681.     move.l (a6),d4
  682. automovep2 equ *+2
  683.     movep.l d4,(a3)
  684.     ;movep.l d4,320(a3)
  685. c2ptounrolend
  686. c2pinita0a1a2
  687.     move.l d5,a6
  688.     move.l (a6)+,a0
  689.     move.l (a4)+,a1
  690.     move.l (a5)+,a2
  691.     move.l a6,d5
  692.     lea 640(a3),a3              640
  693.     ; dbf d7,codegenere
  694.     dc.w $51CF,$FDC0
  695.     rts
  696. c2pfina0a1a2
  697.  
  698.  
  699.  
  700.  
  701.  
  702. c2p1pixtounrol
  703.     ;lea c2p1pixauto,a0
  704.     ;move.w #0,(a0)
  705. initc2ploop1pix
  706.     lea codegenere,a6
  707.     lea c2p1pixauto,a1
  708.     move.w #0,(a1)          ; pas necessaire sauf si on appelle une seconde fois la routine
  709.        
  710.     lea c2p1pix,a3
  711.     move.l a3,a4
  712. ;.;loopligne
  713.     moveq #3,d7
  714. .loop
  715.     move.l a4,a3
  716.     lea c2p1pixfin,a5
  717. .cpy
  718.     move.w (a3)+,(a6)+
  719.     cmp.l a3,a5
  720.     bne.s .cpy
  721.     btst #0,(a1)
  722.     bne.s .add7
  723.     addq.w #1,(a1)
  724.     bra.s .add0
  725. .add7   addq.w #7,(a1)
  726. .add0
  727.     dbf d7,.loop
  728.  
  729.     lea c2p1pixinita0a1a2,a3
  730.     lea c2p1pixfina0a1a2,a5
  731. .cpy2
  732.     move.w (a3)+,(a6)+
  733.     cmp.l a3,a5
  734.     bne.s .cpy2
  735.     move.w #$4e75,(a6)+
  736.     rts
  737. c2p1pixinita0a1a2
  738.     move.l d5,a6
  739.     move.l (a6)+,a0
  740.     move.l (a4)+,a1
  741.     move.l (a5)+,a2
  742.     move.l a6,d5
  743.     lea 160(a3),a3              640
  744.     ; dbf d7,codegenere
  745.     dc.w $51CF,$Ff40
  746. c2p1pixfina0a1a2
  747.     rts
  748.    
  749.  
  750. c2p1pix
  751.     move.w (a0)+,d0  %11000000
  752.     add.w (a1)+,d0
  753.     add.w (a2)+,d0
  754.     ;and.w dn=%11110000,d0
  755.     move.l d0,a6
  756.     move.l (a6),d4
  757.  
  758.    
  759.     move.w (a0)+,d1     00110000
  760.     add (a1)+,d1
  761.     add (a2)+,d1
  762.     move.l d1,a6
  763.     or.l (a6),d4
  764.    
  765.     move.w (a0)+,d2   00001100  
  766.     add (a1)+,d2
  767.     add (a2)+,d2
  768.     move.l d2,a6
  769.     or.l (a6),d4
  770.        
  771.     move.w (a0)+,d3     00000011
  772.     add (a1)+,d3
  773.     add (a2)+,d3
  774.     move.l d3,a6
  775.     or.l (a6),d4
  776.    
  777. c2p1pixauto equ *+2
  778.     movep d4,0(a4)
  779. c2p1pixfin
  780.  
  781.     move.l d5,a6
  782.     move.l (a6)+,a0
  783.     move.l (a4)+,a1
  784.     move.l (a5)+,a2
  785.     move.l a6,d5
  786.     lea 160(a3),a3              640
  787.     dc.w $51cf,$ff40
  788.    
  789. debug2
  790.     rept 4
  791.     move.w (a0)+,d0  %11000000
  792.     add.w (a1)+,d0
  793.     add.w (a2)+,d0
  794.     ;and.w dn=%11110000,d0
  795.     move.l d0,a6
  796.     move.w (a6),d4
  797.  
  798.    
  799.     move.w (a0)+,d1     00110000
  800.     add (a1)+,d1
  801.     add (a2)+,d1
  802.     move.l d1,a6
  803.     or.w (a6),d4
  804.    
  805.     move.w (a0)+,d2   00001100  
  806.     add (a1)+,d2
  807.     add (a2)+,d2
  808.     move.l d2,a6
  809.     or.w (a6),d4
  810.        
  811.     move.w (a0)+,d3     00000011
  812.     add (a1)+,d3
  813.     add (a2)+,d3
  814.     move.l d3,a6
  815.     or.w (a6),d4
  816.    
  817. ;c2p1pixauto equ *+2
  818.     movep.w d4,1(a4)
  819.  
  820.     endr
  821.  
  822.     move.l d5,a6
  823.     move.l (a6)+,a0
  824.     move.l (a4)+,a1
  825.     move.l (a5)+,a2
  826.     move.l a6,d5
  827.     lea 160(a3),a3              640
  828.      dbf d7,debug2
  829.     ;dc.w $51CF,$FDC0
  830.  
  831.    
  832.  
  833.     move.w (a0)+,d0  %10001000
  834.     add.w (a1)+,d0
  835.     add.w (a2)+,d0
  836.     ;and.w dn=%11110000,d0
  837.     move.l d0,a6
  838.     move.l (a6),d5
  839.     and.l d7,d5
  840.     or.l d5,d4
  841.    
  842.     move.w (a0)+,d1     01000100
  843.     add (a1)+,d1
  844.     add (a2)+,d1
  845.     move.l d1,a6
  846.     move.l (a6),d5
  847.     and.l d7,d5
  848.     or.l d5,d4
  849.    
  850.     move.w (a0)+,d2
  851.     add (a1)+,d2
  852.     add (a2)+,d2
  853.     move.l d2,a6
  854.     move.l (a6),d5
  855.     and.l d7,d5
  856.     or.l d5,d4
  857.    
  858.     move.w (a0)+,d3
  859.     add (a1)+,d3
  860.     add (a2)+,d3
  861.     move.l d3,a6
  862.     move.l (a6),d5
  863.     and.l d7,d5
  864.     or.l d5,d4
  865.  
  866.     movep.w d4,2(a4)
  867.  
  868.  
  869.  
  870.  
  871.  
  872.    
  873.     move.w (a0)+,d3
  874.     add (a1)+,d3
  875.     add (a2)+,d3
  876.     move.l d3,a6
  877.     or.l (a6),d4
  878.    
  879.     move.w (a0)+,d0
  880.     add.w (a1)+,d0
  881.     add (a2)+,d0
  882.    
  883.    
  884.  
  885.  
  886. ;
  887. ;
  888. ; routine de test qui permet de calculer l'opcode du dbf d7,codegenere
  889. ;superdupont
  890. ;   rept 20
  891. ;   move.w (a0)+,d0
  892. ;   add.w (a1)+,d0
  893. ;   add.w (a2)+,d0
  894. ;   move.l d0,a6
  895. ;   move.l (a6),d4
  896. ;;automovep1 equ *+2
  897. ;   movep.l d4,0(a3)
  898.    
  899. ;   move.w (a0)+,d0
  900. ;   add.w (a1)+,d0
  901. ;   add.w (a2)+,d0
  902. ;   move.l d0,a6
  903. ;   move.l (a6),d4
  904. ;;utomovep2 equ *+2
  905. ;   movep.l d4,1(a3)
  906. ;   endr
  907. ;   move.l d5,a6
  908. ;   move.l (a6)+,a0
  909. ;   move.l (a4)+,a1
  910. ;   move.l (a5)+,a2
  911. ;   move.l a6,d5
  912. ;   lea 640(a3),a3;
  913. ;   dbf d7,superdupont  ; a voir la valeur au debuggueur: $51CF,$FDC0
  914. ;   rts
  915.  
  916.  
  917. ; CODe that calculate c2phalftone   data
  918. ; once the value calculated in debugger
  919. ; it cost less octet to put the data directly in dc.l
  920. ; and the code is deprecated but i need to keep this routine for the futur
  921.  
  922.  
  923. inithalftone
  924.    
  925.     move.l #$55555555,d2
  926.     move.l d2,d3
  927.     not.l d3
  928. .dumb  
  929.     lea c2ptable0,a0
  930.     lea c2phalftone,a1
  931.     moveq #15,d7
  932.     move.l (a0)+,d0;
  933.     move.l d0,(a1)+
  934. toto
  935.     move.l (a0)+,d1
  936.     move.l d0,(a1)+
  937.     move.l d0,d4
  938.     and.l d2,d4
  939.     move.l d1,d5
  940.     and.l d3,d5
  941.     or.l d4,d5
  942.     move.l d5,(a1)+
  943.    
  944.     move.l d1,d0
  945.     dbf d7,toto
  946.     ;move.l d5,(a1)+
  947.     rts
  948. ;   illegal
  949.  
  950. c2pcolor1pix    dc.b 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
  951.                 dc.b 0,0,0,1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,8,8,8,9,9,9,10,10,10,11,11,11,12,12,12,13,13,13,14,14,14,15,15,15
  952.                 dc.b 15,15,15,14,14,14,13,13,13,12,12,12,11,11,11,10,10,10,9,9,9,8,8,8,7,7,7,6,6,6,5,5,5,4,4,4,3,3,3,2,2,2,1,1,1,0,0,0
  953.                
  954.  
  955.  
  956.  
  957.  
  958. c2ptable0   DC.L $00000000
  959.             DC.L $FF000000
  960.             DC.L $00FF0000
  961.             DC.L $FFFF0000
  962.             DC.L $0000FF00
  963.             DC.L $FF00FF00
  964.             DC.L $00FFFF00
  965.             DC.L $FFFFFF00
  966.             DC.L $000000FF
  967.             DC.L $FF0000FF
  968.             DC.L $00FF00FF
  969.             DC.L $FFFF00FF
  970.             DC.L $0000FFFF
  971.             DC.L $FF00FFFF
  972.             DC.L $00FFFFFF
  973.             DC.L $FFFFFFFF
  974.        
  975. ;c2phalftone
  976. ;           dc.l $00000000
  977. ;           dc.l $AA000000
  978. ;           dc.l $FF000000
  979. ;           dc.l $55AA0000
  980. ;           dc.l $00FF0000
  981. ;           dc.l $AAFF0000
  982. ;           dc.l $5555AA00
  983. ;           dc.l $0000FF00
  984. ;           dc.l $AA00FF00
  985. ;           dc.l $FF00FF00
  986. ;           dc.l $55AAFF00
  987. ;           dc.l $00FFFF00
  988. ;           dc.l $AAFFFF00
  989. ;           dc.l $FFFFFF00
  990. ;           dc.l $555555AA
  991. ;           dc.l $000000FF
  992. ;           dc.l $AA0000FF
  993. ;           dc.l $FF0000FF
  994. ;           dc.l $55AA00FF
  995. ;           dc.l $00FF00FF
  996. ;           Dc.l $AAFF00FF
  997. ;           DC.L $FFFF00FF
  998. ;           DC.L $5555AAFF
  999. ;           DC.L $0000FFFF
  1000. ;           DC.L $AA00FFFF
  1001. ;           DC.L $FF00FFFF
  1002. ;           DC.L $55AAFFFF
  1003. ;           DC.L $00FFFFFF
  1004. ;           DC.L $AAFFFFFF
  1005. ;           DC.L $FFFFFFFF
  1006. ;      
  1007. ;           dc.l $FFFFFFFF      ; repeated to have 32 value ??? est ce qu'on doit metre 32 valeur ou est ce qu'il
  1008. ;           dc.l 0,0,0,0                        ; vaut mieux pas garder 31 valeur et faire le tableau en consequence
  1009. ;           BSS
  1010. ;c;2phalftone   ds.l 32
  1011. ;           ds.l 1
  1012.            
  1013. ;       3 valeur 7 bit additionné table c2p : 2 texel  14bit +2bit=4 octet pour le movep
  1014. ;      
  1015. ;       pour chaque sin:
  1016. ;       un word  7+7+2 bit
  1017. ;       deployé en paire impaire
  1018.         DATA
  1019. liste128colorm
  1020.     dc.b 0,0,1,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29
  1021.     dc.b 29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,1,0,0
  1022.     dc.b 0,0,1,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29
  1023.     dc.b 29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,1,0,0
  1024. liste128color
  1025.     dc.b 0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15
  1026.     dc.b 16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,30,30,30,30
  1027.     dc.b 30,30,30,30,29,29,28,28,27,27,26,26,25,25,24,24,23,23,22,22,21,21,20,20,19,19,18,18,17,17,16,16
  1028.     dc.b 15,15,14,14,13,13,12,12,11,11,10,10,9,9,8,8,7,7,6,6,5,5,4,4,3,3,2,2,1,1,0,0
  1029.  
  1030. liste128colorj
  1031.     dc.b 0,0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7
  1032.     dc.b 8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15
  1033.     dc.b 16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23
  1034.     dc.b 24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29
  1035. liste128colork
  1036.     dc.b 0,0,0,1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7
  1037.     dc.b 8,8,8,9,9,9,10,10,10,11,11,11,12,12,12,13,13,13,14,14,14,15,15,15
  1038.     dc.b 16,16,16,17,17,17,18,18,18,19,19,19,20,20,20,21,21,21,22,22,22,23,23,23
  1039.     dc.b 24,24,24,25,25,25,26,26,26,27,27,27,28,28,28,28,28,29,29,29,29,29,29,29
  1040.    
  1041.     DC.B 30,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
  1042.  
  1043.  
  1044. liste128colorb
  1045.     dc.b 0
  1046.     dc.b 1,1
  1047.     dc.b 2,2,2,2
  1048.     dc.b 3,3,3,3,3,3,3,3
  1049.     dc.b 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
  1050.     dc.b 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
  1051.     dc.b 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
  1052.     rept 64
  1053.     dc.b 6
  1054.     endr
  1055.     rept 128
  1056.     dc.b 7
  1057.     endr
  1058.  
  1059.  
  1060.     even
  1061.     ;dc.b 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
  1062.     ;dc.b 31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
  1063.         TEXT
  1064. makec2ptable
  1065.     lea liste128color,a0 ; une couleur = un octet entre 0 et 31  128 octet qui represente le c2p
  1066.     ; a2 = ram page de 64k
  1067.     ;
  1068.     lea c2phalftone,a1
  1069.    
  1070.     ;move.l #-1,d0
  1071.     move.l #$F0F0F0F0,d0
  1072.     ;move.l #$0F0F0F0F,d1
  1073. ;mask4bit   dc.l $F0F0F0F0
  1074. ;           dc.l $0F0F0F0F
  1075.            
  1076. ;mask2bit   dc.l $C0C0C0C0
  1077. ;           dc.l $30303030
  1078. ;           dc.l $0C0C0C0C
  1079. ;           dc.l $03030303
  1080.  
  1081.  
  1082.     move.l d0,d1
  1083.     not.l d1
  1084.    
  1085.     moveq #0,d2
  1086.     moveq #127,d7
  1087. .loop0
  1088.     moveq #0,d4
  1089.     move.b (a0,d2),d4
  1090. ;   ext.w d4
  1091.     add d4,d4
  1092.     add d4,d4
  1093.     move.l (a1,d4),d5       ;c2p premier mot
  1094.     and.l d0,d5
  1095.  
  1096.     moveq #0,d3
  1097. .loop
  1098.     moveq #0,d4
  1099.     move.b (a0,d3.w),d4
  1100. ;   ext.w d4
  1101.     add d4,d4
  1102.     add d4,d4
  1103.     move.l (a1,d4.w),d6
  1104.     and.l d1,d6
  1105.     or.l d5,d6                  ; d5 n'est pas modifié dans la .loop
  1106.     move.l d6,(a2)+
  1107.     addq.w #1,d3
  1108.     and.w d7,d3
  1109.     tst d3
  1110.     bne.s .loop
  1111.     clr.l d3
  1112.     addq.w #1,d2
  1113.     and.w d7,d2
  1114.     tst d2
  1115.     bne.s .loop0
  1116.     rts
  1117.    
  1118. makec2ptable1pix
  1119.     lea c2ptable0,a1
  1120.     lea c2pcolor1pix,a0
  1121.     move.l #$80808080,d0
  1122.     move.l #$40404040,d1
  1123.     move.l c2ptableptr,a2
  1124.    
  1125.     moveq #0,d2
  1126.     moveq #127,d7
  1127. .loop0
  1128.     moveq #0,d4
  1129.     move.b (a0,d2),d4
  1130. ;   ext.w d4
  1131.     add d4,d4
  1132.     add d4,d4
  1133.     move.l (a1,d4),d5       ;c2p premier mot
  1134.     and.l d0,d5
  1135.  
  1136.     moveq #0,d3
  1137. .loop
  1138.     moveq #0,d4
  1139.     move.b (a0,d3.w),d4
  1140. ;   ext.w d4
  1141.     add d4,d4
  1142.     add d4,d4
  1143.     move.l (a1,d4.w),d6
  1144.     and.l d1,d6
  1145.     or.l d5,d6                  ; d5 n'est pas modifié dans la .loop
  1146.     move.l d6,(a2)+
  1147.     addq.w #1,d3
  1148.     and.w d7,d3
  1149.     tst d3
  1150.     bne.s .loop
  1151.     clr.l d3
  1152.     addq.w #1,d2
  1153.     and.w d7,d2
  1154.     tst d2
  1155.     bne.s .loop0
  1156.    
  1157.     move.l #$20202020,d0
  1158.     move.l #$10101010,d1
  1159.     move.l c2ptableptr,d2
  1160.     add.l #$10000,d2
  1161.     move.l d2,a2
  1162.    
  1163.     moveq #0,d2
  1164.     moveq #127,d7
  1165. .loop1
  1166.     moveq #0,d4
  1167.     move.b (a0,d2),d4
  1168.     add d4,d4
  1169.     add d4,d4
  1170.     move.l (a1,d4),d5
  1171.     and.l d0,d5
  1172.    
  1173.     moveq #0,d3
  1174. .loop1b
  1175.     moveq #0,d4
  1176.     move.b (a0,d3.w),d4
  1177.     add d4,d4
  1178.     add d4,d4
  1179.     move.l (a1,d4.w),d6
  1180.     and.l d1,d6
  1181.     or.l d5,d6
  1182.     move.l d6,(a2)+
  1183.     and.w d7,d3
  1184.     tst d3
  1185.     bne.s .loop1b
  1186.     addq #1,d2
  1187.     and.w d7,d2
  1188.     tst d2
  1189.     bne.s .loop1
  1190.    
  1191.    
  1192.     move.l #$08080808,d0
  1193.     move.l #$04040404,d1
  1194.     move.l c2ptableptr,d2
  1195.     add.l #$20000,d2
  1196.     move.l d2,a2
  1197.    
  1198.     moveq #0,d2
  1199.     moveq #127,d7
  1200. .loop2
  1201.     moveq #0,d4
  1202.     move.b (a0,d2),d4
  1203.     add d4,d4
  1204.     add d4,d4
  1205.     move.l (a1,d4),d5
  1206.     and.l d0,d5
  1207.    
  1208.     moveq #0,d3
  1209. .loop2b
  1210.     moveq #0,d4
  1211.     move.b (a0,d3.w),d4
  1212.     add d4,d4
  1213.     add d4,d4
  1214.     move.l (a1,d4.w),d6
  1215.     and.l d1,d6
  1216.     or.l d5,d6
  1217.     move.l d6,(a2)+
  1218.     and.w d7,d3
  1219.     tst d3
  1220.     bne.s .loop2b
  1221.     addq #1,d2
  1222.     and.w d7,d2
  1223.     tst d2
  1224.     bne.s .loop2
  1225.    
  1226.    
  1227.     move.l #$02020202,d0
  1228.     move.l #$01010101,d1
  1229.     move.l c2ptableptr,d2
  1230.     add.l #$30000,d2
  1231.     move.l d2,a2
  1232.    
  1233.     moveq #0,d2
  1234.     moveq #127,d7
  1235. .loop3
  1236.     moveq #0,d4
  1237.     move.b (a0,d2),d4
  1238.     add d4,d4
  1239.     add d4,d4
  1240.     move.l (a1,d4),d5
  1241.     and.l d0,d5
  1242.    
  1243.     moveq #0,d3
  1244. .loop3b
  1245.     moveq #0,d4
  1246.     move.b (a0,d3.w),d4
  1247.     add d4,d4
  1248.     add d4,d4
  1249.     move.l (a1,d4.w),d6
  1250.     and.l d1,d6
  1251.     or.l d5,d6
  1252.     move.l d6,(a2)+
  1253.     and.w d7,d3
  1254.     tst d3
  1255.     bne.s .loop3b
  1256.     addq #1,d2
  1257.     and.w d7,d2
  1258.     tst d2
  1259.     bne.s .loop3   
  1260.     rts
  1261.        
  1262. createsintabspecial
  1263. ; a0 ram
  1264. ; a1 sinustable octet
  1265. ; d1 nombre d'element de la table
  1266. ; d0 = pas interne
  1267.  
  1268.     ;move d1,d2
  1269.     ;ext.l d2
  1270.     ;add.l d2,d2
  1271.     ;add.l d2,d2
  1272.     ;lea (a0,d2.l),a2               ; a0 = refsintable adresse 4*nombre d'element
  1273.     lea addd0d2,a5
  1274.     lea tempSinref,a2
  1275.                                     ; a2 = datasin
  1276.     lea buffer2octet,a6                    
  1277.     lea tabflag,a3
  1278.     move d1,d2
  1279.     subq #1,d2
  1280. .1  clr.b (a3)+
  1281.     dbf d2,.1
  1282.     moveq #0,d2     ; angle courant
  1283.     lea tabflag,a3
  1284. .while
  1285.     tst.b (a3,d2)
  1286.     bne.s .flaga1
  1287. .flaga0
  1288.     st.b (a3,d2)
  1289.     move d2,d3
  1290.     add d3,d3
  1291.     add d3,d3
  1292.     move.l a0,(a2,d3)
  1293.     move.b (a1,d2),d3
  1294.     move.b d3,(a6)
  1295.     move.w (a6),d3
  1296.     jsr (a5)
  1297.     move.b (a1,d2),d3
  1298.     add.b d3,d3
  1299.     add.w d3,d3
  1300.     move.w d3,(a0)+
  1301.     jsr (a5)            ;bsr addd0d2
  1302.     bra.s .while
  1303. .flaga1
  1304.     move.w d2,-(sp)
  1305.     moveq #39,d4        ; 80 valeur = 40 word on reste sur des adresse paire
  1306. .looprept
  1307.     move.b (a1,d2),d3
  1308.     ;lsl.w #8,d3
  1309.     move.b d3,(a6)
  1310.     move.w (a6),d3
  1311.     jsr (a5)            ;bsr addd0d2
  1312.     move.b (a1,d2),d3
  1313.     add.b d3,d3
  1314.     add.w d3,d3
  1315.     move.w d3,(a0)+
  1316.     jsr (a5)            ;bsr addd0d2
  1317.     dbf d4,.looprept
  1318.    
  1319.     move.w (sp)+,d2
  1320.     addq #1,d2
  1321.     tst.b (a3,d2)
  1322.     beq.s .flaga0
  1323.     rts
  1324. addd0d2
  1325.     add d0,d2
  1326.     cmp.w d1,d2
  1327.     bmi.s .1
  1328.     sub.w d1,d2
  1329. .1 rts
  1330. buffer2octet    dc.w 0
  1331. createbufferadresse
  1332. ; meme principe que createsintabspecial
  1333. ; a2 ram adresse calculé d'apres a0
  1334. ; a0 =efadresse a0 +4*d1 = ram valeur pioché dans a1 = a2
  1335. ; a1 tempsinref
  1336. ; d1 nombre d'element de la table
  1337. ; d0 = pas interne
  1338.  
  1339.  
  1340.     move.w d1,d2
  1341.     add d2,d2
  1342.     add d2,d2
  1343.     lea (a0,d2),a2
  1344.     lea addd0d2,a6
  1345.     lea tempSinref,a1
  1346.  
  1347.     lea tabflag,a3
  1348.     move d1,d2
  1349.     subq #1,d2
  1350. .1  clr.b (a3)+
  1351.     dbf d2,.1
  1352.     moveq #0,d2     ; angle courant
  1353.     lea tabflag,a3
  1354. .while
  1355.     tst.b (a3,d2)
  1356.     bne.s .flaga1
  1357. .flaga0
  1358.     st.b (a3,d2)
  1359.     move d2,d3
  1360.     add d3,d3
  1361.     add d3,d3
  1362.     move.l a2,(a0,d3)
  1363.     move.l (a1,d3),d7
  1364.     move.l d7,(a2)+
  1365.     jsr (a6)
  1366.     bra.s .while
  1367. .flaga1
  1368.     move.w d2,-(sp)
  1369.     move.w #_NBlignes-1,d4      ; 80 valeur = 40 word on reste sur des adresse paire
  1370. .looprept
  1371.     move.w d2,d3
  1372.     add d3,d3
  1373.     add d3,d3
  1374.    
  1375.     move.l (a1,d3),d7
  1376.     move.l d7,(a2)+
  1377.    
  1378.     jsr (a6)        ;bsr addd0d2
  1379.     dbf d4,.looprept
  1380.    
  1381.     move.w (sp)+,d2
  1382.     addq #1,d2
  1383.     tst.b (a3,d2)
  1384.     beq.s .flaga0
  1385.     ; a0 n'a pas bougé depuis le debut, ca represente la ram libre
  1386.     ; donc
  1387.     move.l a2,a0
  1388.     ; on modifie a0 pour le metre a la fin
  1389.     rts
  1390.  
  1391. preparequartersin
  1392.     lea quartsin1540,a0
  1393.     lea sin1540,a1
  1394.     lea 1540/4*2*2(a1),a2
  1395.     move.l a2,a3
  1396.     lea 1540/4*2*2(a3),a4
  1397.     move.w #$8000,d7
  1398.     move.w #1540/4-1,d6
  1399.     bsr .routine
  1400.    
  1401.     lea quartsin512,a0
  1402.     lea sin512,a1
  1403.     lea 512/4*2*2(a1),a2
  1404.     move.l a2,a3
  1405.     lea 512/4*2*2(a3),a4
  1406.     move.w #512/4-1,d6
  1407.     ;bra .routine
  1408.    
  1409. .routine:
  1410. .loop1
  1411.     move.w (a0)+,d0
  1412.     move.w d0,d1
  1413.     add d7,d0
  1414.     move.w d0,(a1)+
  1415.     move.w d0,-(a2)
  1416.     move.w d7,d2
  1417.     sub.w d1,d2
  1418.    
  1419.     move.w d2,(a3)+
  1420.     move.w d2,-(a4)
  1421.     dbf d6,.loop1
  1422.     rts
  1423.    
  1424.    
  1425. prepsinAsinBsinC
  1426.     ;jsr preparequartersin
  1427.     moveq #0,d0
  1428.    
  1429.     lea sinsin1540,a0   ; sin512
  1430.     lea sinA,a1
  1431.     move.w #1539,d1
  1432. .cpy
  1433.     moveq #0,d0
  1434.     move.w (a0)+,d0
  1435.     add.w #32767,d0
  1436.     mulu #26,d0         16+6    ; diametre sur table 512
  1437.     swap d0
  1438.     move.b d0,(a1)+
  1439.     dbf d1,.cpy
  1440.    
  1441.     move.w #900-1,d1
  1442.     lea sinsin900,a0
  1443. ;       lea sinsin900,a4    ; cossin900
  1444.     lea sinB,a1
  1445.     ;   lea sinC,a2
  1446.     move.w #42-16+6+2,d7
  1447.     bsr mac1
  1448.  
  1449.     lea sinsinsin4000,a0
  1450.     lea sinC,a1
  1451.     move.w #4000-1,d1
  1452.     move.w #42+16+6+1,d7
  1453.     bsr mac1
  1454.  
  1455.     rts
  1456. mac1
  1457. .cpy2
  1458.     moveq #0,d0
  1459.     move.w (a0)+,d0
  1460.     add.w #32768,d0
  1461.     mulu d7,d0                      ; diametre sur table 1540
  1462.     swap d0
  1463.     move.b D0,(a1)+
  1464.     dbf d1,.cpy2
  1465.     rts
  1466.  
  1467. ;;createsintabspecial
  1468. ;;;; a0 ram
  1469. ;;;; a1 sinustable octet
  1470. ;;;; d1 nombre d'element de la table
  1471. ;;;; d0 = pas interne
  1472. initfx2
  1473.     lea ramsinus,a0
  1474.     lea sinA,a1
  1475.     move.w #1540,d1
  1476. _ad1
  1477.     move.w #9+4,d0
  1478.     ;move.l a0,sinrefA
  1479.     jsr createsintabspecial
  1480.     move.w #1540,d1
  1481. _ad2
  1482.     move.w #511-18-9+1,d0
  1483.     move.l a0,adrrefA
  1484.     jsr createbufferadresse
  1485.    
  1486.     lea sinB,a1
  1487.     move.w #900,d1
  1488. _ad3
  1489.     move.w #8*3,d0
  1490.     ;move.l a0,sinrefB
  1491.     jsr createsintabspecial
  1492.     move.w #900,d1
  1493. _ad4
  1494.     move.w #900-2*3,d0
  1495.     move.l a0,adrrefB
  1496.     jsr createbufferadresse
  1497.    
  1498.     lea sinC,a1
  1499.     move.w #4000,d1
  1500. _ad5
  1501.     move.w #16,d0
  1502.     move.l a0,sinrefC
  1503.     jsr createsintabspecial
  1504.     move.w #4000,d1
  1505. _ad6
  1506.     move.w #11,d0
  1507.     move.l a0,adrrefC
  1508.     jsr createbufferadresse
  1509.  
  1510.     move.l a0,d0        ; adresse de fin
  1511.     sub.l #ramsinus,d0
  1512.     lea maxi,a1
  1513.     move.l (a1),d1
  1514.     cmp.l d1,d0
  1515.     blt.s .tooo
  1516.     move.l d0,(a1)
  1517. .tooo  
  1518.  
  1519.  
  1520.     rts
  1521.     include 'PALETTE.S'
  1522.     TEXT
  1523. initallpalette
  1524.     lea palplasma,a0
  1525.     lea palbyte,a1
  1526.     jsr convclassicpalette
  1527.     lea palbyte,a0
  1528.     lea palram,a1
  1529.     moveq #16,d0
  1530.     jsr makemultipalette
  1531.     rts
  1532.    
  1533.  
  1534. palbyte ds.b 3*16
  1535.  
  1536. palram  ds.w 16*6
  1537.    
  1538. maxi    dc.l 0
  1539.  
  1540. ;  d0=+2
  1541. ; d1=+1
  1542. ;d2=-1
  1543. ;d3=-2
  1544. ;d4=10
  1545. ;d5à-10
  1546. ;d6 20
  1547. ;d7 -20
  1548.  
  1549.  
  1550. ;8+8
  1551.  
  1552.  
  1553.  
  1554.  
  1555.         DATA
  1556.  
  1557. quartsin1540
  1558.     dc.w 66,200,334,467,601,735,868,1002            ;66=132/2,+134,+134,+133,+134,134,134,133,134
  1559.     dc.w 1136,1269,1403,1536,1670,1803,1937,2070    ;134,133
  1560.     dc.w 2204,2337,2470,2604,2737,2870,3003,3136
  1561.     dc.w 3269,3402,3535,3668,3801,3934,4067,4199
  1562.     dc.w 4332,4464,4597,4729,4861,4993,5125,5257
  1563.     dc.w 5389,5521,5653,5784,5916,6047,6179,6310
  1564.     dc.w 6441,6572,6703,6834,6965,7095,7226,7356
  1565.     dc.w 7486,7616,7746,7876,8006,8135,8265,8394
  1566.     dc.w 8523,8652,8781,8910,9038,9167,9295,9423
  1567.     dc.w 9551,9679,9807,9934,10061,10189,10316,10442
  1568.     dc.w 10569,10695,10822,10948,11074,11199,11325,11450
  1569.     dc.w 11576,11701,11825,11950,12074,12198,12322,12446
  1570.     dc.w 12570,12693,12816,12939,13062,13184,13307,13429
  1571.     dc.w 13551,13672,13794,13915,14036,14156,14277,14397
  1572.     dc.w 14517,14637,14756,14875,14994,15113,15232,15350
  1573.     dc.w 15468,15586,15703,15820,15937,16054,16170,16286
  1574.     dc.w 16402,16518,16633,16748,16863,16978,17092,17206
  1575.     dc.w 17319,17433,17546,17658,17771,17883,17995,18106
  1576.     dc.w 18218,18329,18439,18550,18660,18770,18879,18988
  1577.     dc.w 19097,19205,19313,19421,19529,19636,19743,19849
  1578.     dc.w 19956,20061,20167,20272,20377,20482,20586,20690
  1579.     dc.w 20793,20896,20999,21102,21204,21305,21407,21508
  1580.     dc.w 21608,21709,21809,21908,22008,22106,22205,22303
  1581.     dc.w 22401,22498,22595,22692,22788,22884,22979,23075
  1582.     dc.w 23169,23264,23358,23451,23544,23637,23729,23821
  1583.     dc.w 23913,24004,24095,24185,24275,24365,24454,24543
  1584.     dc.w 24631,24719,24807,24894,24981,25067,25153,25238
  1585.     dc.w 25323,25408,25492,25576,25659,25742,25825,25907
  1586.     dc.w 25989,26070,26150,26231,26311,26390,26469,26548
  1587.     dc.w 26626,26704,26781,26858,26934,27010,27085,27160
  1588.     dc.w 27235,27309,27383,27456,27529,27601,27673,27744
  1589.     dc.w 27815,27885,27955,28025,28094,28163,28231,28298
  1590.     dc.w 28365,28432,28498,28564,28629,28694,28758,28822
  1591.     dc.w 28886,28948,29011,29073,29134,29195,29256,29316
  1592.     dc.w 29375,29434,29492,29550,29608,29665,29722,29778
  1593.     dc.w 29833,29888,29943,29997,30050,30103,30156,30208
  1594.     dc.w 30259,30310,30361,30411,30461,30510,30558,30606
  1595.     dc.w 30654,30701,30747,30793,30838,30883,30928,30972
  1596.     dc.w 31015,31058,31100,31142,31183,31224,31264,31304
  1597.     dc.w 31343,31382,31420,31458,31495,31532,31568,31603
  1598.     dc.w 31638,31673,31707,31740,31773,31806,31838,31869
  1599.     dc.w 31900,31930,31960,31989,32018,32046,32073,32101
  1600.     dc.w 32127,32153,32179,32204,32228,32252,32275,32298
  1601.     dc.w 32320,32342,32363,32384,32404,32423,32442,32461
  1602.     dc.w 32479,32496,32513,32529,32545,32560,32575,32589
  1603.     dc.w 32603,32616,32629,32641,32652,32663,32673,32683
  1604.     dc.w 32692,32701,32709,32717,32724,32730,32736,32742
  1605.     dc.w 32747,32751,32755,32758,32761,32763,32765,32766
  1606.     dc.w 32766
  1607.    
  1608. quartsin512
  1609.     dc.w 201,603,1005,1406,1808,2209,2610,3011
  1610.     dc.w 3411,3811,4210,4608,5006,5403,5799,6195
  1611.     dc.w 6589,6982,7375,7766,8156,8545,8932,9319
  1612.     dc.w 9703,10087,10469,10849,11227,11604,11980,12353
  1613.     dc.w 12724,13094,13462,13827,14191,14552,14911,15268
  1614.     dc.w 15623,15975,16325,16672,17017,17360,17699,18036
  1615.     dc.w 18371,18702,19031,19357,19680,20000,20317,20631
  1616.     dc.w 20942,21249,21554,21855,22153,22448,22739,23027
  1617.     dc.w 23311,23592,23869,24143,24413,24679,24942,25201
  1618.     dc.w 25456,25707,25954,26198,26437,26673,26905,27132
  1619.     dc.w 27355,27575,27790,28001,28208,28410,28608,28802
  1620.     dc.w 28992,29177,29358,29534,29706,29873,30036,30195
  1621.     dc.w 30349,30498,30643,30783,30918,31049,31175,31297
  1622.     dc.w 31413,31525,31633,31735,31833,31926,32014,32097
  1623.     dc.w 32176,32249,32318,32382,32441,32495,32544,32588
  1624.     dc.w 32628,32662,32692,32717,32736,32751,32761,32766
  1625.    
  1626.  
  1627. anglex4 dc.w 10*4,220*4,330*4
  1628. sound   incbin '0103_4.SND'
  1629.  
  1630. palplasma2  incbin 'toto2.pal'
  1631. palplasma   incbin 'toto4.pal'
  1632. ; toto2 s'optient de la sorte:
  1633.  
  1634. ; cut -b 3-35 ./PAL1.PI1 >toto2.pal
  1635. ; pal1.pi1 = fichier pi1
  1636. ; note toto2 a 2 octet de trop et on peut rien y faire
  1637. ; (un zero terminal ou un retour a la ligne suivant les option de  cut
  1638.  
  1639.  
  1640.  
  1641.     BSS
  1642.  
  1643. sin1540     ds.w 1540
  1644. sin512      ds.w 512
  1645. sinA        ds.b 1540
  1646. sinB        ds.b 1540 900
  1647. sinC        ds.b 4000 900
  1648. tabflag     ds.b 4000   ;1540
  1649. sinrefA     ds.l 1
  1650. sinrefB     ds.l 1
  1651. sinrefC     ds.l 1
  1652. adrrefA     ds.l 1
  1653. adrrefB     ds.l 1
  1654. adrrefC     ds.l 1
  1655. codegenere  ds.w 14*40+25+1     ; 1 = rts
  1656.             ds.w 90         ; pour etre sur de pas depasser :p
  1657.         ds.w 160*4
  1658. codegenmovem    ds.w 35*_NBlignes
  1659. zonevariable    ds.l 16
  1660. tempSinref  ds.l 3000+6000+12000
  1661. ptrscreen   ds.l 2
  1662. c2ptableptr ds.l 1
  1663. c2phalftone     ds.l 30
  1664. ramsinus
  1665.         ds.b $52620
  1666.         DS.B 337440
  1667. ;       ds.l 100000+22200   ; 128k is enough    deja pris, les sinref: 512*4 +1540*2*4=14368 octet
  1668.        
  1669.         ds.b 65536
  1670. c2ptable    ds.l 16384
  1671. ;       ds.l 16384
  1672. ;       ds.l 16384
  1673. ;       ds.l 16384      ; 256kilo
  1674. screens ds.l 8000
  1675.         ds.l 8000
  1676.         ds.l 16000
  1677.     DATA
  1678. tdata   include tblsin1.s
  1679.     include tbl1540.s
  1680.     include tbl4000.s
  1681.     BSS
  1682.  
  1683. cosbss900       ds.w 900
  1684. sinbss900       ds.w 900
  1685. ;cossinbss900       ds.w 900
  1686. sinsinbss900        ds.w 900
  1687. sinsinsinBSS4000        ds.w 4000
  1688.  
Add Comment
Please, Sign In to add comment