glokyfull

c2plas7b.s version sans zik

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