============================================
DUMP-ROM.FD - (c) Daniel Coulom - Avril 2008
============================================
Utilitaires pour dumper les roms
- des ordinateurs THOMSON
- des cartouches MEMO5
- des cartouches MEMO7
- des controleurs
Chaque utilitaire fonctionne uniquement
pour les ordinateurs et les roms indiques.
Avant de lancer une extraction, verifiez
la place disponible sur la disquette, en
particulier pour la rom du TO9.
A defaut de lecteur de disquette, les
fichiers sont ecrits sur cassette.
Malgre le soin apporte a cette compilation,
des erreurs peuvent subsister. Merci de les
signaler a l'auteur: danielcoulom@gmail.com  


-----------------------------------------
MO5ROM.BAS
DUMP ROM MO5-MO5E
-----------------------------------------
10 PRINT"Sauvegarde ROM MO5-MO5E"
11 PRINT"Appuyez sur une touche..."
15 A$=INPUT$(1)
20 SAVEM"MO5ROM",&HC000,&HFFFF,&HC000


-----------------------------------------
MO6ROM.BAS
DUMP ROM MO5NR-MO6-PC128
-----------------------------------------
10 PRINT"Sauvegarde ROM MO6-MO5NR-PC128"
11 PRINT"Appuyez sur une touche..."
15 A$=INPUT$(1):CLEAR,&H5EFF:A=&H5EFF
20 P$="B6A7C0F6A7E4340684DFB7A7C0C4EF"
21 P$=P$+"F7A7DD8E0000108EA000EC83EDA3"
22 P$=P$+"8CC00026F73506B7A7C0F7A7DD39"
30 FORI=1TOLEN(P$)STEP2:A=A+1
40 POKEA,VAL("&H"+MID$(P$,I,2)):NEXT
50 A=&H6000:B=&H9FFF:X=&H5F00
51 EXECX:SCREEN,,6:SAVEM"MO6ROM0",A,B,A
60 POKE&H5F08,&H8A:POKE&H5F09,&H20
61 EXECX:SCREEN,,6:SAVEM"MO6ROM1",A,B,A
70 POKE&H5F0D,&HCA:POKE&H5F0E,&H10
71 POKE&H5F13,&HF0:POKE&H5F1E,&HB0
72 EXECX:SCREEN,,6:SAVEM"MO6ROM3",A,B,A
80 POKE&H5F08,&H84:POKE&H5F09,&HDF
81 EXECX:SCREEN,,6:SAVEM"MO6ROM2",A,B,A

5F00 B6A7C0     LDA    $A7C0               
5F03 F6A7E4     LDB    $A7E4               
5F06 3406       PSHS   B,A                 
5F08 84DF       ANDA   #$DF                
5F0A B7A7C0     STA    $A7C0               
5F0D C4EF       ANDB   #$EF                
5F0F F7A7DD     STB    $A7DD               
5F12 8E0000     LDX    #$0000              
5F15 108EA000   LDY    #$A000              
5F19 EC83       LDD    ,--X                
5F1B EDA3       STD    ,--Y                
5F1D 8CC000     CMPX   #$C000              
5F20 26F7       BNE    $5F19               
5F22 3506       PULS   A,B                 
5F24 B7A7C0     STA    $A7C0               
5F27 F7A7DD     STB    $A7DD               
5F2A 39         RTS                        


-----------------------------------------
TO7ROM.BAS
DUMP ROM T9000-TO7-TO7/70
-----------------------------------------
10 PRINT"Sauvegarde ROM TO7-TO7/70"
11 PRINT"Appuyez sur une touche..."
15 A$=INPUT$(1)
20 SAVEM"TO7ROM",&HE800,&HFFFF,&HE800


-----------------------------------------
TO8ROM.BAS
DUMP ROM TO8-TO8D-TO9+
-----------------------------------------
10 PRINT"Sauvegarde ROM TO8-TO8D-TO9+"
11 PRINT"Appuyez sur une touche..."
15 A$=INPUT$(1):CLEAR,&H9EFF:A=&H9EFF
20 P$="B70000B6E7C3340284EFB7E7C3"
21 P$=P$+"8E4000108EE000EC83EDA38C"
22 P$=P$+"000026F73502B7E7C3B7000139"
30 FORI=1TOLEN(P$)STEP2:A=A+1
40 POKEA,VAL("&H"+MID$(P$,I,2)):NEXT
50 A=&HA000:B=&HDFFF:C=&HC000:X=&H9F00
51 EXECX:SAVEM"TO8ROMB0",A,B,A
60 POKE&H9F02,&H01
61 EXECX:SAVEM"TO8ROMB1",A,B,A
70 POKE&H9F02,&H02
71 EXECX:SAVEM"TO8ROMB2",A,B,A
80 POKE&H9F02,&H03
81 EXECX:SAVEM"TO8ROMB3",A,B,A
90 POKE&H9F0E,&H00:POKE&H9F19,&HE0
91 EXECX:SAVEM"TO8ROMS0",C,B,C
93 POKE&H9F08,&H8A:POKE&H9F09,&H10
94 EXECX:SAVEM"TO8ROMS1",C,B,C

9F00 B70000     STA    $0000               
9F03 B6E7C3     LDA    $E7C3               
9F06 3402       PSHS   A                   
9F08 84EF       ANDA   #$EF                
9F0A B7E7C3     STA    $E7C3               
9F0D 8E4000     LDX    #$4000              
9F10 108EE000   LDY    #$E000              
9F14 EC83       LDD    ,--X                
9F16 EDA3       STD    ,--Y                
9F18 8C0000     CMPX   #$0000              
9F1B 26F7       BNE    $9F14               
9F1D 3502       PULS   A                   
9F1F B7E7C3     STA    $E7C3               
9F22 B70001     STA    $0001               
9F25 39         RTS                        


-----------------------------------------
TO9ROM.BAS
DUMP ROM TO9
-----------------------------------------
10 PRINT"Sauvegarde ROM TO9"
11 PRINT"Appuyez sur une touche..."
15 A$=INPUT$(1):CLEAR,&H7FFF:A=&H7FFF
20 P$="B6E7C3340284CF8A00B7E7C3B70000"
21 P$=P$+"8E4000108EE000EC83EDA38C"
22 P$=P$+"000026F73502B7E7C3B7000039"
30 FORI=1TOLEN(P$)STEP2:A=A+1
40 POKEA,VAL("&H"+MID$(P$,I,2)):NEXT
50 A=&HA000:B=&HDFFF:E=&HE000:X=&H8000
51 SAVEM"TO9ROMB0",0,&H3FFF,0
55 POKE&H8008,0:POKE&H800E,1
56 EXECX:SAVEM"TO9ROMB1",A,B,A
60 POKE&H8008,0:POKE&H800E,2
61 EXECX:SAVEM"TO9ROMB2",A,B,A
65 POKE&H8008,0:POKE&H800E,3
66 EXECX:SAVEM"TO9ROMB3",A,B,A
70 POKE&H8008,16:POKE&H800E,0
71 EXECX:SAVEM"TO9ROMF0",A,B,A
75 POKE&H8008,16:POKE&H800E,1
76 EXECX:SAVEM"TO9ROMF1",A,B,A
80 POKE&H8008,32:POKE&H800E,0
81 EXECX:SAVEM"TO9ROMP0",A,B,A
85 POKE&H8008,32:POKE&H800E,1
86 EXECX:SAVEM"TO9ROMP1",A,B,A
90 SAVEM"TO9ROMS0",E,&HFFFF,E

8000 B6E7C3     LDA    $E7C3               
8003 3402       PSHS   A                   
8005 84CF       ANDA   #$CF                
8007 8A00       ORA    #$00                
8009 B7E7C3     STA    $E7C3               
800C B70000     STA    $0000               
800F 8E4000     LDX    #$4000              
8012 108EE000   LDY    #$E000              
8016 EC83       LDD    ,--X                
8018 EDA3       STD    ,--Y                
801A 8C0000     CMPX   #$0000              
801D 26F7       BNE    $8016               
801F 3502       PULS   A                   
8021 B7E7C3     STA    $E7C3               
8024 B70000     STA    $0000               
8027 39         RTS                        


-----------------------------------------
MO6MEMO5.BAS
DUMP ROM MEMO5 sur un MO6-MO5NR-PC128
-----------------------------------------
10 PRINT"Copie banques MEMO5 sur MO6"
11 PRINT"Tapez le nombre de banques ";
12 PRINT"(1 a 4)"
13 PRINT"ou une autre touche ";
14 PRINT"pour sortir..."
15 CLEAR,&H4FFF:A=&H4FFF
17 A$=INPUT$(1)
18 IF(A$<"1")OR(A$>"4")THENEND
20 P$="B6A7E4340284DFB7A7DDB6BFFC"
21 P$=P$+"8EB000108E6000EC81EDA1"
22 P$=P$+"8CBFFC260430043124"
23 P$=P$+"8CF00026EE3502B7A7DD39"
30 FORI=1TOLEN(P$)STEP2
31 A=A+1:POKEA,VAL("&H"+MID$(P$,I,2))
32 NEXT:X=&H5000:A=&H6000:B=&H9FFF
40 IFA$<"1"THENEND
42 EXECX:SCREEN,,6:SAVEM"MEMO5B0",A,B,A
50 IFA$<"2"THENEND
51 POKE&H500C,&HFD
52 EXECX:SCREEN,,6:SAVEM"MEMO5B1",A,B,A
60 IFA$<"3"THENEND
61 POKE&H500C,&HFE
62 EXECX:SCREEN,,6:SAVEM"MEMO5B2",A,B,A
70 IFA$<"4"THENEND
71 POKE&H500C,&HFF
72 EXECX:SCREEN,,6:SAVEM"MEMO5B3",A,B,A

5000 B6A7E4     LDA    $A7E4               
5003 3402       PSHS   A                   
5005 84DF       ANDA   #$DF                
5007 B7A7DD     STA    $A7DD               
500A B6BFFC     LDA    $BFFC               
500D 8EB000     LDX    #$B000              
5010 108E6000   LDY    #$6000              
5014 EC81       LDD    ,X++                
5016 EDA1       STD    ,Y++                
5018 8CBFFC     CMPX   #$BFFC              
501B 2604       BNE    $5021               
501D 3004       LEAX   $04,X               
501F 3124       LEAY   $04,Y               
5021 8CF000     CMPX   #$F000              
5024 26EE       BNE    $5014               
5026 3502       PULS   A                   
5028 B7A7DD     STA    $A7DD               
502B 39         RTS                        


-----------------------------------------
TO8MEMO7.BAS
DUMP ROM MEMO7 sur un T08-TO8D-TO9+
-----------------------------------------
10 PRINT"Copie banques MEMO7 sur TO8"
11 PRINT"Tapez le nombre de banques ";
12 PRINT"(1 a 4)"
13 PRINT"ou une autre touche ";
14 PRINT"pour sortir..."
15 CLEAR,&H8FFF:A=&H8FFF
17 A$=INPUT$(1)
18 IF(A$<"1")OR(A$>"4")THENEND
20 P$="B6E7C3340284FBB7E7C3B70000"
21 P$=P$+"8E4000108EE000EC83EDA3"
22 P$=P$+"8C000026F73502B7E7C3B7000039"
30 FORI=1TOLEN(P$)STEP2
31 A=A+1:POKEA,VAL("&H"+MID$(P$,I,2))
32 NEXT:X=&H9000:A=&HA000:B=&HDFFF
40 IFA$<"1"THENEND
42 EXECX:SAVEM"MEMO7B0",A,B,A
50 IFA$<"2"THENEND
51 POKE&H900C,1
52 EXECX:SAVEM"MEMO7B1",A,B,A
60 IFA$<"3"THENEND
61 POKE&H900C,2
62 EXECX:SAVEM"MEMO7B2",A,B,A
70 IFA$<"4"THENEND
71 POKE&H900C,3
72 EXECX:SAVEM"MEMO7B3",A,B,A

9000 B6E7C3     LDA    $E7C3               
9003 3402       PSHS   A                   
9005 84FB       ANDA   #$FB                
9007 B7E7C3     STA    $E7C3               
900A B70000     STA    $0000
900D 8E4000     LDX    #$4000              
9010 108EE000   LDY    #$E000              
9014 EC83       LDD    ,--X                
9016 EDA3       STD    ,--Y                
9018 8C0000     CMPX   #$0000              
901B 26F7       BNE    $9014               
901D 3502       PULS   A                   
901F B7E7C3     STA    $E7C3               
9022 B70000     STA    $0000
9025 39         RTS                        


-----------------------------------------
TO9MEMO7.BAS
DUMP ROM MEMO7 sur un T09
-----------------------------------------
10 PRINT"Copie banques MEMO7 sur TO9"
11 PRINT"Tapez le nombre de banques ";
12 PRINT"(1 a 4)"
13 PRINT"ou une autre touche ";
14 PRINT"pour sortir..."
15 CLEAR,&H8FFF:A=&H8FFF
17 A$=INPUT$(1)
18 IF(A$<"1")OR(A$>"4")THENEND
20 P$="B6E7C334028A30B7E7C3B70000"
21 P$=P$+"8E4000108EE000EC83EDA3"
22 P$=P$+"8C000026F73502B7E7C3B7000039"
30 FORI=1TOLEN(P$)STEP2
31 A=A+1:POKEA,VAL("&H"+MID$(P$,I,2))
32 NEXT:X=&H9000:A=&HA000:B=&HDFFF
40 IFA$<"1"THENEND
42 EXECX:SAVEM"MEMO7B0",A,B,A
50 IFA$<"2"THENEND
51 POKE&H900C,1
52 EXECX:SAVEM"MEMO7B1",A,B,A
60 IFA$<"3"THENEND
61 POKE&H900C,2
62 EXECX:SAVEM"MEMO7B2",A,B,A
70 IFA$<"4"THENEND
71 POKE&H900C,3
72 EXECX:SAVEM"MEMO7B3",A,B,A

9000 B6E7C3     LDA    $E7C3               
9003 3402       PSHS   A                   
9005 8A30       ORA    #$30                
9007 B7E7C3     STA    $E7C3               
900A B70000     STA    $0000               
900D 8E4000     LDX    #$4000              
9010 108EE000   LDY    #$E000              
9014 EC83       LDD    ,--X                
9016 EDA3       STD    ,--Y                
9018 8C0000     CMPX   #$0000              
901B 26F7       BNE    $9014               
901D 3502       PULS   A                   
901F B7E7C3     STA    $E7C3               
9022 B70000     STA    $0000               
9025 39         RTS                        


-----------------------------------------
CD90351.BAS
DUMP ROM CD90-351 sur MO5,MO6,TO7,TO7/70
-----------------------------------------
10 PRINT"Sauvegarde ROM CD90-351"
11 PRINT"Tapez 1 SUR MO5, MO6, PC128"
12 PRINT"Tapez 2 SUR TO7, TO770"
13 PRINT"Autre touche pour sortir..."
15 A$=INPUT$(1)
16 IF(A$<"1")OR(A$>"2")THENEND
17 IFA$="1"THENA=&HA000
18 IFA$="2"THENA=&HE000
19 B=A+&H7BF:C=A+&H7D8
20 POKEC,0:SAVEM"CD351B0",A,B,A
30 POKEC,1:SAVEM"CD351B1",A,B,A
40 POKEC,2:SAVEM"CD351B2",A,B,A
50 POKEC,3:SAVEM"CD351B3",A,B,A


-----------------------------------------
CD90640.BAS
DUMP ROM CD90-640 sur MO5,MO6,TO7,TO7/70
-----------------------------------------
10 PRINT"Sauvegarde ROM CD90-640"
11 PRINT"Tapez 1 SUR MO5, MO6, PC128"
12 PRINT"Tapez 2 SUR TO7, TO770"
13 PRINT"Autre touche pour sortir..."
15 A$=INPUT$(1)
16 IF(A$<"1")OR(A$>"2")THENEND
17 IFA$="1"THENA=&HA000
18 IFA$="2"THENA=&HE000
20 B=A+&H7BF:SAVEM"CD90640",A,B,A


-----------------------------------------
CQ90028.BAS
DUMP ROM CQ90-028 sur MO5,MO6,TO7,TO7/70
-----------------------------------------
10 PRINT"Sauvegarde ROM CD90-640"
11 PRINT"Tapez 1 SUR MO5, MO6, PC128"
12 PRINT"Tapez 2 SUR TO7, TO770"
13 PRINT"Autre touche pour sortir..."
15 A$=INPUT$(1)
16 IF(A$<"1")OR(A$>"2")THENEND
17 IFA$="1"THENA=&HA000
18 IFA$="2"THENA=&HE000
20 B=A+&H7BF:SAVEM"CQ90028",A,B,A

