iMPdos Public Edition v1.17 - AsT/iMPact 2016-2018
------------
What's iMPdos ? iMPdos is a new rom which allows you to use your xMass Card.
Maximum size is original xMass size, 128 Mb.
1. How & where to install it ?
iMPdos must be installed between rom 1 and 6. (Before Rom 7, in fact!)
When rom is installed, iMPdos will format your x-Mass to detect it properly.
After done, if all is ok, your xMass is detected and rom is actived.
If not, xMass will not be detected and rom will have to be invisible.
2. How to use iMPdos ?
For the first time, i suggest you to use the |hlp command to display all possibilities.
3. Let's see all the commands.
xMass is located as drive X, so you can use |x command to access xMass drive.
|a : select drive a
|b : select drive b
|x : select x-Mass drive
a. Root & directories
cat or |cat to display directory.
|cd,"/ to go back to root
|cd,".. for previous directory
|cd,"cmp" to go to "cmp" directory
About Root and directories.
Root has a maximum of 512 files, no more.
Each direcotries can accepted up to 62 files max.
You can't do more.
b. Load, run & save files.
|l,"filename" command will load bin/bas files without any memory basic command in first adr saved.
|l,"filename",&4000 will load bin/bas files at #4000.
|r,"file" command will load and run any bin/bas files.
basic command are also compatibles, so you can use load" save" & run" too.
if |x:run"filename run filename from drive a or b instead of xMass,
just use :
|x:|r,"filename
c. Erase files or directories.
|del,"filename" will erase this file in your xMass.
|rd,"filename" will erase the directory name.
You will have to give a confirmation if some files are presents on the directory before erase it.
------ |era are only used for drive a & b -----
d. Create directories.
|md,"filename" will create a new directory.
e. Formatting your xMass.
|format,1 : Fast format as written in the |hlp.
in fact, this command format your x-mass up to the last files written.
|format,2 : Full format. Format all tracks on your xMass.
f. Filenames header.
|head,"filename" will display important informations as :
-filename type : 00-01 : basic / basic protected
02 : binary
#16 : ascii
-StartAdr : Start Adress
-Lenght : Lenght of the file
-Exec : Execution Adress
-NbSect : how many sectors compose this file
-StSect : first file sector
g. Extended dos commands
You could access extended dos commands which allow you to have 366k free in drive B.
This command was developped for Gotek users. Before using this command, you'll have
to create a 366k dsk file by formatting it with 80 tracks.
And then :
|dos : install drive b 366 driver
|dosoff : drive b back to normal configuration
In iMPdos boot, you are in normal config (|dosoff)
h. Copying file into xMass and more.
Some commands were done to make fast file copies between drive & xMass.
|cpax,"filename" copies filename from drive a to xMass
|cpbx,"filename" copies filename from drive b to xMass
|cpax,"* copies all files from drive a to xMass
|cpbx,"* copies all files from drive b to xMass
---
|cpxa,"filename" copies filename from xMass to drive a
|cpxb,"filename" copies filename from xMass to drive b
----- wildcard will not work in this way.
----- Ascii files can't be copied using this commands
i. Connect roms.
|connect : connect roms 16 up to 31.
j. Hexa Sector Editor.
As i love discology's hexa sector editor, i coded one for iMPdos.
|ed,&221,0 : edit 000221 sector.
When you are in editor mode :
----Up/Down/Left/right
----Return : Change byte
----P : Previous Sector
----N : Next Sector
----Ctrl+Up : Page 0/1 - #0000-#00ff
----Crtc+Down : Page 2/1 - #0100-#01ff
----Esc : Quit Hexa Editor
----Ctrl+R : Read current sector
----Crtl+S : Save current sector
k. Some information to use/detect iMPdos properly in your next production.
You could find all informations in AmstradPlus forum : http://amstradplus.forumforever.com/t381-Loader-universel.htm
---- Load :
;
; 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
----- Save :
;
; 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
;
L. Thanks & Bugs reports
Thanks to all my beta-testers : Kris, Cmp, Chany, Dirtybb, Madram, Power, ArnoldEmu, Audronic & Subaru.
Other people ask me to be beta-tester but never send me feedback. so...
For bugs reports :
http://amstradplus.forumforever.com/t293-iMPdos.htm