• Please review our updated Terms and Rules here

CPMTools help for 8" Jade DD disks

ChickenMan

Experienced Member
Joined
Apr 11, 2011
Messages
91
Location
Victoria, Australia
A friend has imaged a few hundred 8" disks recently using a Greasweazle with reasonable success. Many were Pulsar CP/M disks which I already had a diskdef entry (same as the 5.25" disks) for them and all files extract clean. Some were Pulsar TurboDOS disk and I was able built a diskdef entry for these to allow extraction of the files. Some disks were marked Versafloppy II and these turned out to be in IBM-3740 format, so files easily extracted.

However, some were single or double sided Jade DD disks which we have very little information about them and at this stage have been unable to get a working diskdef entry to even get a directory of files up, let alone extract anything. The GW hfe file was converted using HxC to an IMG (raw sector file) and viewing in a hex editor a directory of files etc can be seen.

Using HxC Track analyser it indicates the Double sided disks are 77 track but first track is FM and the rest MFM. First track has 26 sectors of 128b/sector. Other 76 tracks are 50 sectors/track also 128b/sector.

The best I have come up with is

# Jade DD 8" 77T (8" DS DD 77T 26x128 & 50x128 s/t)
diskdef jadedd
seclen 128
tracks 154 # 77 x heads
sectrk 50
heads 2
blocksize 2048
maxdir 128
skew 0
datarate DD
boottrk 1
os 2.2
end

but crashes cpmtools try to get a directory list. I tried different blocksize & maxdir as well as 77 tracks but little change. HxC images look like

Jade_DD_Double_sided.jpg

Then there are single sided Jade DD disks that appear to have 117 tracks or 50 sectors and 128b/sector.

Jade_DD_Single_sided.jpg

I've attached a single sided and double sided Jade image. Any help or suggestions to resolve this issues would be greatly appreciated.

Thanks, Alan
 

Attachments

  • jade_dd_raw_images.zip
    433.3 KB · Views: 3
A CPMTools diskdefs file I have includes the following Jade 8" definition. Hopefully this may provide some clues.

SYSTEM JAD1 Jade - SSDD 8" - 128 x 48

# JAD1 Jade - SSDD 8" - 128 x 48
diskdef jad1
seclen 128
tracks 77
sectrk 48
blocksize 2048
maxdir 64
skew 1
boottrk 2
os 2.2
end

# libdsk
[jad1]
description = JAD1 Jade - SSDD 8" - 128 x 48
cylinders = 77
heads = 1
secsize = 128
sectors = 48
secbase = 1
datarate = ED

# flashfloppy/GOTEK
[jad1]
cyls = 77
heads = 1
secs = 48
interleave = 1
bps = 128
id = 1
rpm = 360
#rpm = 300
rate = 250
mode = mfm
iam = no
 
I've downloaded your ZIP file with the two images. I'm not sure what method you used
to create the image, but the Directory isn't at Track 2 (0,1,Dir) as a normal image should be.
I just modified the cpmtools definition to point to 0x2600=9728 Decimal. That allows
you to extract sane files from the image.



Original size of Image was:

489728 Feb 14 00:11 jade_268_ss.img


CP/M Definitions:
SYSTEM JAD1 Jade - SSDD 8" - 128 x 48

# JAD1 Jade - SSDD 8" - 128 x 48
diskdef jad1
seclen 128
tracks 77
sectrk 48
blocksize 2048
maxdir 64
skew 1
# boottrk 2
#modified for jade_268_ss.img to point to 0x2600
offset 9728
boottrk 0
os 2.2
end

# libdsk
[jad1]
description = JAD1 Jade - SSDD 8" - 128 x 48
cylinders = 77
heads = 1
secsize = 128
sectors = 48
secbase = 1
datarate = ED

# flashfloppy/GOTEK
[jad1]
cyls = 77
heads = 1
secs = 48
interleave = 1
bps = 128
id = 1
rpm = 360
#rpm = 300
rate = 250
mode = mfm
iam = no


Code:
Directory starts at 0x2600 = 9728 Decimal = not on track 2???
00002600   00 53 54 41  54 20 20 20  20 43 4F 4D  00 00 00 2A  .STAT    COM...*
00002610   01 02 03 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
00002620   00 50 49 50  20 20 20 20  20 43 4F 4D  00 00 00 3A  .PIP     COM...:
00002630   04 05 06 07  00 00 00 00  00 00 00 00  00 00 00 00  ................
00002640   00 44 44 54  20 20 20 20  20 43 4F 4D  00 00 00 26  .DDT     COM...&
00002650   08 09 0A 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
00002660   00 4C 49 53  54 20 20 20  20 43 4F 4D  00 00 00 0B  .LIST    COM....
00002670   0B 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
00002680   00 2D 56 45  52 53 41 46  32 31 31 31  00 00 00 00  .-VERSAF2111....
00002690   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
000026A0   00 45 44 49  54 20 20 20  20 43 4F 4D  00 00 00 4C  .EDIT    COM...L
000026B0   0C 0D 0E 0F  10 00 00 00  00 00 00 00  00 00 00 00  ................
000026C0   00 45 44 49  54 20 20 20  20 48 4C 50  00 00 00 1A  .EDIT    HLP....
000026D0   11 12 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
000026E0   00 56 4D 4F  4E 49 20 20  20 20 20 20  00 00 00 50  .VMONI      ...P
000026F0   13 14 15 16  17 00 00 00  00 00 00 00  00 00 00 00  ................
00002700   00 56 45 52  53 41 32 50  20 20 20 20  01 00 00 16  .VERSA2P    ....
00002710   1D 1E 1F 20  21 22 23 24  25 26 00 00  00 00 00 00  ... !"#$%&......
00002720   00 4C 38 30  20 20 20 20  20 43 4F 4D  00 00 00 4A  .L80     COM...J
00002730   18 19 1A 1B  2E 00 00 00  00 00 00 00  00 00 00 00  ................
00002740   00 56 43 4F  4E 53 20 20  20 20 20 20  00 00 00 3C  .VCONS      ...<
00002750   1C 27 28 29  00 00 00 00  00 00 00 00  00 00 00 00  .'()............


$ cpmls -f jad1 -D jade_268_ss.img
     Name    Bytes   Recs  Attr     update             create
------------ ------ ------ ---- -----------------  -----------------
-VERSAF2.111     0K      0    
BELLCHAR.ASM    10K     76    
BELLCHAR.HEX     6K     46    
BELLCRT .ABS     2K     15    
BELLCRT .COM     2K     15    
BIOS-NG .       18K    132    
BIOS22D1.ASM    16K    120    
BOOT-NG .        2K      9    
COMPARE .COM     2K      8    
CPM     .DOC     4K     24    
CPM58   .COM    10K     72    
DDT     .COM     6K     38    
EDIT    .COM    10K     76    
EDIT    .HLP     4K     26    
FMAT-NG .        2K     12    
L80     .COM    10K     74    
LIST    .COM     2K     11    
MAC     .COM    12K     92    
MOVCPMV2.COM    12K     82    
PIP     .COM     8K     58    
STAT    .COM     6K     42    
SYSGENV2.COM     2K      8    
V2FORMAT.COM     2K      4    
VCONS   .        8K     60    
VCONS   .ORG     8K     64    
VDIAG   .        6K     48    
VERSA2P .       20K    150    
VFD     .OLD    20K    160    
VFMAT   .       10K     80    
VFORMAT .COM     2K      4    
VMONI   .       10K     80    
   31 Files occupying    232K,     228K Free.


$ cpmcp -f jad1 jade_268_ss.img 0:BIOS22D1.asm .

BIOS22D1.ASM extracts SANE

Looking at the second image.......

Larry
 

Attachments

  • bios22d1-asm.txt
    15 KB · Views: 0
Thanks for that, tried it but still no go unfortunately, all I get is the top header line and some garbage that hangs Windows and I cant even do a screen dump The start of the single sided IMG file has some text that reads

Jade DD S Sided D Density Format2

so I suspect there is a Format 1 also that I assume the above is for that. I added "heads 1" and no change occurred. Changed 48 to 50 and all I now get is the header and no garbage but still hangs.

Page 4 of the Jade manual at https://archive.org/details/bitsavers_jadedouble_6605774 describes the disk layout for track 0 and 1 but suspect thats for the double sided disks.

Will look further tomorrow, its bed time for me now.
 
I had no problems reading the Jade disks with 22Disk (in case you were wondering where the original definition came from). The only gotcha is that you have to have a controller (e.g. National DP8473) that can handle 128-byte MFM sectoring.
Code:
BEGIN  JAD1 - Jade SSDD 8"
DENSITY MFM,HIGH
CYLINDERS 77 SIDES 1 SECTORS 48,128
SIDE1 0 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,
 25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48
BSH 4 BLM 15 EXM 1 DSM 225 DRM 63 AL0 080H AL1 0 OFS 2
END
 
dumb question but when people refer to such "mixed density" disks where track 0 is FM - does this apply to both sides of track 0 on a double sided disk? or is it just t0 h0?
 
There's no hard-and-fast rule, but the general trend is just for the first track/side. Useful in case of systems that were shipped in FM and MFM variants. You could always read the first track and tell the user that he's got the wrong disk type.
 
Thanks ldkraemer & Chuck, that cpmtools JAD1 def is working great, many thanks. Once extracted, all the text files read correctly and all the COM files run on my Microbee under CP/M 2.2

Now, for the Double sided disks, I changed JAD1 to a JAD2 and mad a couple of changes. I get a nice directory up, but extracts are not clean, text files wrong and COM file are empty or simply dont run on my Microbee. Changed "heads" to 2 and maxdir to double 64. Have changed skew from 0 to 4 and some hang but still nothing working for the extracts. Does anyone have a cpmtools Def entry for a DS Jade disk ?

# JAD2 Jade - DSDD 8" - 128 x 48
diskdef jad2
seclen 128
tracks 77
sectrk 48
heads 2
blocksize 2048
maxdir 128
skew 1
offset 9728
boottrk 0
os 2.2
end
 
Reading the HxC pic of the DS disk above, the sectors on side 0 are numbered 1,11,21,31,41,2,12,22,32,42,3,13,23,33,43,4,14,24,34,44,5,15,25,35,45,6,16,26,36,46,7,17,27,37,47,8,18,28,38,48,9,19,29,39,49,10,20,30,40,50
so replaced skew 1
skewtab 1,11,21,31,41,2,12,22,32,42,3,13,23,33,43,4,14,24,34,44,5,15,25,35,45,6,16,26,36,46,7,17,27,37,47,8,18,28,38,48,9,19,29,39,49,10,20,30,40,50
but now I get this error

Assertion failed: d->skewtab[sect]<d-sectrk, file cpmfs.c, line 349

It also does something to the *.IMG file that it no longer is able to be loaded into HxC :(
 
You want to check your work? The IMD shows that the cylinder IDs line up on side 0, but are off-by-1 on side 1. In other words, C5/H0/S1 on one side and C6/H0/S1 on the other side. If that's really the case, it falls into the "so bizarre that we don't know what to do with it" category.

Oh, and the physical interleave is 1:1 not the same as the logical interleave. You've got PI set to LI, which is nonsensical.

Really, you should create the IMD using regular FDC, because that's how it's being read.
 
You want to check your work? The IMD shows that the cylinder IDs line up on side 0, but are off-by-1 on side 1. In other words, C5/H0/S1 on one side and C6/H0/S1 on the other side. If that's really the case, it falls into the "so bizarre that we don't know what to do with it" category.

Oh, and the physical interleave is 1:1 not the same as the logical interleave. You've got PI set to LI, which is nonsensical.

Really, you should create the IMD using regular FDC, because that's how it's being read.
Thanks Chuck.

These are actually my disks. They are part of a collection of over 500 of various formats that i've been imaged over the last few weeks. Mr ChickenMan has kindly been helping me extract files from them.

This does seem to be an unusual format. The sector headers have tracks numbered 0 to 153 with even numbers on Side 0 and odd numbers on Side 1. I have attempted to read the disk using ImageDisk (using an FM friendly FDC) but it stops at the second track with a seek error. I'm thinking that it's expecting to see a Track 1 on Side 0 but it's single step in gives it Track 2 ie the second even numbered track. Perhaps there's a setting to deal with that.

Running the alignment imagedisk utility shows the same thing - all good on Track 0, step-in one step and it gets Track 2 - change the head to Head 1 and then it gets track 1.

Track 0 is FM. Tracks 1 to 153 are MFM. The original SCP from greaseweazle shows the same weird track numbering in the sector headers so the story seems consistent.
 
PART 1 of 3

Try these definitions and see if they work for you.

For Original file -- 08_270_01_imd.img:

Track 0 is 26 Sectors of 128 bytes = 3328 Decimal bytes.
Remaining tracks are 50 Sectors of 128 bytes = 6400 Decimal bytes = 0x1900 bytes per track

Original file has the directory at 0x2600:
Code:
Directory is at 0x2600 = 9728 Decimal 
00002600   00 53 54 41  54 20 20 20  20 43 4F 4D  00 00 00 29  .STAT    COM...)
00002610   01 02 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
00002620   00 50 49 50  20 20 20 20  20 43 4F 4D  00 00 00 3A  .PIP     COM...:
00002630   03 04 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
00002640   00 44 44 54  20 20 20 20  20 43 4F 4D  00 00 00 26  .DDT     COM...&
00002650   05 06 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
00002660   00 47 4F 54  4F 20 20 20  20 43 4F 4D  00 00 00 02  .GOTO    COM....
00002670   07 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
00002680   00 42 45 4C  4C 43 48 41  52 41 53 4D  00 00 00 4C  .BELLCHARASM...L
00002690   08 09 0A 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
000026A0   00 52 45 43  4F 52 44 20  20 31 20 20  00 00 00 05  .RECORD  1  ....
000026B0   0B 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
000026C0   00 58 54 42  41 53 49 43  20 41 53 4D  02 00 00 72  .XTBASIC ASM...r
000026D0   12 13 14 15  16 17 18 19  1A 1B 1C 1D  00 00 00 00  ................
000026E0   00 4C 4F 41  44 20 20 20  20 43 4F 4D  00 00 00 1D  .LOAD    COM....
000026F0   1E 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
00002700   00 49 44 49  52 20 20 20  20 43 4F 4D  00 00 00 08  .IDIR    COM....
00002710   1F 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
00002720   00 49 43 4F  50 59 20 20  20 43 4F 4D  00 00 00 12  .ICOPY   COM....
00002730   20 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00   ...............
00002740   00 49 57 52  49 54 45 20  20 43 4F 4D  00 00 00 12  .IWRITE  COM....
00002750   21 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  !...............
00002760   00 44 55 4D  50 32 32 20  20 43 4F 4D  00 00 00 24  .DUMP22  COM...$

Skip the first odd size track, and get the data. Rename the file to 8_270_01_imd_1.raw
Code:
$ dd if=8_270_01_imd.img bs=1 skip=3328 of=8_270_01_imd_1.raw conv=notrunc

New file 8_270_01_imd_1.raw, and the new Directory location:
Code:
Modified Directory is at 0x1900 = 6400 Decimal
00001900   00 53 54 41  54 20 20 20  20 43 4F 4D  00 00 00 29  .STAT    COM...)
00001910   01 02 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
00001920   00 50 49 50  20 20 20 20  20 43 4F 4D  00 00 00 3A  .PIP     COM...:
00001930   03 04 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
00001940   00 44 44 54  20 20 20 20  20 43 4F 4D  00 00 00 26  .DDT     COM...&
00001950   05 06 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
00001960   00 47 4F 54  4F 20 20 20  20 43 4F 4D  00 00 00 02  .GOTO    COM....
00001970   07 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
00001980   00 42 45 4C  4C 43 48 41  52 41 53 4D  00 00 00 4C  .BELLCHARASM...L
00001990   08 09 0A 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
000019A0   00 52 45 43  4F 52 44 20  20 31 20 20  00 00 00 05  .RECORD  1  ....
000019B0   0B 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
000019C0   00 58 54 42  41 53 49 43  20 41 53 4D  02 00 00 72  .XTBASIC ASM...r
000019D0   12 13 14 15  16 17 18 19  1A 1B 1C 1D  00 00 00 00  ................
000019E0   00 4C 4F 41  44 20 20 20  20 43 4F 4D  00 00 00 1D  .LOAD    COM....
000019F0   1E 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
00001A00   00 49 44 49  52 20 20 20  20 43 4F 4D  00 00 00 08  .IDIR    COM....
00001A10   1F 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
00001A20   00 49 43 4F  50 59 20 20  20 43 4F 4D  00 00 00 12  .ICOPY   COM....
00001A30   20 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00   ...............
00001A40   00 49 57 52  49 54 45 20  20 43 4F 4D  00 00 00 12  .IWRITE  COM....
00001A50   21 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  !...............

cpmtools & libdsk definitions:
Code:
# JAD2  Jade - DSDD 8" - 128 x 50
diskdef jad2
  seclen 128
  tracks 154
  sectrk 50
  blocksize 4096
  maxdir 64
  skew 1
  offset 6400
  boottrk 0
  os 2.2
end

[jad2]
description = JAD2  Jade - DSDD 8" - 128 x 50
sides = alt
cylinders = 154
heads = 2
secsize = 128
sectors = 50
secbase = 1
datarate = ED

Get a directory listing:
Code:
$ cpmls -f jad2 -D 8_270_01_imd_1.raw
$ cpmls -f jad2 -Traw,jad2 -D 8_270_01_imd_1.raw

Code:
     Name    Bytes   Recs  Attr     update             create
------------ ------ ------ ---- -----------------  -----------------
-JADE$DD.412     0K      0    
ASMB    .COM    12K     96    
BELLCHAR.ASM    12K     76    
COMPARE .COM     4K      7    
DDT     .COM     8K     38    
DUMP22  .COM     8K     36    
ED80    .CMD     4K      6    
ED80    .COM    12K     76    
ED80    .HLP     4K     21    
EDIT    .COM    12K     76    
EDIT    .HLP     4K     25    
FINDDOS .COM     4K      4    
FLIGHT  .COM    24K    184    
FORMAT  .COM     4K     22    
GOTO    .COM     4K      2    
ICOPY   .COM     4K     18    
IDIR    .COM     4K      8    
INVADERS.ASM    36K    279    
IWRITE  .COM     4K     18    
L80     .COM    12K     70    
LIST    .COM     4K     12    
LOAD    .COM     4K     29    
M80     .COM    20K    143    
MAC     .COM    12K     92    
MBOOT   .SRC    24K    185    
MON115  .SC1    20K    159    
MON115  .SC2    24K    185    
MON115  .SRC    28K    218    
MONITOR .ASM    16K    116    
MYCHESS .COM    32K    236    
PACMAN  .COM    24K    168    
PACMAN  .DOC     4K     15    
PIP     .COM     8K     58    
RECORD  .1       4K      5    
SSUB    .COM     4K     16    
STAT    .COM     8K     41    
SWEEP   .COM    20K    154    
TEST48  .ASM     4K     31    
V2BIOS  .REL     4K     18    
V2BIOS  .Z80    32K    236    
XASM48  .COM    12K     94    
XTBASIC .ASM    48K    370    
Z80     .LIB    12K     78    
ZASM    .COM    12K     86    
   44 Files occupying    556K,     400K Free.

Directory is SANE!


Larry
 
PART 2 of 3

Let's extract BELLCHAR.ASM:
Code:
$ cpmcp -f jad2 8_270_01_imd_1.raw 0:BELLCHAR.ASM .
$ cpmcp -f jad2 -Traw,jad2 8_270_01_imd_1.raw 0:BELLCHAR.ASM .

BELLCHAR.ASM is SANE!


Larry
 

Attachments

  • bellcharasm.txt
    9.5 KB · Views: 0
Part 3 of 3

Now, extract TEST48.ASM:
Code:
$ cpmcp -f jad2 8_270_01_imd_1.raw 0:TEST48.ASM .
$ cpmcp -f jad2 -Traw,jad2 8_270_01_imd_1.raw 0:TEST48.ASM .

It is also SANE!

Code:
;
; TEST FILE FOR 8048 CROSS ASSEMBLER    7 May 1980
;


    ORG    100H
    WIDTH    80
GRINCH    EQU    5

    ADD    A,R0    
    ADD    A,R1
    ADD    A,R2
    ADD    A,R3
    ADD    A,R4
    ADD    A,R5
    ADD    A,R6
    ADD    A,R7

    ADD    A,@R0    
    ADD    A,@R1

    ADD    A,#GRINCH

    ADDC    A,R0
    ADDC    A,R1
    ADDC    A,R2
    ADDC    A,R3
    ADDC    A,R4
    ADDC    A,R5
    ADDC    A,R6
    ADDC    A,R7

    ADDC    A,@R0
    ADDC    A,@R1

    ADDC    A,#GRINCH

    ANL    A,R0    
    ANL    A,R1
    ANL    A,R2
    ANL    A,R3
    ANL    A,R4
    ANL    A,R5
    ANL    A,R6
    ANL    A,R7

    ANL    A,@R0
    ANL    A,@R1

    ANL    A,#GRINCH

    ANL    BUS,#17H    ;Not in 8041/41A, 8021, 8022
    ANL    P1,#GRINCH    ;Not in 8021, 8022
    ANL    P2,#GRINCH    ;Not in 8021, 8022

ADDR1:    ANLD    P4,A
    ANLD    P5,A
    ANLD    P6,A
    ANLD    P7,A

    CALL    ADDR1

    CLR    A
    CLR    C
    CLR    F0        ;Not in 8021, 8022
    CLR    F1        ;Not in 8021, 8022

    CPL    A
    CPL    C
    CPL    F0        ;Not in 8021, 8022
    CPL    F1        ;Not in 8021, 8022

    DA    A

    DEC    A

    DEC    R0        ;DEC Rr not in 8021, 8022
    DEC    R1
    DEC    R2
    DEC    R3
    DEC    R4
    DEC    R5
    DEC    R6
    DEC    R7

    DIS    I        ;Not in 8021
    DIS    TCNTI        ;Not in 8021

ADDR2:    DJNZ    R0,ADDR2
    DJNZ    R1,ADDR2
    DJNZ    R2,ADDR2
    DJNZ    R3,ADDR2
    DJNZ    R4,ADDR2
    DJNZ    R5,ADDR2
    DJNZ    R6,ADDR2
    DJNZ    R7,ADDR2

    EN    DMA        ;8041A only
    EN    FLAGS        ;8041A only
    EN    I        ;Not in 8021
    EN    TCNTI
    ENT0    CLK        ;Not in 8041/41A, 8022, 8021

    IN    A,P0        ;8021,8022 only
    IN    A,P1
    IN    A,P2
    IN    A,DBB        ;8041/41A only

    INC    A
    INC    R0
    INC    R1
    INC    R2
    INC    R3
    INC    R4
    INC    R5
    INC    R6
    INC    R7

    INC    @R0
    INC    @R1

    INS    A,BUS        ;Not in 8041/41A, 8022, 8021

    JB0    ADDR2        ;JBb not in 8022, 8021
    JB1    ADDR2
    JB2    ADDR2
    JB3    ADDR2
    JB4    ADDR2
    JB5    ADDR2
    JB6    ADDR2
    JB7    ADDR2

    JC    ADDR2
    JF0    ADDR2        ;Not in 8022, 8021
    JF1    ADDR2        ;Not in 8022, 8021
    
    JMP    ADDR1
    JMPP    @A

ADDR3:    JNC    ADDR3
    JNI    ADDR3        ;Not in 8041/41A, 8022, 8021
    JNT0    ADDR3        ;Not in 8021
    JNT1    ADDR3
    JNZ    ADDR3
    JTF    ADDR3
    JT0    ADDR3        ;Not in 8021
    JT1    ADDR3
    JZ    ADDR3
    JNIBF    ADDR3        ;8041/41A only
    JOBF    ADDR3        ;8041/41A only

    MOV    A,#7FH
    MOV    A,PSW        ;Not in 8022, 8021

    MOV    A,R0
    MOV    A,R1
    MOV    A,R2
    MOV    A,R3
    MOV    A,R4
    MOV    A,R5
    MOV    A,R6
    MOV    A,R7

    MOV    A,@R0
    MOV    A,@R1
    MOV    A,T
    MOV    PSW,A        ;Not in 8022, 8021
    MOV    STS,A        ;8041A only

    MOV    R0,A
    MOV    R1,A
    MOV    R2,A
    MOV    R3,A
    MOV    R4,A
    MOV    R5,A
    MOV    R6,A
    MOV    R7,A

    MOV    R0,#GRINCH
    MOV    R1,#GRINCH
    MOV    R2,#GRINCH
    MOV    R3,#GRINCH
    MOV    R4,#GRINCH
    MOV    R5,#GRINCH
    MOV    R6,#GRINCH
    MOV    R7,#GRINCH

    MOV    @R0,A
    MOV    @R1,A
    MOV    @R0,#GRINCH
    MOV    @R1,#GRINCH
    MOV    T,A

    MOVD    A,P4
    MOVD    A,P5
    MOVD    A,P6
    MOVD    A,P7

    MOVD    P4,A
    MOVD    P5,A
    MOVD    P6,A
    MOVD    P7,A

    MOVP    A,@A
    MOVP3    A,@A        ;Not in 8022, 8021
    MOVX    A,@R0        ;MOVX not in 8041/41A, 8022, 8021
    MOVX    A,@R1
    MOVX    @R0,A
    MOVX    @R1,A

    NOP

    ORL    A,R0
    ORL    A,R1
    ORL    A,R2
    ORL    A,R3
    ORL    A,R4
    ORL    A,R5
    ORL    A,R6
    ORL    A,R7

    ORL    A,@R0
    ORL    A,@R1
    ORL    A,#GRINCH
    ORL    BUS,#17H    ;Not in 8041/41A, 8022, 8021
    ORL    P1,#7        ;Not in 8022, 8021
    ORL    P2,#7        ;Not in 8022, 8021

    ORLD    P4,A
    ORLD    P5,A
    ORLD    P6,A
    ORLD    P7,A

    OUT    DBB,A        ;8041/41A only
    OUTL    BUS,A        ;Not in 8041/41A, 8022, 8021
    OUTL    P0,A        ;8021, 8022 only
    OUTL    P1,A
    OUTL    P2,A

    RAD            ;8022 only
    RET
    RETI            ;8022 only
    RETR            ;Not in 8022, 8021

    RL    A
    RLC    A
    RR    A
    RRC    A
    SEL    AN0        ;8022 only
    SEL    AN1        ;8022 only
    SEL    MB0        ;Not in 8041/41A, 8022, 8021
    SEL    MB1        ;Not in 8041/41A, 8022, 8021
    SEL    RB0        ;Not in 8022, 8021
    SEL    RB1        ;Not in 8022, 8021
    STOP    TCNT
    STRT    CNT
    STRT    T
    SWAP    A

    XCH    A,R0
    XCH    A,R1
    XCH    A,R2
    XCH    A,R3
    XCH    A,R4
    XCH    A,R5
    XCH    A,R6
    XCH    A,R7

    XCH    A,@R0
    XCH    A,@R1

    XCHD    A,@R0
    XCHD    A,@R1

    XRL    A,R0
    XRL    A,R1
    XRL    A,R2
    XRL    A,R3
    XRL    A,R4
    XRL    A,R5
    XRL    A,R6
    XRL    A,R7

    XRL    A,@R0
    XRL    A,@R1
    XRL    A,#GRINCH


;
; Error Test Cases
;
    DS    100H
    JC    ADDR2
    JMP    8000H


    END

Larry
 
Larry, now try that with a real 8" disk. Anything that causes IMD to choke has me wondering.

The disk parameters are present in the first (track 0/head 0/sector 1) sector. I get:

Code:
BSH 5 BLM 31 EXM 3 DSM 236 DRM 127 AL0 080H AL1 0 OFS 2

If it really is the case of odd/even track numbering, I do have a version of 22Disk that will handle that and any other odd thing that comes along. But even that shouldn't cause IMD to choke.
 
Back
Top