Amstrad PlusDécouverte de la gamme Old et Plus des Cpc d'Amstrad.
Sujet précédent :: Sujet suivant |
Auteur |
Message |
Ast Administrateur
Hors ligne
Inscrit le: 05 Sep 2014 Messages: 3 169 Point(s): 609 Moyenne de points: 0,19
|
Posté le: Mar 9 Jan - 22:18 (2018) Sujet du message: *****Loader universel (Load & Save) |
|
|
Bonjour,
Travaillant en équipe avec Chany afin de réaliser un loader universel qui permet de tout lire aussi bien sur drive a ou b, que sur X-Mass, j'ai décidé de vous partager le code. Si l'idée d'être compatible avec la x-Mass de TotO vous venait, sachez que le code a été testé et qu'il est 100% compatible avec la x-Mass, que ce soit avec ACMEdos ou iMPdos.
Voici donc, le fruit de ma réflexion.
Code: | ORG &A500 ENT $ ; ; bcd4 ; in : hl=rsx name ; out : c=rom number ; : hl=adresse de la rsx dans la rom ; ; ; LD HL,(&BE7D) LD A,(HL) PUSH AF ; recup numero de lecteur CP 3 CALL Z,foundrsx ; si 3 cherche la Rsx "ùX" PUSH BC ; sauve numéro de rom PUSH HL ; sauve adresse ou sauter dans la rom ; DI LD BC,&7F88+2 ; mode 2 - Lower Rom On | Upper Rom Off OUT (C),C EXX CALL &44 ; réinit la zone 0-#3f CALL &08BD ; réinit les vecteurs systèmes (vecteur pour 6128 et 6128 plus) CALL &BB00 ; init le Key Manager LD A,&C9 ; disable char pour eviter les messages des roms LD (&BB5A),A ; c'est un peu brut mais ça fonctionne ! LD DE,&40 ; init All ROMs LD HL,&ABFF CALL &BCCB LD A,&CF ; enable char LD (&BB5A),A POP HL ; recup adr de la Rsx POP BC ; recup numero de rom ; POP AF ; recup numero de drive ; CP 3 CALL Z,&1B ; si lecteur =3 execute Rsx (ùX) ; LD HL,(&BE7D) ; Quoiqu'il en soit on poke le bon lecteur LD (HL),A ; ; ; Load a file ; loading LD DE,&C000 ; buffer LD HL,file ; nom a charger LD B,endfile-file ; le nom contient combien de lettres ? CALL &BC77 ; charge le Header LD HL,&7D ; adresse de début du fichier CALL &BC83 CALL &BC7A JP &9788 ; adresse d'execution ; ; Cherche ACMEDos ? ; foundrsx LD HL,rsx0 CALL &BCD4 JR NC,foundrsx1 RET ; ; Cherche iMPdos ? ; foundrsx1 LD HL,rsx1 CALL &BCD4 JR NC,bip ret ; ; Rsx Not found -> Bip ; bip LD A,7 ; biiiip JP &BB5A ; rsx0 byte "D"+&80 rsx1 BYTE "X"+&80 file BYTE "IMPACT.BIN" endfile
|
_________________ Ast/iMPACT
Par le pouvoir du crâne ancestral....
Dernière édition par Ast le Mar 30 Oct - 17:20 (2018); édité 3 fois
|
|
Revenir en haut |
|
|
Francouai
Hors ligne
Inscrit le: 23 Avr 2017 Messages: 201
Localisation: IDF Point(s): 60 Moyenne de points: 0,30
|
Posté le: Mer 10 Jan - 10:00 (2018) Sujet du message: *****Loader universel (Load & Save) |
|
|
salut! quand tu parles de "LOADER", tu veux dire un logiciel type "Filemanager"? tu navigues avec le curseur pour sélectionner les fichiers et la touche ENTER pour le lancer? tu fais une compatibilité avec la carte M4 aussi? _________________ -- Francouai CPC 6128, 6128+, ATARI STe, Mega STE, FALCON, AMIGA A500-Vampire/A1200/A4000-40.
|
|
Revenir en haut |
|
|
Ast Administrateur
Hors ligne
Inscrit le: 05 Sep 2014 Messages: 3 169 Point(s): 609 Moyenne de points: 0,19
|
Posté le: Mer 10 Jan - 11:11 (2018) Sujet du message: *****Loader universel (Load & Save) |
|
|
Non, un loader c'est une routine qui re permet de lire un fichier basic, binaire ou ascii.... Quand tu fais run"Disc la routine qui va lire les données sur ton Disc s'appelle un loader. Ma routine est compatible drive à/b et x-mass. Malheureusement pour la m4, cela risque d'être difficile vu que je n'en ai pas mais, si une âme charitable venait à m'offrir une m4, il m'apparaît évident que je le ferais.
Concernant le filemanager, il est toujours wip! _________________ Ast/iMPACT
Par le pouvoir du crâne ancestral....
|
|
Revenir en haut |
|
|
Francouai
Hors ligne
Inscrit le: 23 Avr 2017 Messages: 201
Localisation: IDF Point(s): 60 Moyenne de points: 0,30
|
Posté le: Mer 10 Jan - 11:29 (2018) Sujet du message: *****Loader universel (Load & Save) |
|
|
ah ok! j'attends que tu releases ton FILEMANAGER pour tester sur ma M4. _________________ -- Francouai CPC 6128, 6128+, ATARI STe, Mega STE, FALCON, AMIGA A500-Vampire/A1200/A4000-40.
|
|
Revenir en haut |
|
|
cmp
Hors ligne
Inscrit le: 08 Sep 2014 Messages: 186
Localisation: nord Point(s): 9 Moyenne de points: 0,05
|
Posté le: Mer 10 Jan - 13:32 (2018) Sujet du message: *****Loader universel (Load & Save) |
|
|
Lol Si tu payes une M4 à David pas de problème _________________ CMP from impact cpc
|
|
Revenir en haut |
|
|
Publicité
|
Posté le: Mer 10 Jan - 13:32 (2018) Sujet du message: Publicité |
|
|
|
|
Revenir en haut |
|
|
cmp
Hors ligne
Inscrit le: 08 Sep 2014 Messages: 186
Localisation: nord Point(s): 9 Moyenne de points: 0,05
|
Posté le: Mer 10 Jan - 13:33 (2018) Sujet du message: *****Loader universel (Load & Save) |
|
|
En tout cas
Merci pour ce bout de code David ^^
Sympa de faire partager la communauté. _________________ CMP from impact cpc
|
|
Revenir en haut |
|
|
Ast Administrateur
Hors ligne
Inscrit le: 05 Sep 2014 Messages: 3 169 Point(s): 609 Moyenne de points: 0,19
|
Posté le: Mer 10 Jan - 13:38 (2018) Sujet du message: *****Loader universel (Load & Save) |
|
|
Un bout de code ? C'est le loader complet... y'a plus qu'à adapter. _________________ Ast/iMPACT
Par le pouvoir du crâne ancestral....
|
|
Revenir en haut |
|
|
cmp
Hors ligne
Inscrit le: 08 Sep 2014 Messages: 186
Localisation: nord Point(s): 9 Moyenne de points: 0,05
|
Posté le: Mer 10 Jan - 16:36 (2018) Sujet du message: *****Loader universel (Load & Save) |
|
|
Je m'en doutais que tu allais dire cela ^^ _________________ CMP from impact cpc
|
|
Revenir en haut |
|
|
Ast Administrateur
Hors ligne
Inscrit le: 05 Sep 2014 Messages: 3 169 Point(s): 609 Moyenne de points: 0,19
|
Posté le: Mer 21 Mar - 14:09 (2018) Sujet du message: *****Loader universel (Load & Save) |
|
|
Je vais bientôt modifier la routine proposée plus haut car il y a quelques faiblesses.
En premier lieu, il faut que le loader récupère quelques infos comme : -Le répertoire dans lequel nous nous trouvons -Le numéro du lecteur
En effet, lors d'un RUN" certains paramètres sont réinitialisés, donc... _________________ Ast/iMPACT
Par le pouvoir du crâne ancestral....
|
|
Revenir en haut |
|
|
Ast Administrateur
Hors ligne
Inscrit le: 05 Sep 2014 Messages: 3 169 Point(s): 609 Moyenne de points: 0,19
|
Posté le: Jeu 29 Mar - 23:56 (2018) Sujet du message: *****Loader universel (Load & Save) |
|
|
Voici la routine universelle que je vous avais promis. Elle permet de lire, aussi bien sur le drive a, b que sur la x-Mass, sous iMPdos, bien évidemment.
Code: | ; ; Loader Universel v2 compatible iMPdos - AsT/iMPact 29/03/2018 ; #b8fa-fb-fc : Secteur répertoire courant ; #b8fd : numéro de drive (0=A | 1=B | 3=X-Mass) ; org #a000 ; ld hl,#b8fa ; sauve la config ld de,config ; drive+repertoire ld bc,4 ldir ; LD HL,(&BE7D) ; Début de l'Amsdos LD A,(HL) ; récupère numéro du lecteur push af ; sauve lecteur ld (#b8fd),a DI LD BC,&7F88+2 ; mode 2 - Lower Rom On | Upper Rom Off OUT (C),C EXX CALL &44 ; réinit la zone 0-#3f CALL &08BD ; réinit les vecteurs systèmes (vecteur pour 6128 et 6128 plus) CALL &BB00 ; init le Key Manager LD A,&C9 ; disable char pour eviter les messages des roms LD (&BB5A),A ; c'est un peu brut mais ça fonctionne ! LD DE,&40 ; init All ROMs LD HL,&ABFF CALL &BCCB LD A,&CF ; enable char LD (&BB5A),A ; ld hl,config ; restitue la config ld de,#b8fa ; repertoire+numéro de drive ld bc,4 ldir ld hl,#b8fa ; copie adresse secteur repertoire ld de,#b34A ; dans adresse impdos ; Sector Low ldi:ldi ld a,(hl) ; Sector High ld (#b349),a inc hl ; Drive ; ld a,(hl) CP 3 CALL Z,foundrsx ; si lecteur =3 recherche et execute Rsx (ùX) ; pop af ; recupère numéro du lecteur LD HL,(&BE7D) ; Quoiqu'il en soit on poke le bon lecteur LD (HL),A ; ; Load a file ; loading LD DE,&C000 ; buffer LD HL,file ; nom a charger LD B,endfile-file ; CALL &BC77 ; charge le Header LD HL,&c000 ; adresse de début du fichier CALL &BC83 CALL &BC7A JP &bb18 ; Attente d'une touche ; ; Cherche iMPdos ? ; foundrsx LD HL,rsxX CALL &BCD4 JR NC,bip jp #1b ; config byte 0,0,0,0 ; sauvegarde du répertoire+du numéro de drive ; ; Rsx Not found -> Bip ; Bip si iMPdos n'est pas trouvé. ; bip LD A,7 ; biiiip JP &BB5A ; rsxX BYTE "X"+&80 file BYTE "ast.scr" endfile
|
_________________ Ast/iMPACT
Par le pouvoir du crâne ancestral....
Dernière édition par Ast le Mer 4 Avr - 17:45 (2018); édité 1 fois
|
|
Revenir en haut |
|
|
Publicité
|
Posté le: Jeu 29 Mar - 23:56 (2018) Sujet du message: Publicité |
|
|
|
|
Revenir en haut |
|
|
roudoudou
Hors ligne
Inscrit le: 14 Juil 2016 Messages: 430
Localisation: LYON Point(s): 50 Moyenne de points: 0,12
|
Posté le: Ven 30 Mar - 13:28 (2018) Sujet du message: *****Loader universel (Load & Save) |
|
|
J'apporte ma M4 demain, tu pourras nous faire une version, compatible aussi :p
|
|
Revenir en haut |
|
|
Ast Administrateur
Hors ligne
Inscrit le: 05 Sep 2014 Messages: 3 169 Point(s): 609 Moyenne de points: 0,19
|
Posté le: Ven 30 Mar - 13:41 (2018) Sujet du message: *****Loader universel (Load & Save) |
|
|
Pourquoi pas ? J'y avais pensé. _________________ Ast/iMPACT
Par le pouvoir du crâne ancestral....
|
|
Revenir en haut |
|
|
Kris
Hors ligne
Inscrit le: 08 Sep 2014 Messages: 285
Localisation: 35 Point(s): 112 Moyenne de points: 0,39
|
Posté le: Mar 3 Avr - 15:04 (2018) Sujet du message: *****Loader universel (Load & Save) |
|
|
Merci pour le partage du source _________________ Kris
|
|
Revenir en haut |
|
|
Ast Administrateur
Hors ligne
Inscrit le: 05 Sep 2014 Messages: 3 169 Point(s): 609 Moyenne de points: 0,19
|
Posté le: Mer 4 Avr - 17:49 (2018) Sujet du message: *****Loader universel (Load & Save) |
|
|
Vu que Chany en avait besoin, j'ai réalisé cet après midi le code pour la sauvegarde sur xmass. Je partage donc avec vous, histoire que, si vous en aviez besoin, vous puissiez puiser ici.
Code: | ; ; Sauvegarde Xmass Universel - Drive A/B/xMass iMPdos ; by AsT/iMPact ; org #a000 LD HL,(&BE7D) ; Debut de l'Amsdos LD A,(HL) ; recupere numero du lecteur push af ; sauve lecteur ld (#b8fd),a ; ld hl,#b349 ; sauve les datas du secteurs ld de,config ld bc,3 ldir ; ld hl,#B300 ; sauve parametre dir ld de,param ld bc,#60 ldir ; ld hl,#b8fa ; sauve adresse sect repertoire ld de,config2 ld bc,3 ldir ; DI LD BC,&7F88+2 ; mode 2 - Lower Rom On | Upper Rom Off OUT (C),C EXX CALL &44 ; reinit la zone 0-#3f CALL &08BD ; reinit les vecteurs systemes (vecteur pour 6128 et 6128 plus) CALL &BB00 ; init le Key Manager LD A,&C9 ; disable char pour eviter les messages des roms LD (&BB5A),A ; c'est un peu brut mais ca fonctionne ! LD DE,&40 ; init All ROMs LD HL,&ABFF CALL &BCCB LD A,&CF ; enable char LD (&BB5A),A ; ld bc,#7f8c+2 out (c),c ; ld hl,config ; recupere secteur ou ecrire le ld de,#b349 ; nom du fichier dans directory ld bc,3 ldir ld hl,(#be7d) pop af ld (hl),a ld (#b8fd),a ; ld a,(hl) CP 3 CALL Z,foundrsx ; si lecteur =3 recherche et execute Rsx (ùX) ; ld b,finnom-nom ; longueur du nom à sauvegarder ld hl,nom ; adresse du nom du fichier ld de,#c000 ; buffer call #bc8c ; ouverture du fichier en sortie jr nc,bip ; si erreur -> bip ld hl,#c000 ; adresse de départ ld de,#3FFF ; Longueur du fichier à sauver ld bc,#caca ; Adresse d'execution ld a,2 ; type de fichier (0 : bas | 1 : Basic Protégé | 2 : Binaire | #16 : Ascii) call #bc98 ; On sauvegarde jr nc,bip ; si erreur -> Bip call #bc8f ; Fermeture du fichier en sortie ; lastconfig ; ld hl,config2 ; recupere secteur position directory ld de,#B34A ld bc,2 ldir ld a,(hl) ld (#b349),a ; ld hl,param ; restitut parametre dir ld de,#b300 ld bc,#60 ldir ret ; ; Cherche iMPdos ? ; foundrsx LD HL,rsxX CALL &BCD4 JR NC,bip jp #1b ; ; Rsx Not found -> Bip ; Bip si iMPdos n'est pas trouve. ; bip LD A,7 ; biiiip call &BB5A jr lastconfig ; rsxX BYTE "X"+&80 ; nom byte "chany.ch1" finnom ; config byte 0,0,0,0 ; config2 byte 0,0,0 ; retour repertoire param ds #60,0 ;
|
_________________ Ast/iMPACT
Par le pouvoir du crâne ancestral....
|
|
Revenir en haut |
|
|
Ast Administrateur
Hors ligne
Inscrit le: 05 Sep 2014 Messages: 3 169 Point(s): 609 Moyenne de points: 0,19
|
Posté le: Sam 1 Sep - 12:16 (2018) Sujet du message: *****Loader universel (Load & Save) |
|
|
Bonjour,
Suite à une discussion avec Chany, j'ai décidé de vous partager une version plus compacte d'un loader de fichier compatible AmsDos & XMass. C'est le moment de poser vos questions, si toutefois vous en aviez.
Code: | ORG &A000 ENT $ ; ; #b8fa-#b8fb : sector low ; #b8fc : sector High ; #b8fd : current drive ; ; #b34a-#b34b : sector low ; #b349 ; sector high ; peek(#be7d) : start amsdos adr ; ; X-Mass & Amsdos Loader 100% ; ------ AsT/iMPACT 01/09/18 ;
di ld bc,&7F88+2 out (c),c exx call &44 ; restore 0-#3f call &08BD ; restore vector system call &BB00 ; reinit keyb buffer and back to basic ei ; ld a,(&B8FD) ; save current drive push af ; ; Save iMPdos important data ; ld hl,&B300 ld de,xmassbuffer ld bc,&0100 ldir ; call &BB57 ; txt off ; ld de,&40 ; init All roms (rom 7 included) ld hl,&ABFF call &BCCB ; call &BB54 ; txt on ; ; Restore iMPdos important data ; ld hl,xmassbuffer ld de,&B300 ld bc,&0100 ldir ; pop af ; current drive number ld hl,(&BE7D) ; in Amsdos drive ld (hl),a cp 3 ; xmass ? jr nz,loadfile ; ; X-Mass flag drive detected ? ; call findrom ; find rom "|x" ; loadfile call &B903 ; disable upper rom ld hl,file ld b,file1-file call load0 ; call &BB18 ; ld hl,file1 ld b,file2-file1 call load0 ; ret ; load0 ld de,&C000 call &BC77 ld hl,&C000 call &BC83 jp &BC7A ; findrom ld hl,rsxX call &BCD4 ret nc jp &1B ; rsxX BYTE "X"+&80 ; file BYTE "vacance1.scr" file1 BYTE "vacance0.scr" file2 ; ; Xmass buffer here ; Zone #b300-#b400 ; xmassbuffer FILL 256,0 ; |
_________________ Ast/iMPACT
Par le pouvoir du crâne ancestral....
|
|
Revenir en haut |
|
|
|
|