Fichero DSK de Oric.

Avatar de Usuario
Silicebit
Mensajes: 1404
Registrado: 16 May 2011 21:13
Ubicación: La buhardilla del silicio.
Agradecido : 53 veces
Agradecimiento recibido: 128 veces
Contactar:

Fichero DSK de Oric.

Mensajepor Silicebit » 06 Jul 2014 13:36

El formato de fichero DSK en Oric.

Observaciones preliminares.

El estándar de facto para las imágenes de disco de Oric es el formato DSK. Desafortunadamente, esta extensión oculta dos formatos de fichero diferentes.

• El más antiguo, que únicamente almacena la estructura a alto nivel del disco (pistas y sectores), el cual es perfectamente válido para almacenar los discos estándar generados por los sistemas operativos de disco más comunes de Oric. Pero que no es idóneo para guardar discos con un formato especial o con protecciones. Estos discos son identificados por la firma ORICDISK al comienzo del fichero.

• El nuevo formato, que es bastante más complejo. Éste, también almacena las pistas y los sectores, pero no se limita sólo a eso, también guarda todos los meta-datos almacenados sobre un disco real para ayudar a la electrónica de la controladora, a identificar las diferentes localizaciones del floppy cuando éste está girando; Cabeceras de pista, marcas de sincronización, sumas de control, gaps, etc. … Estos discos son identificados por la firma MFM_DISK al comienzo del fichero.

Es posible convertir una imágen DSK del formato antiguo al nuevo formato, usando el programa old2mfm.

El formato antiguo (ORICDISK).

(todos los datos son almacenados en el formato little endian)

Cabecera

Los antiguos ficheros DSK comienzan con una cabecera de 256 bytes:

• Una firma de 8 bytes de longitud: ORICDISK
• Número de caras (32 bits)
• Número de pistas (32 bits)
• Número de sectores (32 bits)
• El resto de la cabecera contiene datos no usados.

Un ejemplo, la cabecera en el antiguo formato para Sedoric 3.0 sería:

• 4F5249434449534B  ORICDISK
• 02000000  2 caras
• 50000000  80 pistas
• 11000000  17 sectores
• 246 bytes nulos

Datos del disco

Después de los 256 bytes de la cabecera, vienen los datos del disco con el siguiente esquema:

• Todos los datos de la primera cara van primero, todos los datos de la segunda cara después (si el disco es de doble cara).
• Todos los sectores van en orden natural, pista por pista, sector por sector, en orden creciente.
• Se asume un tamaño para los sectores de 256 bytes.

El nuevo formato (MFM_DISK)

(todos los datos son almacenados en el formato “little endian”, los datos están en notación hexadecimal, el número de bytes usados en decimal)

Cabecera

Los nuevos ficheros DSK también comienzan con una cabecera de 256 bytes:

• Una firma de 8 bytes de longitud: MFM_DISK
• Número de caras (32 bits)
• Número de pistas (32 bits)
• Tipo de geometría (32 bits)
• El resto de la cabecera contiene datos no usados, pero reservados para futuras extensiones, como el manejo de discos de la unidad BD-500.

Geometría.

Este nuevo campo indica como interpretar el resto de los datos, los tipos de geometría existentes son:

1. Primero todas las pistas de la primera cara, seguidas de todas las pistas de la segunda.
2. Todas las pistas del cilindro 0, después las del cilindro 1, etc. ... (las pistas de cada cara están intercaladas)

En el Oric se usa el tipo 1, el tipo 2 es usado mayormente en plataformas distintas al Oric.

Ejemplo, la cabecera en el nuevo formato para Sedoric 3.0 sería:

• 4D464D5F4449534B  MFM_DISK
• 02000000  2 caras
• 50000000  80 pistas
• 01000000  Geometría tipo 1
• 246 bytes nulos

Datos del disco.

Después de los 256 bytes de la cabecera, vienen los datos del disco dispuestos según el siguiente esquema (asumimos que estamos usando el formato Oric, geometría tipo 1)

• Cada pista contiene 6400 bytes, únicamente 6250 son datos útiles, los restantes son de relleno para completar una cantidad multiplo de 256.
• La localización de los sectores sobre la pista depende particularmente del formato, del número de bytes por sector (256 o 512), y del número de sectores por pista (8, 9 o 10 sectores de 512 bytes, o 15 a 18 sectores de 256 bytes).

Para localizar un sector en particular, el modo más fiable es el de simular la forma en la que el controlador trabaja. Analizando todos los datos de la pista como si fuera una autentica pista magnética, localizando los datos de sincronización, después las cabeceras de sector y datos hasta llegar al sector correcto.

Datos de la pista.

Nota: Aparentemente, este comienzo de pista es opcional.

Una pista comienza con una secuencia de datos, algunos son fijos, y otros variables:

  • FORMATO IBM
    • 4E (*80)
    • 00 (*12)
    • C2 C2 C2 FC
    • 4E (*50)

  • FORMATO SEDORIC
    • 4E (*40)
    • 00 (*12)
    • C2 C2 C2 FC
    • 4E (*40)

Eso hace un total de 146 bytes para un disquete con formato IBM, y 96 bytes para uno con formato SEDORIC.

Al final de la pista pueden estar presentes un número variable de bytes de valor 4E

Datos del sector.

Cada sector comienza con una secuencia de identificación, alguna información sobre el propio sector, algunos datos de sincronización, los datos útiles a cargar, y algunos datos de fin de sector:

  • Datos de sincronización.
    • 00 (*12)
    • A1 A1 A1
    • FE
    • Número de pista.
    • Cara.
    • Número de sector.
    • Número de bytes por sector (1=256 bytes, 2=512 bytes).
    • 16 bits CRC
    • 4E (*22)

  • Datos
    • 00 (*12)
    • A1 A1 A1
    • FB
    • 256 or 512 bytes con los datos útiles.
    • ?? 16 bits CRC  No se ha comprobado aún

  • Fin de sector
    • 4E (*12/30/40/80 bytes dependiendo del número de sectores y su tamaño).
El 6809 es el Rolls-Royce de los 8bits, el 6502 es el Mercedes, y el Z80 el SEAT 850. Sorry, but... I think different. :-P -0r1c -m3s3x -t4nd1 -cbmja YouTube

Avatar de Usuario
ron
Mensajes: 17865
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 856 veces
Agradecimiento recibido: 912 veces

Re: Fichero DSK de Oric.

Mensajepor ron » 27 Mar 2015 20:01

Silicebit. ¿ A día de hoy se sigue sin tener una tool para editar y crear DSK de Oric ? o por el contrario ya existe algo...

Avatar de Usuario
Silicebit
Mensajes: 1404
Registrado: 16 May 2011 21:13
Ubicación: La buhardilla del silicio.
Agradecido : 53 veces
Agradecimiento recibido: 128 veces
Contactar:

Re: Fichero DSK de Oric.

Mensajepor Silicebit » 30 Mar 2015 11:23

Pues que yo haya visto, aún no hay nada. Estoy aprendiendo C para poder hacer alguna herramienta, pero lo he dejado un poco de lado por la segunda hornada de controladoras Microdisc. ¡Qué se le va a hacer! El hardware me tira. :-D

Estaría bien hacer una lista con las posibles funciones que pueda tener. ;-)
El 6809 es el Rolls-Royce de los 8bits, el 6502 es el Mercedes, y el Z80 el SEAT 850. Sorry, but... I think different. :-P -0r1c -m3s3x -t4nd1 -cbmja YouTube

Avatar de Usuario
Taburoto
Mensajes: 1209
Registrado: 15 Mar 2011 00:40
Agradecido : 13 veces
Agradecimiento recibido: 69 veces

Re: Fichero DSK de Oric.

Mensajepor Taburoto » 30 Mar 2015 13:43

Estaría bien hacer una lista con las posibles funciones que pueda tener


Imprescindible:

-Crear imagen DSK nueva, varios tamaños y geometrias.
-Poder inyectar y sacar archivos con comodidad.
-Tostar el DSK en floppy real.
-Leer floppy real y crear DSK con las carcteristicas originales.

Avatar de Usuario
Silicebit
Mensajes: 1404
Registrado: 16 May 2011 21:13
Ubicación: La buhardilla del silicio.
Agradecido : 53 veces
Agradecimiento recibido: 128 veces
Contactar:

Re: Fichero DSK de Oric.

Mensajepor Silicebit » 30 Mar 2015 20:06

¡¡Eso como mínimo!! ¡Ahí van otras cosas que tengo en mente!

-Poder usar disqueteras USB para tostar el DSK.
-Cargar un fichero TAP (también con cargas múltiples) y pasar el archivo del TAP al DSK y viceversa.

Más, más cosas, a ver...
El 6809 es el Rolls-Royce de los 8bits, el 6502 es el Mercedes, y el Z80 el SEAT 850. Sorry, but... I think different. :-P -0r1c -m3s3x -t4nd1 -cbmja YouTube

Avatar de Usuario
ron
Mensajes: 17865
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 856 veces
Agradecimiento recibido: 912 veces

Re: Fichero DSK de Oric.

Mensajepor ron » 30 Mar 2015 20:22

Si, se puede montar un tap y pasar el contenido a DSK. Pero sigue sin ser práctico. Solución tiene, pero con pinzas.

Avatar de Usuario
Silicebit
Mensajes: 1404
Registrado: 16 May 2011 21:13
Ubicación: La buhardilla del silicio.
Agradecido : 53 veces
Agradecimiento recibido: 128 veces
Contactar:

Re: Fichero DSK de Oric.

Mensajepor Silicebit » 30 Mar 2015 20:33

ron escribió:Si, se puede montar un tap y pasar el contenido a DSK. Pero sigue sin ser práctico. Solución tiene, pero con pinzas.

Por eso estamos viendo qué podría hacer la herramienta, todo en uno, sin tener que estar cargando los emuladores para hacer una cosa y después cargar otra historia para hacer otra cosa. Seguro que tienes alguna idea más, ron, ¡venga desembucha, que te veo inquieto! -507 Ja ja ja.
El 6809 es el Rolls-Royce de los 8bits, el 6502 es el Mercedes, y el Z80 el SEAT 850. Sorry, but... I think different. :-P -0r1c -m3s3x -t4nd1 -cbmja YouTube

Avatar de Usuario
Chema
Mensajes: 1854
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 927 veces
Agradecimiento recibido: 326 veces
Contactar:

Re: Fichero DSK de Oric.

Mensajepor Chema » 01 Abr 2015 12:28

Uff... ¡ojalá salga de aquí una herramienta que pudiese hacer todo eso! Algunas cosas son bastante factibles (en mi opinión) y hay discusión al respecto en Defence-Force.

Por ejemplo, se puede usar esta librería para volcar/tostar discos en operativos modernos.
http://simonowen.com/fdrawcmd/

Silicebit escribió:-Poder usar disqueteras USB para tostar el DSK.
-Cargar un fichero TAP (también con cargas múltiples) y pasar el archivo del TAP al DSK y viceversa.


No sé cómo se puede solucionar el problema de usar disqueteras USB. No entiendo mucho del tema, pero creo que simplemente no permiten acceder a la controladora a bajo nivel. Siento curiosidad si alguien tiene alguna idea al respecto :)

Lo de los ficheros TAP multiparte es una pesadilla. Se pueden pasar todas las partes al disco y aunque se solventen los problemas con partes sin nombres o de cómo organizar los archivos, el programa no va a funcionar al no ser que se parchee el código (para que no haga un CLOAD"" sino que carge un archivo determinado de disco) o la propia ROM (vamos su copia en RAM, quiero decir) para que haga esto de manera transparente.

Mi idea original era buscarme la vida para hacer un pequeño cargador que pudiese meter en el Oric un volcado de la memoria+registros+... salvado en un archivo. Así podríamos cargar el juego en un emulador, generar un snapshot y usar una herramienta que lo convierta en un archivo que se pueda escribir en disco. El cargador debería poner la ROM adecuada en la Overlay RAM además de cargar correctamente el estado del sistema.

Lo que pasa es que es un poco engorro el proceso y no he tenido tiempo de pensarlo con cuidado (mucho menos de hacer ninguna prueba).

Hala, ya he soltado un ladrillo y no he aportado idea alguna... para variar -grin

Avatar de Usuario
Taburoto
Mensajes: 1209
Registrado: 15 Mar 2011 00:40
Agradecido : 13 veces
Agradecimiento recibido: 69 veces

Re: Fichero DSK de Oric.

Mensajepor Taburoto » 01 Abr 2015 14:27

Yo he conseguido pasar algunos juegos desde tap a dsk com tap2dsk...

Luego copio los archivos del dsk nuevo a un disco recopilatorio que voy haciendo

Avatar de Usuario
ron
Mensajes: 17865
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 856 veces
Agradecimiento recibido: 912 veces

Re: Fichero DSK de Oric.

Mensajepor ron » 01 Abr 2015 15:19

De un CDROM que tenía grabado de cuando se hacía la mili con lanza ( al menos 10 años ) he encontrado esto:

oricdiskmanager.zip
(382.5 KiB) Descargado 75 veces


Se trata del Oric Disk Manager hecho por Simon Guyart. La versión que he subido a RW ya incluye la DLL y funciona hasta en W7 64. No creo que no haga nada que ya hace el Oric Explorer.

ODM is a Windows tools, to help you managing Sedoric v3.0 DSK files.


odmrwpng.png
odmrwpng.png (35.35 KiB) Visto 2056 veces


A ver si rebuscando por internet aparece algo un poco más moderno.

Echadle un ojo y me decís algo. Saludos

Avatar de Usuario
Taburoto
Mensajes: 1209
Registrado: 15 Mar 2011 00:40
Agradecido : 13 veces
Agradecimiento recibido: 69 veces

Re: Fichero DSK de Oric.

Mensajepor Taburoto » 01 Abr 2015 15:31

Ron,para empezar está bien,yo pensaba (Pensar,gran error) que no habia NADA para los dsk del Oric.

Avatar de Usuario
ron
Mensajes: 17865
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 856 veces
Agradecimiento recibido: 912 veces

Re: Fichero DSK de Oric.

Mensajepor ron » 01 Abr 2015 15:54

Taburoto escribió:Ron,para empezar está bien,yo pensaba (Pensar,gran error) que no habia NADA para los dsk del Oric.


taburoting ; tiburoning xD

Vamos a recopilar la info.

El Oriculator / Oricutron tiene implementada la lectura y grabación de DSK. Esto hay que ponerse con ello y hacer aunque sea una mínima herramienta que permita llenar un DSK de ficheros. Ya está, es lo que dice Silicebit.

Otra de las opciones es que Habi valore que posibilidades tenemos, porque de haberlas nos podrá decir que camino es el mejor.

Avatar de Usuario
ron
Mensajes: 17865
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 856 veces
Agradecimiento recibido: 912 veces

Re: Fichero DSK de Oric.

Mensajepor ron » 01 Abr 2015 16:40

http://sourceforge.net/projects/euphori ... ic%20tool/

Tape to disk V2.1 README :

This is a PC tool that builds a Sedoric3 master disk image (.dsk) from the files found in zero or more Oric tape images (.tap). The program is provided in both binary forms for DOS/Windows users, and in source form for unix/mac/other users.
Beware that the disk image uses the obsolete Oric disk image format, not the one that is currently used by Euphoric. This means that you need to further convert the disk image to the new format, using the old2mfm tool.

Examples of use:

tap2dsk newdisk.dsk
old2mfm newdisk.dsk

=> this builds an empty master Sedoric disk image

tap2dsk krillys.tap krillys.dsk
old2mfm krillys.dsk

=> this takes all the files in krillys.tap and stores them in a bootable Sedoric disk

tap2dsk *.tap bigdisk.dsk
old2mfm bigdisk.dsk

=> this takes all the files in all tape images and stores them in a bootable Sedoric disk

Options:
-i<inist> sets the init string of the disk (Basic commands executed at boot time)
-n<label> sets the label string of the disk (disk name as shown by the dir command)

Example:

tap2dsk -i"PAPER3:INK4:DIR" -n"YELLOW EMPTY DISK" newdisk.dsk

=> this builds a master Sedoric disk image that shows its empty content at boot time

Some remarks:
- the size of the disk image is made as small as possible. As a minimum, it will be 21 tracks, single sided (this allows faster writing to real floppies with writedsk). When the tape image contains a lot of data, the disk image extends to up to 80 tracks. It always has 17 sectors per track, and it is always single sided. Minimal space is wasted in only 3 sectors (system sector, bitmap sector and directory sector) instead of 16 in a usual slave disk. This means that the smallest disk image (21 tracks) still offers 88.5 KB free. More directory sectors are allocated when needed.
- a tape image may contain several files, this program will converts all of them into the disk image, provided they are in standard tape format.
- the name of the files inside the disk images are extracted from the tape image, but as an Oric program name might be as long as 17 characters, it is truncated to 9 characters. Every non-alphanumeric character is removed (non-alphanumeric characters arent allowed with Sedoric). Beware, tap2dsk does not provide name-collision detection, so it may generate a disk containing two files with the same name.
- Also, an Oric program on tape might have a zero-length name. In this case, tap2dsk generates a unique name such as NONAME001.

Enjoy,

Fabrice


http://sourceforge.net/projects/euphori ... e/download
http://sourceforge.net/projects/euphori ... c/download

Código: Seleccionar todo

/* tap2dsk : converts an Oric tape image to a sedoric/stratsed dsk image */
/* (c) F.Frances 2004 */

/* Limitations :
 *   - only 1 bitmap sector, thus limits the capacity to ~2048 sectors
 *   - only 1 side with 80 tracks max.
 */

#include <stdio.h>
#define NBTRACKS 21
#define NBSECT 17

typedef unsigned char byte;
typedef byte sector[256];

struct {
   char signature[8];
   int sides;
   int tracks;
   int sect;
   char pad[256-20];
} imageheader = { "ORICDISK", 1, NBTRACKS, NBSECT };

sector disk[80][NBSECT];
sector directory,descriptor;
sector system_sect={   // some system parameters
   0xD0,0xD0,0xD0,0xD0,   // drive table
   0,         // keyboard type
   100,0,10,0,   // RENUM parameters
   T,A,P,2,D,S,K, ,S,A,M,P,L,E, ,D,I,S,C, , ,  // disk name
    , , , , , , , , , , , , , , , , , , , ,
    , , , , , , , , , , , , , , , , , , , ,
    , , , , , , , , , , , , , , , , , , ,          // inist
};
sector bitmap={
   0xFF,      // signature
   0,
   0,0,      // number of free sectors
   0,0,      // number of files
   NBTRACKS,   // number of tracks/side
   NBSECT,      // number of sectors/track
   1,         // number of directory sectors
   NBTRACKS,   // number of tracks + 128 if double sided
   0         // master/slave/gameinit indicator
};

byte sedoric[]=
{
#include "sedoric3.h"
};

int track,sect=1;
int dir_offset=0x10;
int used_sectors;



void allocate_sector(int track, int sect, byte *contents)
{
   int linear_sector=track*NBSECT+sect-1;
   bitmap[0x10+linear_sector/8] &= ~(1<<linear_sector%8);
   memcpy(disk[track][sect-1],contents,sizeof(sector));
   used_sectors++;
}

void find_free_sector(byte *contents)
{
   int linear_sector=0;
   while ((bitmap[0x10+linear_sector/8] & (1<<linear_sector%8)) == 0)
      linear_sector++;

   track=linear_sector/NBSECT;
   sect=linear_sector%NBSECT+1;
   if (track==80) {
      fprintf(stderr,"Not enough space on sample disc");
      exit(1);
   }
   allocate_sector(track,sect,contents);
}

void update_sector(int track, int sect, byte *contents)
{
   memcpy(disk[track][sect-1],contents,sizeof(sector));
}

void convert_basename(char *dest, char *name)
{
   static int filenumber=0;
   int dest_offset=0, src_offset=0;
   printf("Storing ");
   while (dest_offset<9 && src_offset<17 && name[src_offset]) {
      if (name[src_offset]>=a && name[src_offset]<=z)
         name[src_offset]-=0x20;
      if (name[src_offset]>=0 && name[src_offset]<=9
         || name[src_offset]>=A && name[src_offset]<=Z) {
            putchar(name[src_offset]);
            dest[dest_offset++]=name[src_offset];
      }
      src_offset++;
   }
   if (dest_offset) {
      while (dest_offset<9)
         dest[dest_offset++]= ;
   } else {
      printf("NONAME%03d",filenumber);
      sprintf(dest,"NONAME%03d",filenumber++);
   }
}

void store_file(byte *buf, char *name, byte *header)
{
   int start=(header[6]<<8)+header[7];
   int end=(header[4]<<8)+header[5];
   int exec=header[3];
   int block=header[2];
   int sectors=(end-start)/sizeof(sector)+1;
   int desc_sect,desc_track;
   int desc_off=0x0C;
   int offset;

   memset(descriptor,0,sizeof(sector));
   find_free_sector(descriptor);
   desc_track=track; desc_sect=sect;
   descriptor[2]=0xFF;
   descriptor[3]=(block?0x40:0x80)+(exec?1:0);
   descriptor[4]=header[7];
   descriptor[5]=header[6];
   descriptor[6]=header[5];
   descriptor[7]=header[4];
   if (exec) {
      descriptor[8]=descriptor[4];
      descriptor[9]=descriptor[5];
   } else {
      descriptor[8]=descriptor[9]=0;
   }
   descriptor[10]=sectors&0xFF;
   descriptor[11]=sectors>>8;

   convert_basename(directory+dir_offset,name);
   if (exec) {
      sprintf(directory+dir_offset+9,"COM");
      printf(".COM");
   } else {
      sprintf(directory+dir_offset+9,"%s",block?"BIN":"BAS");
      printf(".%s",block?"BIN":"BAS");
   }
   printf("
");
   directory[dir_offset+12]=desc_track;
   directory[dir_offset+13]=desc_sect;
   directory[dir_offset+14]=sectors+1+(sectors>=(256-12)/2?1:0); // Sedoric bug work-around : allocate a second descriptor when exactly 122 sectors of data
   directory[dir_offset+15]=0x40; // UNPROT

   while (sectors--) {
      find_free_sector(buf);
      buf+=sizeof(sector);
      descriptor[desc_off++]=track;
      descriptor[desc_off++]=sect;
      if (desc_off==0x100) {         // Sedoric bug work-around : allocate a second descriptor when the first is full, even if not needed
         find_free_sector(descriptor);
         descriptor[0]=track;
         descriptor[1]=sect;
         update_sector(desc_track,desc_sect,descriptor);
         memset(descriptor,0,sizeof(sector));
         desc_track=track;
         desc_sect=sect;
         desc_off=2;
      }
   }
   update_sector(desc_track,desc_sect,descriptor);
}

int main(int argc, char *argv[])
{
   byte header[9];
   char name[17];
   byte file_buffer[48*1024];
   FILE *tape, *dsk;
   int dir_track=20, dir_sect=4;
   int tracks=21; // minimum track number
   int total_sectors,free_sectors;
   int tape_num,i, options=0;

   printf("Tap2dsk V2.1
");

   if (argc<2) {
      fprintf(stderr,"Usage: tap2dsk [-n<disk_label>] [-i<init_string>] <tape_image1> ...<tape_imageN> <old_disk_image>
");
      exit(1);
   }

   for (i=1; i<argc; i++) {
      if (argv[i][0]==-) {
         switch (argv[i][1]) {
         case i: case I:
            if (strlen(argv[i]) - 2 > 60) {
               fprintf(stderr,"Init string too long
");
               exit(3);
            }
            memcpy(system_sect+0x1E,argv[i]+2,strlen(argv[i])-2);
            break;
         case n: case N:
            memset(system_sect+9, ,21);
            if (strlen(argv[i]) - 2 > 21) {
               fprintf(stderr,"Disk label too long
");
               exit(3);
            }
            memcpy(system_sect+9,argv[i]+2,strlen(argv[i])-2);
            break;
         default: fprintf(stderr,"Bad option : %c
",argv[i][1]);
            exit(2);
         }
      }
   }

   dsk=fopen(argv[argc-1],"wb");
   if (dsk==NULL) {
      fprintf(stderr,"Cannot open %s for writing
",argv[2]);
      exit(1);
   }

   memset(bitmap+0x10,0xFF,sizeof(sector)-0x10);
   for (i=0; i<99; i++) {   // 99 secteurs pour sedoric
      int track= i/NBSECT;
      int sector = i%NBSECT + 1;
      allocate_sector(track,sector,sedoric+i*256);
   }
   allocate_sector(20,1,system_sect);
   allocate_sector(20,2,bitmap);
   allocate_sector(20,4,directory);

   for (tape_num=1; tape_num<argc-1; tape_num++) {
      if (argv[tape_num][0]==-) continue;
      tape=fopen(argv[tape_num],"rb");
      if (tape==NULL) {
         fprintf(stderr,"Cannot read tape image %s
",argv[tape_num]);
         exit(1);
      }
      printf("Reading %s
",argv[tape_num]);


      while (fgetc(tape)!=EOF) {
         int start,end,i;
         while (fgetc(tape)!=0x24)
            ;
         for (i=0;i<9;i++) header[i]=fgetc(tape);
         for (i=0;i<17;i++) {
            name[i]=fgetc(tape);
            if (name[i]==0) break;
         }
         start=(header[6]<<8)+header[7];
         end=(header[4]<<8)+header[5];
         for (i=0; i<end+1-start; i++)
            file_buffer[i]=fgetc(tape);
         printf("Found %s
",name);
         store_file(file_buffer,name,header);
         bitmap[4]++; // number of files
         dir_offset+=16;
         if (dir_offset==0x100) {
            find_free_sector(directory);
            directory[0]=track;
            directory[1]=sect;
            update_sector(dir_track,dir_sect,directory);
            memset(directory,0,sizeof(sector));
            dir_track=track;
            dir_sect=sect;
            dir_offset=0x10;
            update_sector(dir_track,dir_sect,directory);
         }
      }
      fclose(tape);
      tape=NULL;
   }
   directory[2]=dir_offset;
   update_sector(dir_track,dir_sect,directory);

   if (track>=tracks) tracks=track+1;
   total_sectors=tracks*NBSECT;
   free_sectors=total_sectors-used_sectors;
   bitmap[2]=free_sectors & 0xFF;
   bitmap[3]=free_sectors >> 8;
   bitmap[6]=tracks;
   bitmap[9]=tracks;
   update_sector(20,2,bitmap);

   imageheader.tracks=tracks;
   fwrite(&imageheader,sizeof(imageheader),1,dsk);
   for (track=0;track<tracks;track++)
      for (sect=1;sect<=NBSECT;sect++)
         fwrite(disk[track][sect-1],sizeof(sector),1,dsk);
}

Avatar de Usuario
ron
Mensajes: 17865
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 856 veces
Agradecimiento recibido: 912 veces

Re: Fichero DSK de Oric.

Mensajepor ron » 01 Abr 2015 17:00

ATENCIÓN

OricFS: Sistema de archivos para archivos FUSE .DSK

http://forums.oric.org/t111-oricfs-file ... ichier-dsk

En resumen, se puede :

crear un archivo para .dsk Sedoric o FT-Dos
añadir archivos a la imagen
extraer archivos de imagen
convertir un archivo contenido en el archivo de imagen .tap
traduce un ejecutable fuente BASIC por Oric (y viceversa)
...

oricfs-2014-05-17.zip
OricFS (setuptools 0.6)
oricfs-ubuntu-2014-05-17.zip
OricFS pour Ubuntu >= 12 (setuptools 2.2)


Vale, yo no tengo usuario, ¿ alguno conoce al autor o tiene usuario ? , si alguien me consigue esos ficheros, los hago funcionar.

PEROOOOOO

http://forum.defence-force.org/viewtopi ... =23&t=1073

Quedo en espera, a ver si hay suerte y ya hay alguien registrado.

y sale el mismo tema y me encuentro al "chema" atravesao -rofl

Resumiendo, he hecho pruebas con cosas parecidas en pyhton y ruby y gem y en mis GNU/Linux funcionan todas, está a huevo.

sudo apt-get install fuse python-fuse python-setuptools

Puis tu télécharges oric_fs.zip puis
unzip oric_fs.zip

Ensuite il ne faut pas oublier de préfixer les commandes dinstall dOricFS par sudo :
sudo easy_install OricFS-0.3-py2.6.egg
sudo easy_install OricFS_Sedoric-0.2-py2.6.egg
sudo easy_install OricFS_Tape-0.2-py2.6.egg

Avatar de Usuario
Chema
Mensajes: 1854
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 927 veces
Agradecimiento recibido: 326 veces
Contactar:

Re: Fichero DSK de Oric.

Mensajepor Chema » 01 Abr 2015 23:52

tap2dsk es parte del OSDK también y lo he usado bastante. El mayor problema que tiene es con los juegos que cargan por partes, como dije antes.

Lo del driver para FUSE acabo de leerlo en Defence-Force... ¡Se me había pasado! He preguntado si es posible que lo cuelge también en DF para que podamos descargarlo todos...

Avatar de Usuario
ron
Mensajes: 17865
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 856 veces
Agradecimiento recibido: 912 veces

Re: Fichero DSK de Oric.

Mensajepor ron » 02 Abr 2015 08:33

Venga superchemaoric !!!

Y si tu lo tienes y me lo puedes pasar....


Volver a “Oric”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado