glokyfull

c2plas7b.s

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