Image Map Image Map
Results 1 to 4 of 4

Thread: More on Exidy Sorcerer disk images.

  1. #1

    Default More on Exidy Sorcerer disk images.

    Hi folks,

    Yesterday I successfully transferred a disk image from my Sorcerer to a PC then back again onto a new disk so at last I have duplicates of my Lifeboat CP/M 2.2 disk, the original hard sectored version of which started failing on thursday night. I also duplicated my Utilities disk which contains STERM, XMODEM and the utility that's currently doing all the hard work, Dave Dunfield's CPT.

    Fortunately when my Virtual Sector Generator arrived (and I assembled it) that CP/M disk was the first thing I copied once I'd found a 1.2MB floppy drive that would work with the Sorcerer, for the record that's currently a Mitsubishi MF504C.

    Today I decided to write a utility that would deconstruct the CPT format and hopefully give me an image that I can use with cpmtools. I can now get the following output from a CPT image:

    Code:
    COMMENT: CPT: Jan 11, 2019
    
    Lifeboat CP/M 2.2 Sorcerer XLT S=0
    
    
    DPH: 22 B8 21 00 00 00 00 00 C1 B8 95 B8 67 B9 41 B9
    DPB: 20 00 04 0F 00 95 00 7F 00 C0 00 10 00 02 00
    SPT: 32
    START: 0
    LAST: 77
    X: 01
    FLAG: XLT for ALL tracks
    TRACK: 0 SECTOR: 0
    00 31 97 02 21 00 02 19   22 a2 00 21 fd 00 19 22 |.1..!..."..!..."|
    c5 01 21 00 9a 22 6d 02   3e 55 32 40 00 21 03 0f |..!.."m.>U2@.!..|
    cd b4 01 2a a2 00 36 61   1e 28 cd ff 01 21 00 10 |...*..6a.(...!..|
    cd b4 01 3e 47 32 40 00   31 00 01 2a a2 00 22 00 |...>G2@.1..*..".|
    b8 21 00 00 22 bf b8 c3   00 b0 22 6b 02 06 0a c5 |.!.."....."k....|
    21 6b 02 e5 46 0e 86 11   97 02 cd 00 00 e1 c1 ca |!k..F...........|
    d3 01 05 c2 b9 01 c3 f7   01 e5 11 98 02 1a be c2 |................|
    f7 01 2a 6d 02 eb 21 a3   02 cd 15 02 eb 22 6d 02 |..*m..!......"m.|
    
    
    TRACK: 0 SECTOR: 1
    e1 7e c6 03 e6 0f 77 23   35 c2 b9 01 c9 2a a2 00 |.~....w#5....*..|
    11 00 fe 19 e9 7e e6 20   3e 60 c2 08 02 07 47 78 |.....~. >`....Gx|
    d6 01 b7 c2 0a 02 1d c2   09 02 c9 06 00 7e 12 1a |.............~..|
    be c2 25 02 23 13 05 c2   17 02 c9 eb 22 41 00 3e |..%.#......."A.>|
    4d 32 40 00 c3 2e 02 00   00 00 00 00 00 00 00 00 |M2@.............|
    00 00 00 00 00 00 00 00   00 00 00 00 00 00 00 00 |................|
    00 00 00 00 00 00 00 00   00 00 00 00 00 00 00 00 |................|
    00 00 00 00 00 00 00 00   00 00 00 00 00 00 00 5f |..............._|
    
    
    TRACK: 0 SECTOR: 2
    01 9a cd d5 9b c3 86 a1   4e 4f 20 53 50 41 43 45 |........NO SPACE|
    00 cd 5e 9c c2 09 9c 3a   f0 a1 f5 cd 54 9e cd e9 |..^....:....T...|
    9a c2 79 a0 21 cd a1 11   dd a1 06 10 cd 42 9e 2a |..y.!........B.*|
    88 9a eb cd 4f 9c fe 3d   ca 3f a0 fe 5f c2 73 a0 |....O..=.?.._.s.|
    Thanks to @flibbledeedoo I also discovered as many details about the Sorcerer format that I thought I'd need:

    sorcererDiskFormat.jpg

    but feeding those fields into diskdefs on my linux box fails to decode the image. Further reading brought up this Skew table for the Sorcerer:

    sorcererDiskSkew.jpg

    Adding that to diskdefs upsets cpmtools no end:

    Code:
    cpmls: cpmfs.c:344: readBlock: Assertion `d->skewtab[sect]<d->sectrk' failed.Aborted
    This is my current diskdefs for that image:

    Code:
    # Sorcerer CPT image 5.25" SS DD 77T
    diskdef cpt1
    tracks 77
    seclen 128
    sectrk 32
    blocksize 2048
    maxdir 128
    skewtab 11,12,21,22,31,32,9,10,19,20,29,30,7,8,17,18,27,28,5,6,15,16,25,26,3,4,13,14,23,24,1,2
    boottrk 2
    os 2.2
    end
    Time to sleep on it I think!

    If anyone else wants a go the image is here: http://binarydinosaurs.co.uk/cpm.dsk
    www.binarydinosaurs.co.uk - UK home computer history
    Where RIFA capacitors come to die
    facebook.com/binarydinosaurs

  2. #2
    Join Date
    Mar 2013
    Location
    Chaffee, MO
    Posts
    1,018

    Default

    Witchy,
    I took a quick look and it looks like your directory is starting one byte late. Typical Directory entries are at 0x2000.

    I use this command to look at your file:
    Code:
    hexedit witchcpm.dsk
    Code:
    00002000   02 00 53 59  53 47 45 4E  20 20 43 4F  4D 00 00 00  ..SYSGEN  COM...
    00002010   0C 02 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
    00002020   00 00 4D 4F  56 43 50 4D  20 20 43 4F  4D 00 00 00  ..MOVCPM  COM...
    00002030   58 03 04 05  06 07 08 00  00 00 00 00  00 00 00 00  X...............
    00002040   00 00 43 4F  4E 46 49 47  20 20 43 4F  4D 00 00 00  ..CONFIG  COM...
    00002050   30 09 0A 0B  00 00 00 00  00 00 00 00  00 00 00 00  0...............
    So I used dd to trim a byte (first byte in file was 0x00.
    Code:
    dd if=witchcpm.dsk bs=1 skip=1 of=witcpm1.dsk
    Code:
    00002000   00 53 59 53  47 45 4E 20  20 43 4F 4D  00 00 00 0C  .SYSGEN  COM....
    00002010   02 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
    00002020   00 4D 4F 56  43 50 4D 20  20 43 4F 4D  00 00 00 58  .MOVCPM  COM...X
    00002030   03 04 05 06  07 08 00 00  00 00 00 00  00 00 00 00  ................
    00002040   00 43 4F 4E  46 49 47 20  20 43 4F 4D  00 00 00 30  .CONFIG  COM...0
    00002050   09 0A 0B 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
    00002060   00 41 53 4D  20 20 20 20  20 C3 4F 4D  00 00 00 40  .ASM     .OM...@
    00002070   0C 0D 0E 0F  00 00 00 00  00 00 00 00  00 00 00 00  ................
    00002080   00 44 44 54  20 20 20 20  20 43 4F 4D  00 00 00 26  .DDT     COM...&
    00002090   10 11 12 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
    000020A0   00 44 55 4D  50 20 20 20  20 43 4F 4D  00 00 00 04  .DUMP    COM....
    000020B0   13 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
    000020C0   00 45 44 20  20 20 20 20  20 43 4F 4D  00 00 00 34  .ED      COM...4
    000020D0   14 15 16 17  00 00 00 00  00 00 00 00  00 00 00 00  ................
    000020E0   00 4C 4F 41  44 20 20 20  20 43 4F 4D  00 00 00 0E  .LOAD    COM....
    000020F0   18 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
    00002100   00 50 49 50  20 20 20 20  20 43 4F 4D  00 00 00 3A  .PIP     COM...:
    with these definitions I can get a good directory listing.
    Code:
    # Exidy Sorcerer - SS/DD, ie: 8" - 128 x 26
    # 77 tracks, 1 sides, 16 sectors/track, 256 bytes/sector
    # Bytes on the media = 1*77*16*256 = 315392
    #
    # EXI2  Exidy Sorcerer - SSDD 8" - 256 x 16
    diskdef exi2
      seclen 256
      tracks 77
      sectrk 16
      blocksize 2048
      maxdir 64
    #  datarate DD       #= Density SD, DD, HD, or ED
    #  fm NO             #= Format YES = FM, or NO = MFM
      datarate HD
      fm YES 
      skew 5
    # offset 8192       # 0x2000 = 8192
      boottrk 2
      os 2.2
    end
    
    
    # libdsk data below
    [exi2]
    description = EXI2  Exidy Sorcerer - SSDD 8" - 256 x 16
    cylinders = 77
    heads = 1
    secsize = 256
    sectors = 16
    secbase = 1
    datarate = HD
    Code:
    cpmls -f exi2 -D witcpm1.dsk
    cpmls -f exi2 -T raw,exi2 -D witcpm1.dsk
    Code:
         Name    Bytes   Recs  Attr     update             create
    ------------ ------ ------ ---- -----------------  -----------------
    ASM     .COM     8K     64 R  
    AUXDCPM .HEX     2K      1    
    CONFIG  .COM     6K     48    
    CPM47   .COM    10K     80    
    DDT     .COM     6K     38    
    DUMP    .COM     2K      4    
    ED      .COM     8K     52    
    EXBASIC .COM    24K    190    
    FOO     .        2K      1    
    LOAD    .COM     2K     14    
    MOVCPM  .COM    12K     88    
    SORC    .DOC     2K      9    
    SYSGEN  .COM     2K     12    
    W       .        2K      1    
    XMODEM  .$$$     2K      1    
    ZSID    .COM    10K     80    
       16 Files occupying     92K,     206K Free.
    I'm assuming the remainder of the file is in correct order and files extract properly, but I didn't try this.
    I know it has worked before on the CPMdisk.raw file I have tested with.

    Thanks.

    Larry

  3. #3

    Default

    YES!

    Well spotted Larry, my code for extracting the image data missed a byte on something called 'X' which I'd guessed on how big it was based on other fields.

    diskdefs needs to be this:

    Code:
    # Sorcerer CPT image 5.25" SS DD 77Tdiskdef cpt1
    tracks 77
    seclen 256
    sectrk 16
    blocksize 2048
    maxdir 128
    #skewtab 11,12,21,22,31,32,9,10,19,20,29,30,7,8,17,18,27,28,5,6,15,16,25,26,3,4,13,14,23,24,1,2
    skew 1
    boottrk 2
    os 2.2
    end
    and I can now get listings and pull out (at least) text files - CPM 2.2 Disk:

    Code:
         Name    Bytes   Recs  Attr     update             create
    ------------ ------ ------ ---- -----------------  -----------------
    ASM     .COM     8K     64 R  
    AUXDCPM .HEX     2K      1    
    CONFIG  .COM     6K     48    
    COPY    .COM     4K     32    
    CPM32   .COM    10K     80    
    CPM47   .COM    10K     80    
    CPM55   .COM    10K     80    
    DDT     .COM     6K     38    
    DUMP    .ASM     6K     33    
    DUMP    .COM     2K      4    
    ED      .COM     8K     52    
    EXBASIC .COM    24K    190    
    FILECOPY.COM     2K      7    
    FOO     .        2K      1    
    LOAD    .COM     2K     14    
    MEMR    .COM     4K     18    
    MEMR    .DOC    10K     67    
    MOVCPM  .COM    12K     88    
    PIP     .COM     8K     58    
    READ-ME .DOC     2K      9    
    SAVEUSER.COM     2K      6    
    SETCPM  .COM     2K     12    
    SORC    .DOC     2K      9    
    SORCUSER.ASM    10K     65    
    STAT    .COM     6K     41    
    SUBMIT  .COM     2K     10    
    SYSGEN  .COM     2K     12    
    USER    .ASM    12K     81    
    W       .        2K      1    
    XMODEM  .$$$     2K      1    
    XSUB    .COM     2K      6    
    ZSID    .COM    10K     80    
       32 Files occupying    184K,     112K Free.

    Utilities disk:

    Code:
         Name    Bytes   Recs  Attr     update             create
    ------------ ------ ------ ---- -----------------  -----------------
    CPM47   .COM    10K     80    
    CPT     .COM     2K      5    
    CPT     .HEX     2K     11    
    DATAPRIN.COM     6K     34    
    DDT     .COM     6K     38    
    DPB     .COM     2K      7    
    DPB     .HEX     4K     18    
    FIREL   .COM     2K     16    
    FLOP2PC .COM     4K     19    
    HOUNDS  .COM     4K     28    
    PLOTTER .COM     2K      8    
    PRINDATA.WPF     4K     19    
    R-BYTES .WPF     4K     20    
    RBEXT   .COM     4K     28    
    ROMJUMP .COM     2K      2    
    SCREEN  .COM     2K      6    
    SOLITA47.COM     8K     60    
    SPRINT  .COM     2K      2    
    STERM   .COM    14K    104    
    STERM12 .COM    14K    110    
    SURROU47.COM     8K     64    
    XDIR    .COM     2K      3    
    XMODEM  .CFG     2K      1    
    XMODEM  .COM     4K     32    
    XMODEM  .HEX    12K     90    
       25 Files occupying    126K,     170K Free.
    and just for giggles I pulled SORCUSER.ASM off the CP/M disk:

    Code:
    
    ;SORCERER VERSION 1.0
    
    
    ;USER AREA for CP/M2 on Micropolis
    ;Version 3.4 of Oct 7, 1980
    
    
    ;Copyright (C) 1980 Lifeboat Associates
    
    
    ;This USER AREA is identical to that produced by
    ;CONFIG.COM Ver 3.x using configurations 0 thru 8.
    
    
    ;It may be used as is or as a prototype for
    ;your own drivers.  Two pages (512 bytes) are
    ;available for your custom I/O routines.
    
    
    ;The USER AREA contains a standard CONSOLE driver
    ;and a PRINTER driver with a choice of handshaking.
    ;Handshaking may be ETX/ACK, XON/XOFF or NONE.
    ;Printer may send 0-256 nulls after carrige return.
    ;The PUNCH and READER routines go to the console.
    
    
    ;The specific console ports and initialization strings
    ;will depend on the terminal number selected.
    ;Terminals 0 thru 7 are for specific I/O boards.
    
    
    ;CONFIG terminal #8 will configure for non standard
    ;console ports when the values for equates "1" thru "8"
    ;are placed in the data table at 130H together with
    ;initialization string if needed at "S" and length at "L".
    
    
    ;Type "CONFIG P<cr>" and answer console questions to
    ;install printer equates "9" thru "J" and init string "S".
    
    
    
    
    ;Change MSIZE to the desired CP/M memory size in K.
    MSIZE   EQU     47              ;Distribution size
    
    
    sorcuser.asm
    11:30 is a bit early for a beer but **** it, I've been trying to get this running for 6 weeks

    Thanks Larry!
    www.binarydinosaurs.co.uk - UK home computer history
    Where RIFA capacitors come to die
    facebook.com/binarydinosaurs

  4. #4

    Default

    Tonight while experimenting on files @exidyboy has extracted I needed a copy of DUMP.COM in the MyZ80 CP/M emulator I use for compiling etc. Rather than download one from the CP/M archive I went over to the linux box holding my Sorcerer images and with cpmtools pulled a version out of the CP/M 2.2 boot disk. Various file transfers got it onto to the Win7 virtual machine running MyZ80 and after a quick import it ran OK

    This makes me very happy indeed, though I suspect there's only 2 others currently in the world who will be impressed.
    www.binarydinosaurs.co.uk - UK home computer history
    Where RIFA capacitors come to die
    facebook.com/binarydinosaurs

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •