Advertisement
glokyfull

tres vieux source loader de fichier prg en incbin

Nov 16th, 2021
2,967
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;
  2. ; objectif:
  3. ; faire fonctionner n'importe quel fichier .prg sans planter
  4. ;
  5. ; "loader" version 0.001
  6. ; il est 4h du matin et je suis fiercu de vous presenter
  7. ; un truc mega cool qui analyse un executable
  8. ; et transforme tout ca pour que ca puisse s'executer
  9.  
  10.  
  11. start:
  12.     lea prg+1,a0
  13.     moveq #0,d3
  14.     move.b (a0)+,d3 ; saut relatif au branchement
  15.     move.l (a0)+,d0 ; taille section CODE
  16.     move.l (a0)+,d1 ; taille section DATA
  17.     move.l (a0)+,d2 ; taille section BSS
  18.     move.l (a0)+,d5 ; taille table des symboles
  19.  
  20. ; calcul endroit deplacement dans a2   
  21.     move.l d3,d4
  22.     addq.l #2,d4    ; d3+prg = depart section code
  23.     lea prg,a1
  24.     add.l d4,a1     ; on le stoque dans a1
  25.     add.l d0,d4     ;
  26.     add.l d1,d4
  27.     lea prg,a2
  28.     add.l d4,a2
  29.     move.l a2,a3    ; fin code
  30.     add.l d5,a2
  31.    
  32.     move.l a1,a0    ; a0 = code a modifier
  33.     move.l a1,d7    ; copie
  34.     move.l (a2)+,d0 ; 1er emplacement
  35.     add.l d0,a1
  36.     add.l d7,(a1)
  37.    
  38.     ; ensuite les deplacement sont code sur des octet
  39.     ; avec 1 = 254 + valeur octet suivant (recursif)(ex 1,1,9 = 254*2+9)
  40. loop:
  41.     moveq #0,d0
  42.     move.b (a2)+,d0
  43.     beq.s .finloop
  44.     cmp.b #1,d0
  45.     bne.s .dep8
  46. .dep16  move.l #254,d0
  47. .lp2:
  48.     moveq #0,d1
  49.     move.b (a2)+,d1
  50.     cmp.b #1,d1
  51.     bne.s .finlp2
  52.     add.l #254,d0
  53.     bra.s .lp2
  54. .finlp2 add.l d1,d0
  55. .dep8  
  56.     add.l d0,a1
  57.     add.l d7,(a1)
  58.  
  59.    
  60.     bra loop
  61. .finloop    move.l a3,a0    ; emplacement table symbole
  62.     moveq #0,d0
  63.     move.l #32000,d1
  64. gogo    move.l d0,(a0)+
  65.     dbra.w d0,gogo
  66.    
  67.            
  68.  
  69.     ; ici on peut rajouter des subtilit‚ genre
  70.     ; (sp) donne une adresse de structure
  71.     ; contenant par exemple: adresse ecran
  72.     ; ou la couleur du cheval blanc d'henri 4
  73.  
  74.  
  75. prg incbin "psy2.prg"
  76. mem:    ds.l 64000      ; 2 mega de memoire
  77.     ds.l 1000
  78.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement