scene.org File Archive

File download

<root>­/­demos­/­groups­/­impact_cpc/impdos_public_edition.zip

File size:
46 039 bytes (44.96K)
File date:
2018-04-30 09:50:13
Download count:
all-time: 190

Preview

  • IMP1904.ROM 11.94K
  • iMPdos (rom).DSK 190.25K
  • iMPdos (rom).hfe 0.96M
  • iMPdos.txt 9.35K

file_id.diz

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