dos=1
bios=13
xbios=14
esc=$1b
save:	macro
	movem.l d0-d7/a0-a6,-(sp)
	endm

load:	macro
	movem.l (sp)+,d0-d7/a0-a6
	endm

appel:	macro			* APPEL UNE TRAPE 
	move.w #\2,-(sp)
	trap #\1
	add.l #\3,sp
	endm

wait:	macro
	appel dos,7,2
	endm

hex:	macro		* exemple : hex a4 
	save
	move.l #28,d1
	ifne '\2','w'
	move.l #12,d1
	endc
	move.l \1,d0
	lsr.l d1,d0
	and.l #$f,d0
	cmp.b #9,d0
	dc.w $6e08			*bgt.s lettre
	add.b #$30,d0
	dc.l $60000006		*bra fin_conv
	add.b #$37,d0		*lettre
				*fin_conv
	save
	move.w d0,-(sp)
	appel dos,2,4
	load
	subq #4,d1
	dc.w $6cca			*bge aff
	load
	endm

init:	macro
	move.l a7,a5
	move.l 4(a5),a5
	move.l $c(a5),d0
	add.l $14(a5),d0
	add.l $1c(a5),d0
	add.l #$250,d0
	move.l d0,d1
	add.l a5,d1
	and.l #-2,d1
	sub.l #16,d1
	move.l d1,a7
	move.l d0,-(sp)
	move.l a5,-(sp)
	clr.w -(sp)
	appel dos,$4a,12
	endm

 section TEXT
start_trk=2			; 2Šme piste
start_sec=1			; 1er secteur
side=0

sec_trk=10			; nb sec / trk
byte_sec=512		; nb octets / secteur
nb_trk=80			; de 1 a 82

	init

	move.l #400000,-(sp)	; reserve memoire
	appel dos,$48,6
	move.l d0,ad_libre
	ble fin
	
	pea texto1
	appel dos,9,6
	wait

	clr.w -(sp)
	pea filename(pc)
	appel dos,61,8	; ouvre le fichier
	tst d0		; test validit‚
	bpl.s ouvert_ok	; le fichier est ouvert correctement ?
	bra fin		; plante : casse toi
ouvert_ok:	move.w d0,d7	; d7 = handle
	move.l ad_libre,-(sp)	; adresse de chargement
	move.l #400000,-(sp)	; nb octets
	move.w d7,-(sp)	; handle
	appel dos,63,12	; lire octets
	move.l d0,longeur	; nb eff. lus
	move.w d7,-(sp)
	appel dos,62,4	; ferme fichier

	move.l ad_libre,fin_include
	move.l longeur,d0
	add.l d0,fin_include

	pea texto3
	appel dos,9,6

	move.l ad_libre,a0
crypt:	eor.l #$21041992,(a0)+
	cmp.l fin_include,a0
	blt.s crypt

	pea texto2
	appel dos,9,6
	wait

*************
	move #start_trk,d1
	move #start_sec,d0
	move.l ad_libre,a0

sectors:	jsr write_sec(pc)

	add.l #byte_sec,a0
	cmp.l fin_include,a0
	bge.s fin

	addq #1,d0
	cmp #sec_trk+1,d0
	bne.s sectors
	moveq #1,d0
	addq #1,d1
	cmp #nb_trk,d1	; car 0 a 81
	bne.s sectors
	
	pea text2(pc)
	appel dos,9,6

fin:	lea pf(pc),a1	; piste fin
	and.l #$ff,d1
	divu #10,d1
	add.b d1,(a1)
	swap d1
	add.b d1,1(a1)

	lea sf(pc),a1	; secteur fin
	and.l #$ff,d0
	divu #10,d0
	add.b d0,(a1)
	swap d0
	add.b d0,1(a1)

	move #start_trk,d1
	and.l #$ff,d1
	lea pd(pc),a1	; piste debut
	divu #10,d1
	add.b d1,(a1)
	swap d1
	add.b d1,1(a1)

	move #start_sec,d0
	and.l #$ff,d0
	lea sd(pc),a1	; secteur debut
	divu #10,d0
	add.b d0,(a1)
	swap d0
	add.b d0,1(a1)

	pea info(pc)
	appel dos,9,6
	move.l longeur,a0
	hex a0
	pea info2(pc)
	appel dos,9,6

	wait
	appel dos,0,2

device=0			; 1 pour B:
write_sec:	save
	move.w #1,-(sp)
	move.w #side,-(sp)
	move.w d1,-(sp)
	move.w d0,-(sp)	; secteur
	move.w #device,-(sp)
	clr.l -(sp)
	move.l a0,-(sp)
	appel xbios,9,20
	tst d0
	bmi.s w_error
	load
	rts

w_error:	add.l #15*4+4,sp
	pea text1(pc)
	appel dos,9,6
	bra fin
 section DATA
text1:	dc.b "erreur d'ecriture",0
text2:	dc.b "pas assaz de place : fin Disk",0

info:	dc.b esc,'E','Fichier Inclus ... Taille : ',0
info2:	dc.b esc,'Y',34,32,"De la piste : "
pd:	dc.b "00  secteur  "
sd:	dc.b "00"
	dc.b esc,'Y',35,32,"Jusqu'a la piste : "
pf:	dc.b "00  secteur  "
sf:	dc.b "00 inclus.",0

filename:	dc.b 'B:\MOC.BIN',0
texto1:	dc.b 'Inserez MOC.BIN en B:',0
texto2:	dc.b 'Inserez MOC GAME DISK en A:',0
texto3:	dc.b 'Crypting...',0
 BSS
ad_libre:	ds.l 1
longeur:	ds.l 1
fin_include:ds.l 1
 END