Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;
- ; objectif:
- ; faire fonctionner n'importe quel fichier .prg sans planter
- ;
- ; "loader" version 0.001
- ; il est 4h du matin et je suis fiercu de vous presenter
- ; un truc mega cool qui analyse un executable
- ; et transforme tout ca pour que ca puisse s'executer
- start:
- lea prg+1,a0
- moveq #0,d3
- move.b (a0)+,d3 ; saut relatif au branchement
- move.l (a0)+,d0 ; taille section CODE
- move.l (a0)+,d1 ; taille section DATA
- move.l (a0)+,d2 ; taille section BSS
- move.l (a0)+,d5 ; taille table des symboles
- ; calcul endroit deplacement dans a2
- move.l d3,d4
- addq.l #2,d4 ; d3+prg = depart section code
- lea prg,a1
- add.l d4,a1 ; on le stoque dans a1
- add.l d0,d4 ;
- add.l d1,d4
- lea prg,a2
- add.l d4,a2
- move.l a2,a3 ; fin code
- add.l d5,a2
- move.l a1,a0 ; a0 = code a modifier
- move.l a1,d7 ; copie
- move.l (a2)+,d0 ; 1er emplacement
- add.l d0,a1
- add.l d7,(a1)
- ; ensuite les deplacement sont code sur des octet
- ; avec 1 = 254 + valeur octet suivant (recursif)(ex 1,1,9 = 254*2+9)
- loop:
- moveq #0,d0
- move.b (a2)+,d0
- beq.s .finloop
- cmp.b #1,d0
- bne.s .dep8
- .dep16 move.l #254,d0
- .lp2:
- moveq #0,d1
- move.b (a2)+,d1
- cmp.b #1,d1
- bne.s .finlp2
- add.l #254,d0
- bra.s .lp2
- .finlp2 add.l d1,d0
- .dep8
- add.l d0,a1
- add.l d7,(a1)
- bra loop
- .finloop move.l a3,a0 ; emplacement table symbole
- moveq #0,d0
- move.l #32000,d1
- gogo move.l d0,(a0)+
- dbra.w d0,gogo
- ; ici on peut rajouter des subtilit genre
- ; (sp) donne une adresse de structure
- ; contenant par exemple: adresse ecran
- ; ou la couleur du cheval blanc d'henri 4
- prg incbin "psy2.prg"
- mem: ds.l 64000 ; 2 mega de memoire
- ds.l 1000
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement