Advertisement
glokyfull

galere dans l'aburdie de l'infinitude du dump ay

Sep 23rd, 2024
261
0
109 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2.         TEXT
  3. pack
  4.     lea big_buffer,a0
  5.     lea eordata,a3
  6.     lea datapack,a2
  7.     move.w #$7F7F,(a3)+
  8.     move.w #13,d7
  9.     move.l a0,a1
  10. .bcl
  11.     move.b (a1)+,(a2)+      ; le premier on change tout les registres
  12.     dbf d7,.bcl
  13.     rts
  14.  
  15. pack1   lea big_buffer,a0
  16.     lea 14(a0),a1
  17.     bra.s .000
  18.  
  19. pack2   lea big_buffer,a1
  20.     lea 14(a1),a0
  21.  
  22. .000    move.l #0,d6                 nbvblzik-1-1,d6
  23.  
  24. looop:
  25.     move #0,d2
  26.     move.w #$1,d3 ; bit 0
  27. .loop
  28.     move.b (a0)+,d0
  29.     move.b (a1)+,d1
  30.     cmp.b d0,d1
  31.     beq.s .skip
  32.     move.b d1,(a2)+                 ;d0
  33.     or d3,d2
  34. .skip
  35.     add d3,d3
  36.     cmp.b #$80,d3           ; bit 7 ? non on a de bit0 a bit6 seulemeent
  37.     bne.s .loop
  38. .trop
  39.    
  40.     move.b d2,(a3)+  ; eor liste
  41.  
  42.  
  43.     move.w #$1,d3
  44.     moveq #0,d2
  45. .loop2             
  46.     move.b (a0)+,d0
  47.     move.b (a1)+,d1
  48.     cmp.b d0,d1
  49.     beq.s .skip2
  50.     move.b d1,(a2)+
  51.     or.b d3,d2
  52. .skip2
  53.     add d3,d3
  54.     cmp.b #$80,d3
  55.     bne.s .loop2
  56.    
  57.     move.b d2,(a3)+
  58.    
  59.     ;dbf d6,looop
  60.  
  61.     ;move.l a2,d0
  62.     ;sub.l #datapack,d0
  63.     ;move.l a3,d1
  64.     ;sub.l #eorliste,d1
  65.    
  66.     rts
  67.  
  68.  
  69. makecodegen
  70.     lea listeptrcodegen,a0
  71.     lea codegenbss,a1
  72.    
  73.     moveq #0,d0
  74.  
  75. ; 1er quartet
  76.    
  77.     moveq #0,d0
  78. .bcl
  79.     move.l a1,(a0)+         ; stoque l'adresse de depart
  80.     moveq #1,d1
  81.     moveq #0,d3
  82. .bcl0
  83.     move.w d0,d2
  84.     and.w d1,d2
  85.     tst.w d2
  86.     beq.s .skip
  87.     bsr copymove
  88. .skip
  89.     add.w d1,d1
  90.     addq.w #1,d3
  91.     and.w #3,d3         ; on test 4 bit a chaque fois pour faire un code genere
  92.     bne.s .bcl0
  93.    
  94.     move.w #RTSJMP,(a1)+
  95.    
  96.     addq.w #1,d0
  97.     and.w #15,d0
  98.     bne.s .bcl
  99.    
  100. ; 2iem quartet    4 5 6  
  101.     moveq #0,d0
  102. .bclbcl
  103.     move.l a1,(a0)+
  104.     moveq #1,d1
  105.     moveq #4,d3
  106. .bcl1
  107.     move.w d0,d2
  108.     and.w d1,d2
  109.     tst.w d2
  110.     beq.s .skip2
  111.     bsr copymove
  112. .skip2
  113.     add d1,d1
  114.     addq.w #1,d3
  115.     cmp.w #7,d3
  116.     blt.s .bcl1
  117.    
  118.     move.w #RTSJMP2,(a1)+
  119.     addq.w #1,d0
  120.     and.w #7,d0
  121.     bne.s .bclbcl
  122.    
  123. ; 3iem quartet  7 8 9 10   11 12 13
  124. quartet3   
  125.         moveq #0,d0
  126. .bclbcl
  127.     move.l a1,(a0)+
  128.     moveq #1,d1
  129.     moveq #7,d3
  130. .bcl1
  131.     move.w d0,d2
  132.     and.w d1,d2
  133.     tst.w d2
  134.     beq.s .skip2
  135.     bsr copymove
  136. .skip2
  137.     add d1,d1
  138.     addq.w #1,d3
  139.     cmp.w #10,d3
  140.     ble.s .bcl1
  141.    
  142.     move.w #RTSJMP,(a1)+
  143.     addq.w #1,d0
  144.     and.w #15,d0
  145.     bne.s .bclbcl
  146.    
  147. quartet4        ; 11 12 13
  148.     moveq #0,d0
  149. .bcl
  150.     move.l a1,(a0)+
  151.     moveq #1,d1
  152.     moveq #11,d7
  153. .bcl1
  154.     move.w d0,d2
  155.     and.w d1,d2
  156.     tst.w d2
  157.     beq.s .skip
  158.     bsr copymove
  159. .skip
  160.     add d1,d1
  161.     addq.w #1,d3
  162.     cmp.w #13,d3
  163.     blt.s .bcl1
  164.    
  165.     ; cas 13
  166.     move.w d0,d2
  167.     and.w d1,d2
  168.     tst.w d2
  169.     beq.s .skip2
  170.     bsr copymove2
  171. .skip2
  172.    
  173.      move.w #RTSJMP2,(a1)+
  174.      addq.W #1,d0
  175.      and.w #7,d0
  176.      bne.s .bcl
  177.    
  178.     ; 16 +8 + 16 + 8 code genere normalement
  179.  
  180.  
  181.     lea listeptrcodegen,a0
  182.     lea 16*4(a0),a1
  183.     lea 8*4(a1),a2
  184.     lea 16*4(a2),a3
  185.    
  186.     lea lut256adr1,a4
  187.     moveq #7,d6
  188. .loop0
  189.     move.l (a1)+,d0     ; poid fort premier octet
  190.     moveq #15,d7
  191.     move.l a0,a5
  192. .loop1
  193.     :move.l d0,(a4)+
  194.     move.l (a5)+,(a4)+
  195.     move.l d0,(a4)+
  196.     dbf d7,.loop1
  197.     dbf d6,.loop0
  198.  
  199.     lea lut256adr2,a4
  200.     moveq #7,d6
  201. .loop2
  202.     move.l (a3)+,d0
  203.     moveq #15,d7
  204.     move.l a2,a5
  205. .loop3
  206.     move.l (a5)+,(a4)+
  207.     move.l d0,(a4)+
  208.     dbf d7,.loop3
  209.     dbf d6,.loop2
  210.  
  211.     ; table lut256adr1 et lut256adr2 fait
  212.  
  213.     rts
  214.    
  215.    
  216.    
  217. copymove
  218.     lea code1,a2
  219.     move.w (a2)+,(a1)+
  220.     move.w d3,(a1)+
  221.     move.w #$8800,(a1)+
  222.     addq.l #4,a2
  223.     move.w (a2)+,(a1)+
  224.     move.w #$8802,(a1)+
  225.     rts
  226.    
  227. copymove2
  228.     lea code2,a2
  229.     move.l (a2)+,(a1)+
  230.     move.l (a2)+,(a1)+
  231.     move.l (a2)+,(a1)+
  232.     move.w (a2)+,(a1)+
  233.     rts
  234.  
  235. code1
  236.     move.b #0,$ffff8800.w
  237.     move.b (a0)+,$ffff8802.w
  238.    
  239. code2
  240.     move.b (a0)+,d0     2
  241.     beq.s .1            2
  242.     move.b #13,AY       2 2 2
  243.     move.b d0,AY2       2 2
  244. .1
  245. code3
  246.  
  247. waitmyvbl
  248.     move.w d0,-(sp)
  249.     move.w $468.w,d0
  250. .1  cmp.w $468.w,d0
  251.     beq.S .1
  252.     move.w (sp)+,d0
  253.     rts
  254.    
  255. wait100scanline
  256.     move.w d0,-(sp)
  257.     move.w #30,d0
  258. .waitnop
  259.     rept 128-10
  260.      nop
  261.     endr
  262.     dbf d0,.waitnop
  263.     move.w (sp)+,d0
  264.     rts
  265.  
  266. replayZIK
  267.     lea ptreordata,a6
  268.     move.l (a6)+,a2         ; eordata
  269.     move.l (a6)+,a0         ; datapack
  270.                        
  271.     lea lut256adr1,a1
  272.  
  273.     moveq #0,d1
  274.     move.b (a2)+,d1
  275.     lsl #3,d1
  276.     move.l a1,a3
  277.     add d1,a3
  278.     move.l (a3)+,a4
  279.     move.l (a3)+,a5
  280.     lea suite(pc),a6
  281.     jmp (a4)    ; --> JMPRTS  = jmp (a5)
  282.                 ; --> JMPRTS2 = jmp (a6) = adresse de retour
  283. suite              
  284.     move.b (a0)+,d1
  285.     add d1,d1
  286.     add d1,d1
  287.     add d1,d1
  288.     lea 128*2*4(a1),a1
  289.     move.l a1,a2
  290.     add d1,a2
  291.     move.l (a2)+,a4
  292.     move.l (a2)+,a5
  293.     lea suite2(pc),a6
  294.     jmp (a4)
  295. suite2
  296.     rts
  297. ptreordata  dc.l eordata
  298.             dc.l datapack  
  299.             dc.w 0              ; timer
  300.    
  301.  
  302. lut256adr1  ds.l 256   (tuple)
  303. lut256adr2 ds.l 256
  304.     ; d7 =%xxxxxxx0
  305.             BSS
  306. listeptrcodegen ds.l 16+8+16+8
  307.     ; premier 16 adresses: from 0 to 15 quartet de poid faible
  308.     ;          8 adresses: from 0 to 7  quartet de poid fort
  309.     ;         16 adresses: from 0 to 15 quartet du deuxieme octet de poid faible
  310.     ;          8 adresse : from 0 to 7 quartet de poid fort
  311.  
  312.  ; 128 paire d'adresse a repartir  quartet de poid fort, puis quartet de poid faible du premier octet lu               
  313.  ;  0 16x 1 16x 2 16x ... 7 16x  et les 16x quartet de poid faible
  314.  ; 128 paire d'adresse a repartir , quartet de poid fort puis quartet de poid faible du deuxieme octet lu
  315.  
  316. datapack    ds.b 14*nbvblzik
  317.             even
  318. eordata    ds.w nbvblzik  ; ancienement eorliste
  319. codegenbss  ds.w 9000
  320.  
  321.                            
  322.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement