Thread
HD20 Schematics required
That's some good advice Trag. I added those things to the image. There are two separate +5 supplies, one from the HD20 and one from the floppy port. The ground of both +5s is common, but the ground of +12 for the Rodime is not a common ground.
Ran across the list below while looking at something else. It might be interesting to see where the ROM on the HD20 falls in the numbering scheme, if it does. Note the entries for Widget ROMs (and mention of a Z8 piggy back) near the center of the list:
==================================
This is my Apple-ROM collection:
341-0001-00 Integer BASIC E0 1978
341-0002-00 Integer BASIC E8 1978
341-0003-00 Integer BASIC F0 1978
341-0004-00 Original Monitor (F8) 1978
341-0009 13 Sector ROM
341-0010 13 Sector ROM
341-0011(00) Applesoft BASIC D0 ©1978 1980
341-0012(00) Applesoft BASIC D8 ©1978 1980
341-0013(00) Applesoft BASIC E0 ©1978 1980
341-0014(00) Applesoft BASIC E8 ©1978 1980
341-0015(00) Applesoft BASIC F0 ©1978 1980
341-0016-00 Programmer's Aid #1 (D0) 1978
341-0020(00) Autostart Monitor (F8) ©1978 1980
341-0027 16 Sector
341-0027-A Disk II P5A 1981
341-0028 16 Sector
341-0036 ][plus character ROM
341-0065-A Super Serial Card 1983
341-0066-A Profile 5MB e 10MB (GAL)
341-0067-A Profile 5MB e 10MB (GAL)
341-0068-A Profile 5MB e 10MB (GAL)
341-0080-B ProFile 5MB RW-Z8 1981
341-0112A revision A firmware Apple SCSI card
341-0112B revision B firmware Apple SCSI card
341-011-D0 Applesoft BASIC D0
341-0124-A IIgs Keyboard i8048
341-012-D8 Applesoft BASIC D8
341-013-E0 Applesoft BASIC E0
341-014-E8 Applesoft BASIC E8
341-0151-A IIe Keyboard ROM deutsch/usa 1982
341-015-F0 Applesoft BASIC F0
341-0161-A IIe Video ROM deutsch/usa 1982
341-0171-A Profile 5MB
341-0175-F Lisa 2 Boot ROM Hi (old)
341-0175-H Lisa 2 Boot ROM Hi
341-0176-F Lisa 2 Boot ROM Lo (old)
341-0176-H Lisa 2 Boot ROM Lo
341-0193-A Lisa Parallel Interface Card
341-020-F8 Autostart Monitor
341-0220 Mac 128-512 (400k drive support)
341-0221 Mac 128-512 (400k drive support)
341-0265-A //e Enh //c+ VideoROM USA 1983
341-0281-D Lisa 2/10 Disk ROM
341-0287 Profile 10MB
341-0288-A Widget-10 Controller (677-0108) Z8 Piggyback
341-0289-D Widget-10 Controller
341-0290-B Lisa 2/5 Disk ROM
341-0303-A //e Enh EF EPROM 1984
341-0341-A Mac Plus old
341-0342-A Mac Plus old
341-0341-A Mac Plus medium
341-0342-B Mac Plus medium
341-0341-B Mac Plus new
341-0342-C Mac Plus new
341-0346 Mac XL Boot ROM Lo
341-0347 Mac XL Boot ROM Hi
341-0437-A revision C firmware Apple SCSI card
341-0625-A //c+ CF ROM 1988
341-0737 IIgs ROM 3 FC-FD 1989
341-0748 IIgs ROM 3 FE-FF 1989
341-8003-A Sun Mac XL Disk ROM for 800k drives (from 2/5)
341-8003-B Sun Mac XL Disk ROM for 800k drives (from Sun XL)
341-8003-C Sun Mac XL Disk ROM for 800k drives (from Goodwill XL)
341-8007 Sun SCSI Card
342-0028-A Disk II P6A 1981
342-0033-A //c Monitor ROM $00 (3,5" disk) 1985
342-0033-B //c Monitor ROM $00 /3,5" disk) 1985
342-0077-B IIgs ROM-01 1987
342-0132 //c Keyboard ROM
342-0132-B //e Kbd ROM USA 1985
342-0132-D //e //eEnh //c KBD ROM USA/Dvorak 1984
342-0133-A //e Video ROM 1982
342-0134-A IIe EF ROM 1982
342-0135-A IIe CD ROM 1982
342-0135-B IIe CD ROM 1982
342-0154 IIe Keyboard ROM ITA
342-0164 IIe VIDEO ROM ITA
342-0272-A //c Monitor ROM $FF 1983
342-0275 //c Character Generator deutsch 1983
342-0275-A //c //eEnh VideoROM Deutsch 1983
342-0276 IIe Enh VIDEO ROM ITA
342-0303-A //e Enh EF ROM 1984
342-0304-A //e Enh CD ROM 1984
342-0329 IIe Enh Keyboard ITA
342-0341-A Mac Plus ROM hi 1985
342-0341-B Mac Plus ROM lo 1985
342-0349-A //e Enh CF ROM 1985
342-0349-B //e Enh CF ROM 1985
342-0372-A //e Enh Kbd ROM Deutsch/USA 1985
=============================================
==================================
This is my Apple-ROM collection:
341-0001-00 Integer BASIC E0 1978
341-0002-00 Integer BASIC E8 1978
341-0003-00 Integer BASIC F0 1978
341-0004-00 Original Monitor (F8) 1978
341-0009 13 Sector ROM
341-0010 13 Sector ROM
341-0011(00) Applesoft BASIC D0 ©1978 1980
341-0012(00) Applesoft BASIC D8 ©1978 1980
341-0013(00) Applesoft BASIC E0 ©1978 1980
341-0014(00) Applesoft BASIC E8 ©1978 1980
341-0015(00) Applesoft BASIC F0 ©1978 1980
341-0016-00 Programmer's Aid #1 (D0) 1978
341-0020(00) Autostart Monitor (F8) ©1978 1980
341-0027 16 Sector
341-0027-A Disk II P5A 1981
341-0028 16 Sector
341-0036 ][plus character ROM
341-0065-A Super Serial Card 1983
341-0066-A Profile 5MB e 10MB (GAL)
341-0067-A Profile 5MB e 10MB (GAL)
341-0068-A Profile 5MB e 10MB (GAL)
341-0080-B ProFile 5MB RW-Z8 1981
341-0112A revision A firmware Apple SCSI card
341-0112B revision B firmware Apple SCSI card
341-011-D0 Applesoft BASIC D0
341-0124-A IIgs Keyboard i8048
341-012-D8 Applesoft BASIC D8
341-013-E0 Applesoft BASIC E0
341-014-E8 Applesoft BASIC E8
341-0151-A IIe Keyboard ROM deutsch/usa 1982
341-015-F0 Applesoft BASIC F0
341-0161-A IIe Video ROM deutsch/usa 1982
341-0171-A Profile 5MB
341-0175-F Lisa 2 Boot ROM Hi (old)
341-0175-H Lisa 2 Boot ROM Hi
341-0176-F Lisa 2 Boot ROM Lo (old)
341-0176-H Lisa 2 Boot ROM Lo
341-0193-A Lisa Parallel Interface Card
341-020-F8 Autostart Monitor
341-0220 Mac 128-512 (400k drive support)
341-0221 Mac 128-512 (400k drive support)
341-0265-A //e Enh //c+ VideoROM USA 1983
341-0281-D Lisa 2/10 Disk ROM
341-0287 Profile 10MB
341-0288-A Widget-10 Controller (677-0108) Z8 Piggyback
341-0289-D Widget-10 Controller
341-0290-B Lisa 2/5 Disk ROM
341-0303-A //e Enh EF EPROM 1984
341-0341-A Mac Plus old
341-0342-A Mac Plus old
341-0341-A Mac Plus medium
341-0342-B Mac Plus medium
341-0341-B Mac Plus new
341-0342-C Mac Plus new
341-0346 Mac XL Boot ROM Lo
341-0347 Mac XL Boot ROM Hi
341-0437-A revision C firmware Apple SCSI card
341-0625-A //c+ CF ROM 1988
341-0737 IIgs ROM 3 FC-FD 1989
341-0748 IIgs ROM 3 FE-FF 1989
341-8003-A Sun Mac XL Disk ROM for 800k drives (from 2/5)
341-8003-B Sun Mac XL Disk ROM for 800k drives (from Sun XL)
341-8003-C Sun Mac XL Disk ROM for 800k drives (from Goodwill XL)
341-8007 Sun SCSI Card
342-0028-A Disk II P6A 1981
342-0033-A //c Monitor ROM $00 (3,5" disk) 1985
342-0033-B //c Monitor ROM $00 /3,5" disk) 1985
342-0077-B IIgs ROM-01 1987
342-0132 //c Keyboard ROM
342-0132-B //e Kbd ROM USA 1985
342-0132-D //e //eEnh //c KBD ROM USA/Dvorak 1984
342-0133-A //e Video ROM 1982
342-0134-A IIe EF ROM 1982
342-0135-A IIe CD ROM 1982
342-0135-B IIe CD ROM 1982
342-0154 IIe Keyboard ROM ITA
342-0164 IIe VIDEO ROM ITA
342-0272-A //c Monitor ROM $FF 1983
342-0275 //c Character Generator deutsch 1983
342-0275-A //c //eEnh VideoROM Deutsch 1983
342-0276 IIe Enh VIDEO ROM ITA
342-0303-A //e Enh EF ROM 1984
342-0304-A //e Enh CD ROM 1984
342-0329 IIe Enh Keyboard ITA
342-0341-A Mac Plus ROM hi 1985
342-0341-B Mac Plus ROM lo 1985
342-0349-A //e Enh CF ROM 1985
342-0349-B //e Enh CF ROM 1985
342-0372-A //e Enh Kbd ROM Deutsch/USA 1985
=============================================
342-0343-B Hard Disk 20 Z8 ROM
Quick Update
My new microcontroller prototype board came in on Friday. It is a new toy so I've been playing with it a bit.
I wrote a quick sloppy program that samples the floppy interface at about 4 kHz. From what I've read, the serial data of the HD20 runs at 500kHz, so this should be plenty overkill. I didn't make it record any timing data yet, this will slow down the sampling rate, but we'll see what we can do. I believe that I can just read the free running counter register of the microcontroller and save that alongside the data, and extrapolate from there. Right now, it records the value of each pin when any pin changes. This at least gives some idea of the functionality of the pins.
So far, I have two text files. One is read from the external floppy port without the HD 20 attached and no disk in the internal drive. Data logging was started before turning on the Mac, i.e., the first recorded data will be all zeros. I flicked it on and waited for several minutes until it filled up my 2 kilobyte RAM. Apparently the Mac keeps polling for something.
The other text file is with the HD-20 attached and turned on. I used a Mac Plus for this so it would be able to boot directly from the HD-20 without mixing in a bunch of floppy drive signals. Maybe half of a second after the happy Mac, my 2k RAM filled up. I can see the RD serial data starting in fairly early on. (i.e. RD goes 1, 0, 1, 0, 1, 0, etc) There is one point after having sent some serial data that other pins start sending signals for a moment, then the serial continues. The Mac may be requesting the next block at this point. I'll have to take a closer look and build a program that can record timing.
Timing is essential, because a serial feed like this:
101100111000
will be recorded like this:
101010
Because the program only detects a change in value.
jongleur:
I found an Apple "800k External Drive" that has a nearly identical cable as the HD-20 when I was digging my Mac Plus out of a heap of old Macs. It is a couple of inches longer, but in every other respect it is identical. The icon is the same and the color is the same. (it's the tan / beige accent color) If you want an authentic cord, this might just do the trick.
By the way, have you had a chance to try it with your 400k cord?
My new microcontroller prototype board came in on Friday. It is a new toy so I've been playing with it a bit.
I wrote a quick sloppy program that samples the floppy interface at about 4 kHz. From what I've read, the serial data of the HD20 runs at 500kHz, so this should be plenty overkill. I didn't make it record any timing data yet, this will slow down the sampling rate, but we'll see what we can do. I believe that I can just read the free running counter register of the microcontroller and save that alongside the data, and extrapolate from there. Right now, it records the value of each pin when any pin changes. This at least gives some idea of the functionality of the pins.
So far, I have two text files. One is read from the external floppy port without the HD 20 attached and no disk in the internal drive. Data logging was started before turning on the Mac, i.e., the first recorded data will be all zeros. I flicked it on and waited for several minutes until it filled up my 2 kilobyte RAM. Apparently the Mac keeps polling for something.
The other text file is with the HD-20 attached and turned on. I used a Mac Plus for this so it would be able to boot directly from the HD-20 without mixing in a bunch of floppy drive signals. Maybe half of a second after the happy Mac, my 2k RAM filled up. I can see the RD serial data starting in fairly early on. (i.e. RD goes 1, 0, 1, 0, 1, 0, etc) There is one point after having sent some serial data that other pins start sending signals for a moment, then the serial continues. The Mac may be requesting the next block at this point. I'll have to take a closer look and build a program that can record timing.
Timing is essential, because a serial feed like this:
101100111000
will be recorded like this:
101010
Because the program only detects a change in value.
jongleur:
I found an Apple "800k External Drive" that has a nearly identical cable as the HD-20 when I was digging my Mac Plus out of a heap of old Macs. It is a couple of inches longer, but in every other respect it is identical. The icon is the same and the color is the same. (it's the tan / beige accent color) If you want an authentic cord, this might just do the trick.
By the way, have you had a chance to try it with your 400k cord?
Here is some data for others to peruse as you wish.
Data is stored as follows:
xxxx = memory address in my microcontroller (not useful)
aa aa = initial value of bus with nothing turned on yet.
bb bb = ticks until bus value 2
cc cc = bus value 2
dd dd = ticks until bus value 3
ee ee = bus value 3
ff ff = ticks until bus value 4
gg gg = bus value 4
etc.
................ = ASCII representation of data (not useful)
Time recordings are in ticks. Each tick is 41.667 ns. The counter counts up and overflows from FFFF to 0000. There is no indication of how many times the counter overflows.
The Bus data is encoded as follows:
aa aa: hexadecimal representation. Convert to Binary: abcd efgh ijkl mnop
a=RD (Serial Read data)
b=/ENBL2
c=HDSel
d=/WrReq
e=LSTRB
f=CA2
g=CA1
h=CA0
i, j, k, l, m, n, o: NOT USED, always = 0
p=WR (Serial Write data)
All tests were performed with the internal disk drive disconnected and the HD-20 connected to the Mac. The difference in tests is whether the Mac or HD20 is turned on or not.
With only the HD-20 turned on, Mac Plus off, internal disk drive disconnected:
With only the Mac Plus turned on, HD-20 off, internal disk drive disconnected:
With BOTH the Mac Plus turned on, HD-20 on, internal disk drive disconnected, booting until a moment after the happy Mac appears:
Objectively speaking, there doesn't seem to be a whole heck of a lot going on before serial data starts in.
Data is stored as follows:
Code:
xxxx aa aa bb bb - cc cc dd dd - ee ee ff ff - gg gg hh hh ................
aa aa = initial value of bus with nothing turned on yet.
bb bb = ticks until bus value 2
cc cc = bus value 2
dd dd = ticks until bus value 3
ee ee = bus value 3
ff ff = ticks until bus value 4
gg gg = bus value 4
etc.
................ = ASCII representation of data (not useful)
Time recordings are in ticks. Each tick is 41.667 ns. The counter counts up and overflows from FFFF to 0000. There is no indication of how many times the counter overflows.
The Bus data is encoded as follows:
aa aa: hexadecimal representation. Convert to Binary: abcd efgh ijkl mnop
a=RD (Serial Read data)
b=/ENBL2
c=HDSel
d=/WrReq
e=LSTRB
f=CA2
g=CA1
h=CA0
i, j, k, l, m, n, o: NOT USED, always = 0
p=WR (Serial Write data)
All tests were performed with the internal disk drive disconnected and the HD-20 connected to the Mac. The difference in tests is whether the Mac or HD20 is turned on or not.
With only the HD-20 turned on, Mac Plus off, internal disk drive disconnected:
Code:
Run 1:
1040 00 00 F6 C5 - 40 00 FD 1A - 00 00 FD 2D - 40 00 00 00 ....@......-@...
1050 00 00 00 00 - 00 00 00 00 - 00 00 00 00 - 00 00 00 00 ................
Run 2:
1040 00 00 92 72 - 40 00 9F 24 - 00 00 9F 37 - 40 00 B4 1C ...r@..$...7@...
1050 C0 00 B4 2F - 40 00 00 00 - 00 00 00 00 - 00 00 00 00 .../@...........
Run 1:
0xTime Ticks Comment
x 0000 0000 0 Before Power On
0 0100 0000 0 Power On
655 0000 0000 0
13 0100 0000 0
Run 2 (let it run longer):
x 0000 0000 0 Before Power On
0 0100 0000 0 Power On
CB2 0000 0000 0
13 0100 0000 0
14E5 1100 0000 0
13 0100 0000 0 Holds this value
Code:
1040 00 00 7D 72 - 20 00 7E FF - 00 00 7F 12 - 20 00 97 C1 ..}r .~..... ...
1050 00 00 97 D4 - 20 00 67 16 - 30 00 6A 65 - 20 00 6A 78 .... .g.0.je .jx
1060 30 00 71 42 - 20 00 71 55 - 30 00 74 A4 - 20 00 74 B7 0.qB .qU0.t. .t.
1070 30 00 76 68 - 20 00 76 7B - 30 00 78 11 - 20 00 78 24 0.vh .v{0.x. .x$
1080 30 00 7B 7C - 20 00 7B 8F - 30 00 7D 0A - 20 00 7D 1D 0.{| .{.0.}. .}.
1090 30 00 4B 9B - 70 00 4D 28 - 30 00 4D 3B - 70 00 4E BF 0.K.p.M(0.M;p.N.
10A0 30 00 4E D2 - 70 00 50 56 - 30 00 50 69 - 70 00 51 ED 0.N.p.PV0.Pip.Q.
10B0 30 00 52 00 - 70 00 58 8B - 30 00 58 9E - 70 00 5B B7 0.R.p.X.0.X.p.[.
10C0 30 00 5B CA - 70 00 5E E3 - 30 00 5E F6 - 70 00 63 A4 0.[.p.^.0.^.p.c.
10D0 30 00 63 B7 - 70 00 66 D0 - 30 00 66 E3 - 70 00 69 FC 0.c.p.f.0.f.p.i.
10E0 30 00 6A 0F - 70 00 6D 28 - 30 00 6D 3B - 70 00 70 54 0.j.p.m(0.m;p.pT
10F0 30 00 70 67 - 70 00 73 77 - 30 00 73 8A - 70 00 74 FC 0.pgp.sw0.s.p.t.
1100 30 00 75 0F - 70 00 78 28 - 30 00 78 3B - 70 00 7B 54 0.u.p.x(0.x;p.{T
1110 30 00 7B 67 - 70 00 80 15 - 30 00 80 28 - 70 00 9E 80 0.{gp...0..(p...
1120 74 00 9E A5 - 76 00 9E CA - 77 00 9F 64 - 57 00 A0 CD t...v...w..dW...
1130 17 00 A2 00 - 1F 00 A2 5B - 17 00 A2 E3 - 15 00 A3 7D .......[.......}
1140 17 00 A4 83 - 1F 00 A5 02 - 17 00 A5 93 - 15 00 A5 F7 ................
1150 17 00 A6 C7 - 1F 00 A7 4F - 17 00 A7 E0 - 15 00 A8 7A .......O.......z
1160 17 00 A9 77 - 1F 00 A9 E4 - 17 00 AA 3F - 15 00 AA AC ...w.......?....
1170 17 00 B2 7B - 16 00 B4 62 - 17 00 B4 7E - 15 00 BC 8C ...{...b...~....
1180 55 00 BF AE - 57 00 CA 4D - 17 00 CC 07 - 1F 00 CC 62 U...W..M.......b
1190 17 00 CC EA - 15 00 CD 84 - 17 00 CE 8A - 1F 00 CF 09 ................
11A0 17 00 CF 9A - 15 00 CF FE - 17 00 D0 CE - 1F 00 D1 56 ...............V
11B0 17 00 D1 E7 - 15 00 D2 81 - 17 00 D3 7E - 1F 00 D3 F4 ...........~....
11C0 17 00 D4 58 - 15 00 D4 BC - 17 00 E4 23 - 57 00 E4 C6 ...X.......#W...
11D0 17 00 ED 2E - 16 00 EF 15 - 17 00 EF 31 - 15 00 F7 E1 ...........1....
11E0 17 00 F9 65 - 57 00 F9 ED - 17 00 FB 20 - 1F 00 FB A8 ...eW...... ....
11F0 17 00 FC 39 - 15 00 FC D3 - 17 00 05 05 - 16 00 06 E3 ...9............
1200 17 00 07 08 - 15 00 0F DC - 17 00 11 69 - 57 00 12 0C ...........iW...
1210 17 00 13 3F - 1F 00 13 A3 - 17 00 13 FE - 15 00 14 8F ...?............
1220 17 00 15 8C - 1F 00 16 14 - 17 00 16 A5 - 15 00 17 3F ...............?
1230 17 00 1F 56 - 16 00 21 3D - 17 00 21 59 - 15 00 29 DC ...V..!=..!Y..).
1240 17 00 2B 57 - 57 00 2B FA - 17 00 2D 36 - 1F 00 2D B5 ..+WW.+...-6..-.
1250 17 00 2E 46 - 15 00 2E E0 - 17 00 2F E6 - 1F 00 30 65 ...F....../...0e
1260 17 00 30 C9 - 15 00 31 2D - 17 00 31 FD - 1F 00 32 7C ..0...1-..1...2|
1270 17 00 33 0D - 15 00 33 A7 - 17 00 3B C7 - 16 00 3D AE ..3...3...;...=.
1280 17 00 3D CA - 15 00 9B 55 - 55 00 FF 42 - D5 00 FF 55 ..=....UU..B...U
1290 55 00 02 77 - D5 00 02 8A - 55 00 00 00 - 00 00 00 00 U..w....U.......
Code:
1040 00 00 4D 29 - 40 00 4D 3C - 00 00 4E C0 - 40 00 51 EB ..M)@.M<..N.@.Q.
1050 00 00 51 FE - 40 00 55 17 - 00 00 55 2A - 40 00 58 43 ..Q.@.U...U*@.XC
1060 00 00 58 56 - 40 00 7C 40 - 00 00 AB 6F - 40 00 F4 12 ..XV@.|@...o@...
1070 00 00 B1 88 - 80 00 B1 9B - 00 00 B4 B4 - 80 00 B4 C7 ................
1080 00 00 B7 E0 - 80 00 B7 F3 - 00 00 BB 0C - 80 00 BB 1F ................
1090 00 00 BC A3 - 80 00 CF A9 - 00 00 CF BC - 80 00 D2 D5 ................
10A0 00 00 D2 E8 - 80 00 D6 01 - 00 00 D6 14 - 80 00 D9 2D ...............-
10B0 00 00 D9 40 - 80 00 A8 EC - A0 00 A8 FF - E0 00 AA 7A ...@...........z
10C0 C0 00 CD 01 - E0 00 CE 97 - C0 00 D0 2D - E0 00 99 75 ...........-...u
10D0 60 00 A8 B8 - 70 00 A8 CB - 60 00 B5 6B - 70 00 B8 96 `...p...`..kp...
10E0 60 00 BA 2C - 70 00 C2 16 - 60 00 C2 29 - 70 00 C5 42 `..,p...`..)p..B
10F0 60 00 C5 55 - 70 00 C8 6E - 60 00 C8 81 - 70 00 CA 05 `..Up..n`...p...
1100 60 00 CA 18 - 70 00 CD 31 - 60 00 CD 44 - 70 00 D0 5D `...p..1`..Dp..]
1110 60 00 D0 70 - 70 00 D1 F4 - 60 00 D2 07 - 70 00 D6 B5 `..pp...`...p...
1120 60 00 D6 C8 - 70 00 D9 E1 - 60 00 D9 F4 - 70 00 41 6C `...p...`...p.Al
1130 F0 00 8B 50 - F4 00 8B 7E - F6 00 8B 9A - F7 00 8C 22 ...P...~......."
1140 D7 00 8D 9D - 97 00 8E D0 - 9F 00 8F 2B - 97 00 8F 8F ...........+....
1150 95 00 8F FC - 97 00 90 F0 - 9F 00 91 6F - 97 00 92 00 ...........o....
1160 95 00 92 9A - 97 00 93 A0 - 9F 00 93 FB - 97 00 94 68 ...............h
1170 95 00 95 02 - 97 00 95 FF - 9F 00 96 7E - 97 00 97 18 ...........~....
1180 95 00 97 97 - 97 00 9F 81 - 96 00 A1 68 - 97 00 A1 84 ...........h....
1190 95 00 A9 6E - D5 00 AC C6 - D7 00 B7 4A - 97 00 B9 0D ...n.......J....
11A0 9F 00 B9 68 - 97 00 B9 CC - 95 00 BA 30 - 97 00 BB 24 ...h.......0...$
11B0 9F 00 BB A3 - 97 00 BC 3D - 95 00 BC D7 - 97 00 BD D4 .......=........
11C0 9F 00 BE 2F - 97 00 BE B7 - 95 00 BF 51 - 97 00 C0 4E .../.......Q...N
11D0 9F 00 C0 D6 - 97 00 C1 67 - 95 00 C1 CB - 97 00 D1 32 .......g.......2
11E0 D7 00 D1 DE - 97 00 DA 61 - 96 00 DC 48 - 97 00 DC 64 .......a...H...d
11F0 15 00 EE 41 - 95 00 EE 54 - 97 00 EF BD - D7 00 F0 45 ...A...T.......E
1200 97 00 F1 78 - 9F 00 F2 09 - 97 00 F2 9A - 95 00 F3 34 ...x...........4
1210 97 00 FB 54 - 96 00 FD 29 - 97 00 FD 45 - 95 00 05 F5 ...T...)...E....
1220 97 00 07 82 - D7 00 08 25 - 97 00 09 61 - 9F 00 09 BC .......%...a....
1230 97 00 0A 17 - 95 00 0A A8 - 97 00 0B A5 - 9F 00 0C 2D ...............-
1240 97 00 0C BE - 95 00 0D 58 - 97 00 15 78 - 96 00 17 56 .......X...x...V
1250 97 00 17 72 - 95 00 1F F5 - 97 00 21 70 - D7 00 22 1C ...r......!p..".
1260 97 00 23 4F - 9F 00 23 CE - 97 00 24 5F - 95 00 24 F9 ..#O..#...$_..$.
1270 97 00 25 FF - 9F 00 26 7E - 97 00 26 E2 - 95 00 27 46 ..%...&~..&...'F
1280 97 00 28 16 - 9F 00 28 95 - 97 00 29 2F - 95 00 29 C9 ..(...(...)/..).
1290 97 00 31 E0 - 96 00 33 C7 - 97 00 33 E3 - 95 00 E0 FB ..1...3...3.....
12A0 97 00 E2 76 - D7 00 E3 19 - 97 00 6C 87 - 96 00 6C AC ...v......l...l.
12B0 92 00 71 00 - 96 00 71 49 - 97 00 72 BB - D7 00 73 5E ..q...qI..r...s^
12C0 97 00 75 33 - 96 00 75 58 - 92 00 84 F5 - 93 00 88 56 ..u3..uX.......V
12D0 13 00 88 DE - 11 00 8A BC - 01 00 8A EA - 01 01 8B 4E ...............N
12E0 01 00 8B B2 - 81 01 8B C5 - 01 01 8C 17 - 81 00 8C 2A ...............*
12F0 01 00 8C 73 - 01 01 8D CA - 01 00 8E 01 - 81 01 8E 14 ...s............
1300 01 01 8E 5D - 01 00 8E 94 - 81 01 8E A7 - 01 01 8F 53 ...]...........S
1310 01 00 8F 8A - 81 01 8F 9D - 01 01 8F B9 - 81 00 8F CC ................
1320 01 00 90 DB - 01 01 91 12 - 81 00 91 25 - 01 00 92 61 ...........%...a
1330 01 01 92 98 - 81 00 92 AB - 01 00 94 1D - 81 01 94 30 ...............0
1340 01 01 95 A2 - 01 00 97 2F - 81 01 97 42 - 01 01 98 B4 ......./...B....
1350 01 00 9A 41 - 81 01 9A 54 - 01 01 9A 70 - 01 00 9A 9E ...A...T...p....
1360 01 01 9A D5 - 81 00 9A E8 - 01 00 9B 04 - 81 01 9B 17 ................
1370 01 01 9B 33 - 01 00 9B 61 - 01 01 9C 79 - 03 01 9C D4 ...3...a...y....
1380 13 00 9D 0B - 93 00 9D A5 - 92 00 BA 89 - 12 00 00 9B ................
1390 13 00 00 C0 - 11 00 04 72 - 91 00 04 85 - 11 00 04 D7 .......r........
13A0 91 00 04 EA - 11 00 05 A8 - 91 00 05 BB - 11 00 05 D7 ................
13B0 91 00 05 EA - 11 00 07 0B - 91 00 07 1E - 11 00 08 D8 ................
13C0 91 00 08 EB - 11 00 0C 0D - 91 00 0C 20 - 11 00 0D A4 ........... ....
13D0 91 00 0D B7 - 11 00 10 D9 - 91 00 10 EC - 11 00 12 70 ...............p
13E0 91 00 12 83 - 11 00 15 A5 - 91 00 15 B8 - 11 00 17 3C ...............<
13F0 91 00 17 4F - 11 00 17 74 - 91 00 17 87 - 11 00 17 A3 ...O...t........
1400 91 00 17 B6 - 11 00 17 DB - 91 00 17 EE - 11 00 18 A3 ................
1410 91 00 18 B6 - 11 00 18 DB - 91 00 18 EE - 11 00 1A 72 ...............r
1420 91 00 1A 85 - 11 00 1B 70 - 91 00 1B 83 - 11 00 1C 0B .......p........
1430 91 00 1C 1E - 11 00 1C A6 - 91 00 1C B9 - 11 00 1D 41 ...............A
1440 91 00 1D 54 - 11 00 1D A6 - 91 00 1D B9 - 11 00 1E A4 ...T............
1450 91 00 1E B7 - 11 00 1F 09 - 91 00 1F 1C - 11 00 1F 41 ...............A
1460 91 00 1F 54 - 11 00 20 D8 - 91 00 20 EB - 11 00 21 3D ...T.. ... ...!=
1470 91 00 21 50 - 11 00 21 D8 - 91 00 21 EB - 11 00 22 73 ..!P..!...!..."s
1480 91 00 22 86 - 11 00 24 0A - 91 00 24 1D - 11 00 27 3F .."...$...$...'?
1490 91 00 27 52 - 11 00 28 D6 - 91 00 28 E9 - 11 00 2B 3C ..'R..(...(...+<
14A0 91 00 2B 4F - 11 00 2C 0D - 91 00 2C 20 - 11 00 2D A4 ..+O..,..., ..-.
14B0 91 00 2D B7 - 11 00 30 D9 - 91 00 30 EC - 11 00 32 70 ..-...0...0...2p
14C0 91 00 32 83 - 11 00 35 A5 - 91 00 35 B8 - 11 00 37 3C ..2...5...5...7<
14D0 91 00 37 4F - 11 00 3A 71 - 91 00 3A 84 - 11 00 3C 08 ..7O..:q..:...<.
14E0 91 00 3C 1B - 11 00 3F 3D - 91 00 3F 50 - 11 00 42 72 ..<...?=..?P..Br
14F0 91 00 42 85 - 11 00 44 09 - 91 00 44 1C - 11 00 47 3E ..B...D...D...G>
1500 91 00 47 51 - 11 00 48 D5 - 91 00 48 E8 - 11 00 4C 0A ..GQ..H...H...L.
1510 91 00 4C 1D - 11 00 4F 3F - 91 00 4F 52 - 11 00 50 D6 ..L...O?..OR..P.
1520 91 00 50 E9 - 11 00 54 0B - 91 00 54 1E - 11 00 55 A2 ..P...T...T...U.
1530 91 00 55 B5 - 11 00 58 D7 - 91 00 58 EA - 11 00 5A 6E ..U...X...X...Zn
1540 91 00 5A 81 - 11 00 5D A3 - 91 00 5D B6 - 11 00 60 D8 ..Z...]...]...`.
1550 91 00 60 EB - 11 00 62 6F - 91 00 62 82 - 11 00 65 A4 ..`...bo..b...e.
1560 91 00 65 B7 - 11 00 67 3B - 91 00 67 4E - 11 00 6A 70 ..e...g;..gN..jp
1570 91 00 6A 83 - 11 00 6D A5 - 91 00 6D B8 - 11 00 6F 3C ..j...m...m...o<
1580 91 00 6F 4F - 11 00 72 71 - 91 00 72 84 - 11 00 74 08 ..oO..rq..r...t.
1590 91 00 74 1B - 11 00 77 3D - 91 00 77 50 - 11 00 78 D4 ..t...w=..wP..x.
15A0 91 00 78 E7 - 11 00 7C 09 - 91 00 7C 1C - 11 00 7F 3E ..x...|...|....>
15B0 91 00 7F 51 - 11 00 80 D5 - 91 00 80 E8 - 11 00 84 0A ...Q............
15C0 91 00 84 1D - 11 00 85 A1 - 91 00 85 B4 - 11 00 88 D6 ................
15D0 91 00 88 E9 - 11 00 8A 6D - 91 00 8A 80 - 11 00 8D A2 .......m........
15E0 91 00 8D B5 - 11 00 90 D7 - 91 00 90 EA - 11 00 92 6E ...............n
15F0 91 00 92 81 - 11 00 95 A3 - 91 00 95 B6 - 11 00 97 3A ...............:
1600 91 00 97 4D - 11 00 9A 6F - 91 00 9A 82 - 11 00 9D A4 ...M...o........
1610 91 00 9D B7 - 11 00 9F 3B - 91 00 9F 4E - 11 00 A2 70 .......;...N...p
1620 91 00 A2 83 - 11 00 A4 07 - 91 00 A4 1A - 11 00 A7 3C ...............<
1630 91 00 A7 4F - 11 00 A8 D3 - 91 00 A8 E6 - 11 00 AC 08 ...O............
1640 91 00 AC 1B - 11 00 AF 3D - 91 00 AF 50 - 11 00 B0 D4 .......=...P....
1650 91 00 B0 E7 - 11 00 B4 09 - 91 00 B4 1C - 11 00 B5 A0 ................
1660 91 00 B5 B3 - 11 00 B8 D5 - 91 00 B8 E8 - 11 00 BA 6C ...............l
1670 91 00 BA 7F - 11 00 BD A1 - 91 00 BD B4 - 11 00 C0 D6 ................
1680 91 00 C0 E9 - 11 00 C2 6D - 91 00 C2 80 - 11 00 C5 A2 .......m........
1690 91 00 C5 B5 - 11 00 C7 39 - 91 00 C7 4C - 11 00 CA 6E .......9...L...n
16A0 91 00 CA 81 - 11 00 CD A3 - 91 00 CD B6 - 11 00 CF 3A ...............:
16B0 91 00 CF 4D - 11 00 D2 6F - 91 00 D2 82 - 11 00 D4 06 ...M...o........
16C0 91 00 D4 19 - 11 00 D7 3B - 91 00 D7 4E - 11 00 D8 D2 .......;...N....
16D0 91 00 D8 E5 - 11 00 DC 07 - 91 00 DC 1A - 11 00 DF 3C ...............<
16E0 91 00 DF 4F - 11 00 E0 D3 - 91 00 E0 E6 - 11 00 E4 08 ...O............
16F0 91 00 E4 1B - 11 00 E5 9F - 91 00 E5 B2 - 11 00 E8 D4 ................
1700 91 00 E8 E7 - 11 00 EC 09 - 91 00 EC 1C - 11 00 ED A0 ................
1710 91 00 ED B3 - 11 00 F0 D5 - 91 00 F0 E8 - 11 00 F2 6C ...............l
1720 91 00 F2 7F - 11 00 F5 A1 - 91 00 F5 B4 - 11 00 F7 38 ...............8
1730 91 00 F7 4B - 11 00 FA 6D - 91 00 FA 80 - 11 00 FD A2 ...K...m........
1740 91 00 FD B5 - 11 00 FF 39 - 91 00 FF 4C - 11 00 02 6E .......9...L...n
1750 91 00 02 81 - 11 00 04 05 - 91 00 04 18 - 11 00 07 3A ...............:
1760 91 00 07 4D - 11 00 08 D1 - 91 00 08 E4 - 11 00 0C 06 ...M............
1770 91 00 0C 19 - 11 00 0F 3B - 91 00 0F 4E - 11 00 0F A0 .......;...N....
1780 91 00 0F B3 - 11 00 10 05 - 91 00 10 18 - 11 00 10 A0 ................
1790 91 00 10 B3 - 11 00 11 05 - 91 00 11 18 - 11 00 12 6F ...............o
17A0 91 00 12 82 - 11 00 12 9E - 91 00 12 B1 - 11 00 12 D6 ................
17B0 91 00 12 E9 - 11 00 13 05 - 91 00 13 18 - 11 00 13 A0 ................
17C0 91 00 13 B3 - 11 00 14 05 - 91 00 14 18 - 11 00 14 A0 ................
17D0 91 00 14 B3 - 11 00 15 05 - 91 00 15 18 - 11 00 15 A0 ................
17E0 91 00 15 B3 - 11 00 16 05 - 91 00 16 18 - 11 00 16 A0 ................
17F0 91 00 16 B3 - 11 00 17 05 - 91 00 17 18 - 11 00 18 D2 ................
1800 91 00 18 E5 - 11 00 1C 07 - 91 00 1C 1A - 11 00 1D 9E ................
1810 91 00 1D B1 - 11 00 1D D6 - 91 00 1D E9 - 11 00 1E D4 ................
1820 91 00 1E E7 - 11 00 1F 39 - 91 00 1F 4C - 11 00 22 6E .......9...L.."n
1830 91 00 22 81 - 11 00 24 05 - 91 00 24 18 - 11 00 25 D2 .."...$...$...%.
1840 91 00 25 E5 - 11 00 27 3C - 91 00 27 4F - 11 00 28 D3 ..%...'<..'O..(.
1850 91 00 28 E6 - 11 00 2A 6A - 91 00 2A 7D - 11 00 2B 3B ..(...*j..*}..+;
1860 91 00 2B 4E - 11 00 2D A1 - 91 00 2D B4 - 11 00 2F 38 ..+N..-...-.../8
1870 91 00 2F 4B - 11 00 32 6D - 91 00 32 80 - 11 00 34 04 ../K..2m..2...4.
1880 91 00 34 17 - 11 00 37 39 - 91 00 37 4C - 11 00 37 D4 ..4...79..7L..7.
1890 91 00 37 E7 - 11 00 38 D2 - 91 00 38 E5 - 11 00 3C 07 ..7...8...8...<.
18A0 91 00 3C 1A - 11 00 3D 9E - 91 00 3D B1 - 11 00 40 D3 ..<...=...=...@.
18B0 91 00 40 E6 - 11 00 42 6A - 91 00 42 7D - 11 00 42 A2 ..@...Bj..B}..B.
18C0 91 00 42 B5 - 11 00 43 6A - 91 00 43 7D - 11 00 44 05 ..B...Cj..C}..D.
18D0 91 00 44 18 - 11 00 44 6A - 91 00 44 7D - 11 00 45 3B ..D...Dj..D}..E;
18E0 91 00 45 4E - 11 00 45 A0 - 91 00 45 B3 - 11 00 47 37 ..EN..E...E...G7
18F0 91 00 47 4A - 11 00 4A 6C - 91 00 4A 7F - 11 00 4C 03 ..GJ..Jl..J...L.
1900 91 00 4C 16 - 11 00 4F 38 - 91 00 4F 4B - 11 00 51 05 ..L...O8..OK..Q.
1910 91 00 51 18 - 11 00 54 04 - 91 00 54 17 - 11 00 57 39 ..Q...T...T...W9
1920 91 00 57 4C - 11 00 58 D0 - 91 00 58 E3 - 11 00 59 6B ..WL..X...X...Yk
1930 91 00 59 7E - 11 00 59 D0 - 91 00 59 E3 - 11 00 5A 08 ..Y~..Y...Y...Z.
1940 91 00 5A 1B - 11 00 5A 37 - 91 00 5A 4A - 11 00 5A D2 ..Z...Z7..ZJ..Z.
1950 91 00 5A E5 - 11 00 5B 37 - 91 00 5B 4A - 11 00 5B 9C ..Z...[7..[J..[.
1960 91 00 5B AF - 11 00 5B D4 - 91 00 5B E7 - 11 00 5C 03 ..[...[...[...\.
1970 91 00 5C 16 - 11 00 5C 3B - 91 00 5C 4E - 11 00 5C 6A ..\...\;..\N..\j
1980 91 00 5C 7D - 11 00 5D 05 - 91 00 5D 18 - 11 00 5D 6A ..\}..]...]...]j
1990 91 00 5D 7D - 11 00 5E 05 - 91 00 5E 18 - 11 00 5E 6A ..]}..^...^...^j
19A0 91 00 5E 7D - 11 00 5F 3B - 91 00 5F 4E - 11 00 5F 6A ..^}.._;.._N.._j
19B0 91 00 5F 7D - 11 00 60 05 - 91 00 60 18 - 11 00 60 6A .._}..`...`...`j
19C0 91 00 60 7D - 11 00 62 6D - 91 00 62 80 - 11 00 64 04 ..`}..bm..b...d.
19D0 91 00 64 17 - 11 00 67 39 - 91 00 67 4C - 11 00 68 D0 ..d...g9..gL..h.
19E0 91 00 68 E3 - 11 00 6C 05 - 91 00 6C 18 - 11 00 6D 9C ..h...l...l...m.
19F0 91 00 6D AF - 11 00 70 D1 - 91 00 70 E4 - 11 00 74 06 ..m...p...p...t.
1A00 91 00 74 19 - 11 00 75 9D - 91 00 75 B0 - 11 00 78 D2 ..t...u...u...x.
1A10 91 00 78 E5 - 11 00 7A 69 - 91 00 7A 7C - 11 00 7D 9E ..x...zi..z|..}.
1A20 91 00 7D B1 - 11 00 7F 35 - 91 00 7F 48 - 11 00 82 6A ..}....5...H...j
1A30 91 00 82 7D - 11 00 85 9F - 91 00 85 B2 - 11 00 87 36 ...}...........6
1A40 91 00 87 49 - 11 00 8A 6B - 91 00 8A 7E - 11 00 8C 02 ...I...k...~....
1A50 91 00 8C 15 - 11 00 8F 37 - 91 00 8F 4A - 11 00 92 6C .......7...J...l
1A60 91 00 92 7F - 11 00 94 03 - 91 00 94 16 - 11 00 97 38 ...............8
1A70 91 00 97 4B - 11 00 98 CF - 91 00 98 E2 - 11 00 9C 04 ...K............
1A80 91 00 9C 17 - 11 00 9D 9B - 91 00 9D AE - 11 00 A0 D0 ................
1A90 91 00 A0 E3 - 11 00 A4 05 - 91 00 A4 18 - 11 00 A5 9C ................
1AA0 91 00 A5 AF - 11 00 A8 D1 - 91 00 A8 E4 - 11 00 AA 68 ...............h
1AB0 91 00 AA 7B - 11 00 AD 9D - 91 00 AD B0 - 11 00 AF 34 ...{...........4
1AC0 91 00 AF 47 - 11 00 B2 69 - 91 00 B2 7C - 11 00 B5 9E ...G...i...|....
1AD0 91 00 B5 B1 - 11 00 B7 35 - 91 00 B7 48 - 11 00 BA 6A .......5...H...j
1AE0 91 00 BA 7D - 11 00 BC 01 - 91 00 BC 14 - 11 00 BF 36 ...}...........6
1AF0 91 00 BF 49 - 11 00 C2 6B - 91 00 C2 7E - 11 00 C4 02 ...I...k...~....
1B00 91 00 C4 15 - 11 00 C7 37 - 91 00 C7 4A - 11 00 C8 CE .......7...J....
1B10 91 00 C8 E1 - 11 00 CC 03 - 91 00 CC 16 - 11 00 CD 9A ................
1B20 91 00 CD AD - 11 00 D0 CF - 91 00 D0 E2 - 11 00 D4 04 ................
1B30 91 00 D4 17 - 11 00 D5 9B - 91 00 D5 AE - 11 00 D8 D0 ................
1B40 91 00 D8 E3 - 11 00 DA 67 - 91 00 DA 7A - 11 00 DD 9C .......g...z....
1B50 91 00 DD AF - 11 00 E0 D1 - 91 00 E0 E4 - 11 00 E2 68 ...............h
1B60 91 00 E2 7B - 11 00 E5 9D - 91 00 E5 B0 - 11 00 E7 34 ...{...........4
1B70 91 00 E7 47 - 11 00 EA 69 - 91 00 EA 7C - 11 00 EC 00 ...G...i...|....
1B80 91 00 EC 13 - 11 00 EF 35 - 91 00 EF 48 - 11 00 F2 6A .......5...H...j
1B90 91 00 F2 7D - 11 00 F4 01 - 91 00 F4 14 - 11 00 F7 36 ...}...........6
1BA0 91 00 F7 49 - 11 00 F8 CD - 91 00 F8 E0 - 11 00 FA D0 ...I............
1BB0 91 00 FA E3 - 11 00 FB 35 - 91 00 FB 48 - 11 00 FB 9A .......5...H....
1BC0 91 00 FB AD - 11 00 FC 35 - 91 00 FC 48 - 11 00 FC 9A .......5...H....
1BD0 91 00 FC AD - 11 00 FD 35 - 91 00 FD 48 - 11 00 FD 9A .......5...H....
1BE0 91 00 FD AD - 11 00 FE 35 - 91 00 FE 48 - 11 00 FE 9A .......5...H....
1BF0 91 00 FE AD - 11 00 FF 35 - 91 00 FF 48 - 11 00 FF 9A .......5...H....
1C00 91 00 FF AD - 11 00 00 35 - 91 00 00 48 - 11 00 00 9A .......5...H....
1C10 91 00 00 AD - 11 00 01 35 - 91 00 01 48 - 11 00 01 9A .......5...H....
1C20 91 00 01 AD - 11 00 02 35 - 91 00 02 48 - 11 00 02 9A .......5...H....
1C30 91 00 02 AD - 11 00 03 35 - 91 00 03 48 - 11 00 03 9A .......5...H....
1C40 91 00 03 AD - 11 00 04 35 - 91 00 04 48 - 11 00 04 D0 .......5...H....
1C50 91 00 04 E3 - 11 00 05 35 - 91 00 05 48 - 11 00 05 9A .......5...H....
1C60 91 00 05 AD - 11 00 06 35 - 91 00 06 48 - 11 00 06 9A .......5...H....
1C70 91 00 06 AD - 11 00 07 35 - 91 00 07 48 - 11 00 07 9A .......5...H....
1C80 91 00 07 AD - 11 00 08 35 - 91 00 08 48 - 11 00 08 9A .......5...H....
1C90 91 00 08 AD - 11 00 09 35 - 91 00 09 48 - 11 00 09 9A .......5...H....
1CA0 91 00 09 AD - 11 00 0A 35 - 91 00 0A 48 - 11 00 0A 9A .......5...H....
1CB0 91 00 0A AD - 11 00 0B 35 - 91 00 0B 48 - 11 00 0B 9A .......5...H....
1CC0 91 00 0B AD - 11 00 0C 35 - 91 00 0C 48 - 11 00 0C 9A .......5...H....
1CD0 91 00 0C AD - 11 00 0C FF - 91 00 0D 12 - 11 00 0D 37 ...............7
1CE0 91 00 0D 4A - 11 00 0D 66 - 91 00 0D 79 - 11 00 0D 9E ...J...f...y....
1CF0 91 00 0D B1 - 11 00 0D CD - 91 00 0D E0 - 11 00 0E 68 ...............h
1D00 91 00 0E 7B - 11 00 0E CD - 91 00 0E E0 - 11 00 0F 68 ...{...........h
1D10 91 00 0F 7B - 11 00 0F CD - 91 00 0F E0 - 11 00 10 68 ...{...........h
1D20 91 00 10 7B - 11 00 10 CD - 91 00 10 E0 - 11 00 11 68 ...{...........h
1D30 91 00 11 7B - 11 00 11 CD - 91 00 11 E0 - 11 00 12 68 ...{...........h
1D40 91 00 12 7B - 11 00 12 CD - 91 00 12 E0 - 11 00 13 68 ...{...........h
1D50 91 00 13 7B - 11 00 13 CD - 91 00 13 E0 - 11 00 14 68 ...{...........h
1D60 91 00 14 7B - 11 00 14 CD - 91 00 14 E0 - 11 00 15 68 ...{...........h
1D70 91 00 15 7B - 11 00 15 CD - 91 00 15 E0 - 11 00 16 68 ...{...........h
1D80 91 00 16 7B - 11 00 16 CD - 91 00 16 E0 - 11 00 17 68 ...{...........h
1D90 91 00 17 7B - 11 00 17 CD - 91 00 17 E0 - 11 00 18 32 ...{...........2
1DA0 91 00 18 45 - 11 00 18 6A - 91 00 18 7D - 11 00 18 99 ...E...j...}....
1DB0 91 00 18 AC - 11 00 18 D1 - 91 00 18 E4 - 11 00 19 00 ................
1DC0 91 00 19 13 - 11 00 19 9B - 91 00 19 AE - 11 00 1A 00 ................
1DD0 91 00 1A 13 - 11 00 1A 9B - 91 00 1A AE - 11 00 1B 00 ................
1DE0 91 00 1B 13 - 11 00 1B 9B - 91 00 1B AE - 11 00 1C 00 ................
1DF0 91 00 1C 13 - 11 00 1C 9B - 91 00 1C AE - 11 00 1D 00 ................
1E00 91 00 1D 13 - 11 00 1D 9B - 91 00 1D AE - 11 00 1E 00 ................
1E10 91 00 1E 13 - 11 00 1E 9B - 91 00 1E AE - 11 00 1F 00 ................
1E20 91 00 1F 13 - 11 00 1F 9B - 91 00 1F AE - 11 00 20 00 .............. .
1E30 91 00 20 13 - 11 00 20 9B - 91 00 20 AE - 11 00 21 00 .. ... ... ...!.
1E40 91 00 21 13 - 11 00 21 65 - 91 00 21 78 - 11 00 21 9D ..!...!e..!x..!.
1E50 91 00 21 B0 - 11 00 21 CC - 91 00 21 DF - 11 00 22 04 ..!...!...!...".
1E60 91 00 22 17 - 11 00 22 33 - 91 00 22 46 - 11 00 22 CE .."..."3.."F..".
1E70 91 00 22 E1 - 11 00 23 33 - 91 00 23 46 - 11 00 23 CE .."...#3..#F..#.
1E80 91 00 23 E1 - 11 00 24 33 - 91 00 24 46 - 11 00 24 CE ..#...$3..$F..$.
1E90 91 00 24 E1 - 11 00 25 33 - 91 00 25 46 - 11 00 25 CE ..$...%3..%F..%.
1EA0 91 00 25 E1 - 11 00 26 33 - 91 00 26 46 - 11 00 26 CE ..%...&3..&F..&.
1EB0 91 00 26 E1 - 11 00 27 33 - 91 00 27 46 - 11 00 27 CE ..&...'3..'F..'.
1EC0 91 00 27 E1 - 11 00 28 33 - 91 00 28 46 - 11 00 28 CE ..'...(3..(F..(.
1ED0 91 00 28 E1 - 11 00 29 33 - 91 00 29 46 - 11 00 29 CE ..(...)3..)F..).
1EE0 91 00 29 E1 - 11 00 2A 33 - 91 00 2A 46 - 11 00 2A 98 ..)...*3..*F..*.
1EF0 91 00 2A AB - 11 00 2A D0 - 91 00 2A E3 - 11 00 2A FF ..*...*...*...*.
1F00 91 00 2B 12 - 11 00 2B 37 - 91 00 2B 4A - 11 00 2B 66 ..+...+7..+J..+f
1F10 91 00 2B 79 - 11 00 2C 01 - 91 00 2C 14 - 11 00 2C 66 ..+y..,...,...,f
1F20 91 00 2C 79 - 11 00 2D 01 - 91 00 2D 14 - 11 00 2D 66 ..,y..-...-...-f
1F30 91 00 2D 79 - 11 00 2E 01 - 91 00 2E 14 - 11 00 2E 66 ..-y...........f
1F40 91 00 2E 79 - 11 00 2F 01 - 91 00 2F 14 - 11 00 2F 66 ...y../.../.../f
1F50 91 00 2F 79 - 11 00 30 01 - 91 00 30 14 - 11 00 30 66 ../y..0...0...0f
1F60 91 00 30 79 - 11 00 31 01 - 91 00 31 14 - 11 00 31 66 ..0y..1...1...1f
1F70 91 00 31 79 - 11 00 32 01 - 91 00 32 14 - 11 00 32 66 ..1y..2...2...2f
1F80 91 00 32 79 - 11 00 33 01 - 91 00 33 14 - 11 00 33 66 ..2y..3...3...3f
1F90 91 00 33 79 - 11 00 34 01 - 91 00 34 14 - 11 00 34 66 ..3y..4...4...4f
1FA0 91 00 34 79 - 11 00 35 01 - 91 00 35 14 - 11 00 35 66 ..4y..5...5...5f
1FB0 91 00 35 79 - 11 00 36 01 - 91 00 36 14 - 11 00 36 66 ..5y..6...6...6f
1FC0 91 00 36 79 - 11 00 37 01 - 91 00 37 14 - 11 00 37 66 ..6y..7...7...7f
1FD0 91 00 37 79 - 11 00 37 CB - 91 00 37 DE - 11 00 38 03 ..7y..7...7...8.
1FE0 91 00 38 16 - 11 00 38 32 - 91 00 38 45 - 11 00 38 6A ..8...82..8E..8j
1FF0 91 00 38 7D - 11 00 38 99 - 91 00 38 AC - 11 00 39 34 ..8}..8...8...94
2000 91 00 39 47 - 11 00 39 99 - 91 00 39 AC - 11 00 3A 34 ..9G..9...9...:4
2010 91 00 3A 47 - 11 00 3A 99 - 91 00 3A AC - 11 00 3B 34 ..:G..:...:...;4
2020 91 00 3B 47 - 11 00 3B 99 - 91 00 3B AC - 11 00 3C 34 ..;G..;...;...<4
2030 91 00 3C 47 - 11 00 3C 99 - 91 00 3C AC - 11 00 3D 34 ..2040 91 00 3D 47 - 11 00 3D 99 - 91 00 3D AC - 11 00 3E 34 ..=G..=...=...>4
2050 91 00 3E 47 - 11 00 3E 99 - 91 00 3E AC - 11 00 3F 34 ..>G..>...>...?4
2060 91 00 3F 47 - 11 00 3F 99 - 91 00 3F AC - 11 00 40 34 ..?G..?...?...@4
2070 91 00 40 47 - 11 00 40 99 - 91 00 40 AC - 11 00 41 34 ..@G..@...@...A4
2080 91 00 41 47 - 11 00 41 99 - 91 00 41 AC - 11 00 42 34 ..AG..A...A...B4
2090 91 00 42 47 - 11 00 42 CF - 91 00 42 E2 - 11 00 42 FE ..BG..B...B...B.
20A0 91 00 43 11 - 11 00 43 36 - 91 00 43 49 - 11 00 43 65 ..C...C6..CI..Ce
20B0 91 00 43 78 - 11 00 43 9D - 91 00 43 B0 - 11 00 43 CC ..Cx..C...C...C.
20C0 91 00 43 DF - 11 00 44 67 - 91 00 44 7A - 11 00 44 CC ..C...Dg..Dz..D.
20D0 91 00 44 DF - 11 00 45 67 - 91 00 45 7A - 11 00 45 CC ..D...Eg..Ez..E.
20E0 91 00 45 DF - 11 00 46 67 - 91 00 46 7A - 11 00 46 CC ..E...Fg..Fz..F.
20F0 91 00 46 DF - 11 00 47 67 - 91 00 47 7A - 11 00 47 CC ..F...Gg..Gz..G.
2100 91 00 47 DF - 11 00 48 67 - 91 00 48 7A - 11 00 48 CC ..G...Hg..Hz..H.
2110 91 00 48 DF - 11 00 49 67 - 91 00 49 7A - 11 00 49 CC ..H...Ig..Iz..I.
2120 91 00 49 DF - 11 00 4A 67 - 91 00 4A 7A - 11 00 4B FE ..I...Jg..Jz..K.
2130 91 00 4C 11 - 11 00 4F 33 - 91 00 4F 46 - 11 00 52 32 ..L...O3..OF..R2
2140 91 00 52 45 - 11 00 53 FF - 91 00 54 12 - 11 00 57 34 ..RE..S...T...W4
2150 91 00 57 47 - 11 00 58 CB - 91 00 58 DE - 11 00 5C 00 ..WG..X...X...\.
2160 91 00 5C 13 - 11 00 5F 35 - 91 00 5F 48 - 11 00 60 CC ..\..._5.._H..`.
2170 91 00 60 DF - 11 00 64 01 - 91 00 64 14 - 11 00 65 98 ..`...d...d...e.
2180 91 00 65 AB - 11 00 68 CD - 91 00 68 E0 - 11 00 6A 64 ..e...h...h...jd
2190 91 00 6A 77 - 11 00 6D 99 - 91 00 6D AC - 11 00 70 CE ..jw..m...m...p.
21A0 91 00 70 E1 - 11 00 72 65 - 91 00 72 78 - 11 00 75 9A ..p...re..rx..u.
21B0 91 00 75 AD - 11 00 76 35 - 91 00 76 48 - 11 00 77 33 ..u...v5..vH..w3
21C0 91 00 77 46 - 11 00 7C 60 - 91 00 7C 73 - 93 00 7D 5E ..wF..|`..|s..}^
21D0 92 00 9C 73 - 93 00 9F 44 - 13 00 9F D5 - 11 00 A1 B3 ...s...D........
21E0 01 00 A1 EA - 81 01 A1 FD - 01 01 A2 4F - 81 00 A2 62 ...........O...b
21F0 01 00 A2 AB - 01 01 A3 0F - 01 00 A3 73 - 81 01 A3 86 ...........s....
2200 01 01 A4 CB - 81 00 A4 DE - 01 00 A4 FA - 81 01 A5 0D ................
2210 01 01 A5 29 - 81 00 A5 3C - 01 00 A5 BB - 01 01 A5 F2 ...)...<........
2220 81 00 A6 05 - 01 00 A6 4E - 01 01 A6 85 - 81 00 A6 98 .......N........
2230 01 00 A8 0A - 81 01 A8 1D - 01 01 A9 8F - 01 00 AA E6 ................
2240 01 01 AB 1D - 81 00 AB 30 - 01 00 AC A2 - 01 01 AE 26 .......0.......&
2250 01 00 AF B3 - 81 01 AF C6 - 01 01 B1 38 - 01 00 B1 6F ...........8...o
2260 81 01 B1 82 - 01 01 B1 9E - 81 00 B1 B1 - 01 00 B1 CD ................
2270 81 01 B1 E0 - 01 01 B1 FC - 01 00 B2 33 - 81 01 B2 46 ...........3...F
2280 01 01 B2 62 - 81 00 B2 75 - 01 00 B2 91 - 01 01 B3 6A ...b...u.......j
2290 03 01 B3 C5 - 13 00 B3 FC - 93 00 B4 96 - 92 00 E9 15 ................
22A0 12 00 FE 9A - 13 00 FE BF - 11 00 02 32 - 91 00 02 45 ...........2...E
22B0 11 00 02 97 - 91 00 02 AA - 11 00 02 FC - 91 00 03 0F ................
22C0 11 00 03 CD - 91 00 03 E0 - 11 00 03 FC - 91 00 04 0F ................
22D0 11 00 05 66 - 91 00 05 79 - 11 00 06 FD - 91 00 07 10 ...f...y........
22E0 11 00 0A 32 - 91 00 0A 45 - 11 00 0B C9 - 91 00 0B DC ...2...E........
22F0 11 00 0D 96 - 91 00 0D A9 - 11 00 0D CE - 91 00 0D E1 ................
2300 11 00 0E CC - 91 00 0E DF - 11 00 10 99 - 91 00 10 AC ................
2310 11 00 10 FE - 91 00 11 11 - 11 00 12 32 - 91 00 12 45 ...........2...E
2320 11 00 13 30 - 91 00 13 43 - 11 00 13 CB - 91 00 13 DE ...0...C........
2330 11 00 14 30 - 91 00 14 43 - 11 00 15 64 - 91 00 15 77 ...0...C...d...w
2340 11 00 16 CE - 91 00 16 E1 - 11 00 16 FD - 91 00 17 10 ................
2350 11 00 1A 32 - 91 00 1A 45 - 11 00 1A CD - 91 00 1A E0 ...2...E........
2360 11 00 1A FC - 91 00 1B 0F - 11 00 1B CD - 91 00 1B E0 ................
2370 11 00 1C 95 - 91 00 1C A8 - 11 00 1C CD - 91 00 1C E0 ................
2380 11 00 1D 32 - 91 00 1D 45 - 11 00 1E FF - 91 00 1F 12 ...2...E........
2390 11 00 20 96 - 91 00 20 A9 - 11 00 21 31 - 91 00 21 44 .. ... ...!1..!D
23A0 11 00 21 96 - 91 00 21 A9 - 11 00 22 31 - 91 00 22 44 ..!...!..."1.."D
23B0 11 00 22 96 - 91 00 22 A9 - 11 00 23 31 - 91 00 23 44 .."..."...#1..#D
23C0 11 00 23 96 - 91 00 23 A9 - 11 00 24 31 - 91 00 24 44 ..#...#...$1..$D
23D0 11 00 25 2F - 91 00 25 42 - 11 00 25 67 - 91 00 25 7A ..%/..%B..%g..%z
23E0 11 00 25 CC - 91 00 25 DF - 11 00 26 67 - 91 00 26 7A ..%...%...&g..&z
23F0 11 00 26 96 - 91 00 26 A9 - 11 00 27 67 - 91 00 27 7A ..&...&...'g..'z
2400 11 00 28 2F - 91 00 28 42 - 11 00 29 63 - 91 00 29 76 ..(/..(B..)c..)v
2410 11 00 2A 97 - 91 00 2A AA - 11 00 2A FC - 91 00 2B 0F ..*...*...*...+.
2420 11 00 2B 97 - 91 00 2B AA - 11 00 2D 64 - 91 00 2D 77 ..+...+...-d..-w
2430 11 00 2E FB - 91 00 2F 0E - 11 00 30 2F - 91 00 30 42 ....../...0/..0B
2440 11 00 32 32 - 91 00 32 45 - 11 00 32 97 - 91 00 32 AA ..22..2E..2...2.
2450 11 00 33 32 - 91 00 33 45 - 11 00 33 CD - 91 00 33 E0 ..32..3E..3...3.
2460 11 00 34 32 - 91 00 34 45 - 11 00 34 CD - 91 00 34 E0 ..42..4E..4...4.
2470 11 00 35 32 - 91 00 35 45 - 11 00 35 97 - 91 00 35 AA ..52..5E..5...5.
2480 11 00 37 64 - 91 00 37 77 - 11 00 38 98 - 91 00 38 AB ..7d..7w..8...8.
2490 11 00 3A 2F - 91 00 3A 42 - 11 00 3B FC - 91 00 3C 0F ....:B..;...<.
24A0 11 00 3D 30 - 91 00 3D 43 - 11 00 3E FD - 91 00 3F 10 ..=0..=C..>...?.
24B0 11 00 40 31 - 91 00 40 44 - 11 00 40 96 - 91 00 40 A9 ..@1..@D..@...@.
24C0 11 00 42 99 - 91 00 42 AC - 11 00 43 CD - 91 00 43 E0 ..B...B...C...C.
24D0 11 00 45 64 - 91 00 45 77 - 11 00 46 98 - 91 00 46 AB ..Ed..Ew..F...F.
24E0 11 00 46 FD - 91 00 47 10 - 11 00 47 62 - 91 00 47 75 ..F...G...Gb..Gu
24F0 11 00 48 96 - 91 00 48 A9 - 11 00 48 FB - 91 00 49 0E ..H...H...H...I.
2500 11 00 49 33 - 91 00 49 46 - 11 00 49 62 - 91 00 49 75 ..I3..IF..Ib..Iu
2510 11 00 4A 33 - 91 00 4A 46 - 11 00 4A 98 - 91 00 4A AB ..J3..JF..J...J.
2520 11 00 4A FD - 91 00 4B 10 - 11 00 4B 98 - 91 00 4B AB ..J...K...K...K.
2530 11 00 4C 33 - 91 00 4C 46 - 11 00 4C 62 - 91 00 4C 75 ..L3..LF..Lb..Lu
2540 11 00 4C FD - 91 00 4D 10 - 11 00 4D 62 - 91 00 4D 75 ..L...M...Mb..Mu
2550 11 00 4D FD - 91 00 4E 10 - 11 00 4E 98 - 91 00 4E AB ..M...N...N...N.
2560 11 00 4E FD - 91 00 4F 10 - 11 00 4F 98 - 91 00 4F AB ..N...O...O...O.
2570 11 00 4F FD - 91 00 50 10 - 11 00 50 98 - 91 00 50 AB ..O...P...P...P.
2580 11 00 50 FD - 91 00 51 10 - 11 00 51 98 - 91 00 51 AB ..P...Q...Q...Q.
2590 11 00 52 33 - 91 00 52 46 - 11 00 53 CA - 91 00 53 DD ..R3..RF..S...S.
25A0 11 00 54 65 - 91 00 54 78 - 11 00 55 63 - 91 00 55 76 ..Te..Tx..Uc..Uv
25B0 11 00 55 FE - 91 00 56 11 - 11 00 56 FC - 91 00 57 0F ..U...V...V...W.
25C0 11 00 57 97 - 91 00 57 AA - 11 00 58 95 - 91 00 58 A8 ..W...W...X...X.
25D0 11 00 59 30 - 91 00 59 43 - 11 00 5A 2E - 91 00 5A 41 ..Y0..YC..Z...ZA
25E0 11 00 5A C9 - 91 00 5A DC - 11 00 5B C7 - 91 00 5B DA ..Z...Z...[...[.
25F0 11 00 5D 31 - 91 00 5D 44 - 11 00 5E FE - 91 00 5F 11 ..]1..]D..^..._.
2600 11 00 5F 99 - 91 00 5F AC - 11 00 60 97 - 91 00 60 AA .._..._...`...`.
2610 11 00 61 32 - 91 00 61 45 - 11 00 62 30 - 91 00 62 43 ..a2..aE..b0..bC
2620 11 00 63 64 - 91 00 63 77 - 11 00 63 C9 - 91 00 63 DC ..cd..cw..c...c.
2630 11 00 64 2E - 91 00 64 41 - 11 00 64 FF - 91 00 65 12 ..d...dA..d...e.
2640 11 00 65 2E - 91 00 65 41 - 11 00 65 66 - 91 00 65 79 ..e...eA..ef..ey
2650 11 00 65 CB - 91 00 65 DE - 11 00 65 FA - 91 00 66 0D ..e...e...e...f.
2660 11 00 67 64 - 91 00 67 77 - 11 00 67 FF - 91 00 68 12 ..gd..gw..g...h.
2670 11 00 68 2E - 91 00 68 41 - 11 00 68 66 - 91 00 68 79 ..h...hA..hf..hy
2680 11 00 68 95 - 91 00 68 A8 - 11 00 68 FA - 91 00 69 0D ..h...h...h...i.
2690 11 00 6A 2E - 91 00 6A 41 - 11 00 6A C9 - 91 00 6A DC ..j...jA..j...j.
26A0 11 00 6B 64 - 91 00 6B 77 - 11 00 6B C9 - 91 00 6B DC ..kd..kw..k...k.
26B0 11 00 6C 2E - 91 00 6C 41 - 11 00 6C 66 - 91 00 6C 79 ..l...lA..lf..ly
26C0 11 00 6D 64 - 91 00 6D 77 - 11 00 6D C9 - 91 00 6D DC ..md..mw..m...m.
26D0 11 00 6E 2E - 91 00 6E 41 - 11 00 6E C9 - 91 00 6E DC ..n...nA..n...n.
26E0 11 00 70 96 - 91 00 70 A9 - 11 00 71 31 - 91 00 71 44 ..p...p...q1..qD
26F0 11 00 72 2F - 91 00 72 42 - 11 00 72 CA - 91 00 72 DD ..r/..rB..r...r.
2700 11 00 73 C8 - 91 00 73 DB - 11 00 74 63 - 91 00 74 76 ..s...s...tc..tv
2710 11 00 75 61 - 91 00 75 74 - 11 00 76 95 - 91 00 76 A8 ..ua..ut..v...v.
2720 11 00 76 FA - 91 00 77 0D - 11 00 77 95 - 91 00 77 A8 ..v...w...w...w.
2730 11 00 7A 31 - 91 00 7A 44 - 11 00 7A CC - 91 00 7A DF ..z1..zD..z...z.
2740 11 00 7B CA - 91 00 7B DD - 11 00 7C 65 - 91 00 7C 78 ..{...{...|e..|x
2750 11 00 7D 63 - 91 00 7D 76 - 11 00 7D FE - 91 00 7E 11 ..}c..}v..}...~.
2760 11 00 7E FC - 91 00 7F 0F - 11 00 80 30 - 91 00 80 43 ..~........0...C
2770 11 00 80 95 - 91 00 80 A8 - 11 00 80 FA - 91 00 81 0D ................
2780 11 00 81 95 - 91 00 81 A8 - 11 00 82 30 - 91 00 82 43 ...........0...C
2790 11 00 82 95 - 91 00 82 A8 - 11 00 83 C9 - 91 00 83 DC ................
27A0 11 00 84 2E - 91 00 84 41 - 11 00 85 62 - 91 00 85 75 .......A...b...u
27B0 11 00 85 C7 - 91 00 85 DA - 11 00 85 FF - 91 00 86 12 ................
27C0 11 00 86 C7 - 91 00 86 DA - 11 00 86 FF - 91 00 87 12 ................
27D0 11 00 87 64 - 91 00 87 77 - 11 00 87 93 - 91 00 87 A6 ...d...w........
27E0 11 00 87 CB - 91 00 87 DE - 11 00 88 93 - 91 00 88 A6 ................
27F0 11 00 89 2E - 91 00 89 41 - 11 00 8A 98 - 91 00 8A AB .......A........
2800 11 00 8A C7 - 91 00 8A DA - 11 00 8A FF - 91 00 8B 12 ................
2810 11 00 8B 64 - 91 00 8B 77 - 11 00 8B C9 - 91 00 8B DC ...d...w........
2820 11 00 8C 2E - 91 00 8C 41 - 11 00 8D 62 - 91 00 8D 75 .......A...b...u
2830 11 00 8D FD - 91 00 8E 10 - 11 00 8E FB - 91 00 8F 0E ................
2840 11 00 8F 60 - 91 00 8F 73 - 11 00 8F 98 - 91 00 8F AB ...`...s........
2850 11 00 8F FD - 91 00 90 10 - 11 00 90 62 - 91 00 90 75 ...........b...u
2860 11 00 92 2F - 91 00 92 42 - 11 00 92 CA - 91 00 92 DD .../...B........
2870 11 00 93 C8 - 91 00 93 DB - 11 00 94 63 - 91 00 94 76 ...........c...v
2880 11 00 95 61 - 91 00 95 74 - 11 00 95 FC - 91 00 96 0F ...a...t........
2890 11 00 96 FA - 91 00 97 0D - 11 00 97 95 - 91 00 97 A8 ................
28A0 11 00 98 93 - 91 00 98 A6 - 11 00 99 2E - 91 00 99 41 ...............A
28B0 11 00 9B CA - 91 00 9B DD - 11 00 9D 61 - 91 00 9D 74 ...........a...t
28C0 11 00 9E 95 - 91 00 9E A8 - 11 00 9E FA - 91 00 9F 0D ................
28D0 11 00 A0 2E - 91 00 A0 41 - 11 00 A0 93 - 91 00 A0 A6 .......A........
28E0 11 00 A1 2E - 91 00 A1 41 - 11 00 A1 93 - 91 00 A1 A6 .......A........
28F0 11 00 A2 2E - 91 00 A2 41 - 11 00 A2 93 - 91 00 A2 A6 .......A........
2900 11 00 A2 CB - 91 00 A2 DE - 11 00 A2 FA - 91 00 A3 0D ................
2910 11 00 A3 95 - 91 00 A3 A8 - 11 00 A4 30 - 91 00 A4 43 ...........0...C
2920 11 00 A5 64 - 91 00 A5 77 - 11 00 A5 C9 - 91 00 A5 DC ...d...w........
2930 11 00 A6 2E - 91 00 A6 41 - 11 00 A6 C9 - 91 00 A6 DC .......A........
2940 11 00 A7 64 - 91 00 A7 77 - 11 00 A7 93 - 91 00 A7 A6 ...d...w........
2950 11 00 A7 CB - 91 00 A7 DE - 11 00 A8 93 - 91 00 A8 A6 ................
2960 11 00 A8 CB - 91 00 A8 DE - 11 00 A8 FA - 91 00 A9 0D ................
2970 11 00 A9 95 - 91 00 A9 A8 - 11 00 AA 30 - 91 00 AA 43 ...........0...C
2980 11 00 AA 95 - 91 00 AA A8 - 11 00 AB C9 - 91 00 AB DC ................
2990 11 00 AC 2E - 91 00 AC 41 - 11 00 AC C9 - 91 00 AC DC .......A........
29A0 11 00 AD 64 - 91 00 AD 77 - 11 00 AD C9 - 91 00 AD DC ...d...w........
29B0 11 00 AE C7 - 91 00 AE DA - 11 00 AF 62 - 91 00 AF 75 ...........b...u
29C0 11 00 AF FD - 91 00 B0 10 - 11 00 B0 2C - 91 00 B0 3F ...........,...?
29D0 11 00 B0 FD - 91 00 B1 10 - 11 00 B1 2C - 91 00 B1 3F ...........,...?
29E0 11 00 B1 C7 - 91 00 B1 DA - 11 00 B2 2C - 91 00 B2 3F ...........,...?
29F0 11 00 B2 C7 - 91 00 B2 DA - 11 00 B5 63 - 91 00 B5 76 ...........c...v
2A00 11 00 B5 FE - 91 00 B6 11 - 11 00 B6 C6 - 91 00 B6 D9 ................
2A10 11 00 B6 FE - 91 00 B7 11 - 11 00 B8 95 - 91 00 B8 A8 ................
2A20 11 00 B9 30 - 91 00 B9 43 - 11 00 BA 2E - 91 00 BA 41 ...0...C.......A
2A30 11 00 BB 2C - 91 00 BB 3F - 11 00 BB 64 - 91 00 BB 77 ...,...?...d...w
2A40 11 00 BB C9 - 91 00 BB DC - 11 00 BC 2E - 91 00 BC 41 ...............A
2A50 11 00 BC 93 - 91 00 BC A6 - 11 00 BD 2E - 91 00 BD 41 ...............A
2A60 11 00 BD C9 - 91 00 BD DC - 11 00 BE 2E - 91 00 BE 41 ...............A
2A70 11 00 BE 93 - 91 00 BE A6 - 11 00 BF 64 - 91 00 BF 77 ...........d...w
2A80 11 00 BF 93 - 91 00 BF A6 - 11 00 C0 FD - 91 00 C1 10 ................
2A90 11 00 C1 2C - 91 00 C1 3F - 11 00 C1 64 - 91 00 C1 77 ...,...?...d...w
2AA0 11 00 C2 2C - 91 00 C2 3F - 11 00 C2 FD - 91 00 C3 10 ...,...?........
2AB0 11 00 C3 2C - 91 00 C3 3F - 11 00 C3 C7 - 91 00 C3 DA ...,...?........
2AC0 11 00 C4 2C - 91 00 C4 3F - 11 00 C4 64 - 91 00 C4 77 ...,...?...d...w
2AD0 11 00 C4 93 - 91 00 C4 A6 - 11 00 C5 64 - 91 00 C5 77 ...........d...w
2AE0 11 00 C5 C9 - 91 00 C5 DC - 11 00 C6 2E - 91 00 C6 41 ...............A
2AF0 11 00 C6 93 - 91 00 C6 A6 - 11 00 C7 64 - 91 00 C7 77 ...........d...w
2B00 11 00 C7 93 - 91 00 C7 A6 - 11 00 C8 FD - 91 00 C9 10 ................
2B10 11 00 C9 62 - 91 00 C9 75 - 11 00 C9 FD - 91 00 CA 10 ...b...u........
2B20 11 00 CA 2C - 91 00 CA 3F - 11 00 CA C7 - 91 00 CA DA ...,...?........
2B30 11 00 CB C5 - 91 00 CB D8 - 11 00 CC 60 - 91 00 CC 73 ...........`...s
2B40 11 00 CD CA - 91 00 CD DD - 11 00 CD F9 - 91 00 CE 0C ................
2B50 11 00 CE 94 - 91 00 CE A7 - 11 00 CE F9 - 91 00 CF 0C ................
2B60 11 00 CF 31 - 91 00 CF 44 - 11 00 CF 96 - 91 00 CF A9 ...1...D........
2B70 11 00 CF C5 - 91 00 CF D8 - 11 00 D0 96 - 91 00 D0 A9 ................
2B80 11 00 D0 FB - 91 00 D1 0E - 11 00 D2 2F - 91 00 D2 42 .........../...B
2B90 11 00 D2 94 - 91 00 D2 A7 - 11 00 D3 2F - 91 00 D3 42 .........../...B
2BA0 11 00 D3 94 - 91 00 D3 A7 - 11 00 D5 61 - 91 00 D5 74 ...........a...t
2BB0 11 00 D5 FC - 91 00 D6 0F - 11 00 D6 FA - 91 00 D7 0D ................
2BC0 11 00 D8 2E - 91 00 D8 41 - 11 00 D8 93 - 91 00 D8 A6 .......A........
2BD0 11 00 D8 F8 - 91 00 D9 0B - 11 00 D9 C9 - 91 00 D9 DC ................
2BE0 11 00 D9 F8 - 91 00 DA 0B - 11 00 DA 30 - 91 00 DA 43 ...........0...C
2BF0 11 00 DA 95 - 91 00 DA A8 - 11 00 DB 30 - 91 00 DB 43 ...........0...C
2C00 11 00 DB F8 - 91 00 DC 0B - 11 00 DD 2C - 91 00 DD 3F ...........,...?
2C10 11 00 DD C7 - 91 00 DD DA - 11 00 DE 62 - 91 00 DE 75 ...........b...u
2C20 11 00 DE C7 - 91 00 DE DA - 11 00 DF 62 - 91 00 DF 75 ...........b...u
2C30 11 00 E0 96 - 91 00 E0 A9 - 11 00 E0 FB - 91 00 E1 0E ................
2C40 11 00 E2 2F - 91 00 E2 42 - 11 00 E2 94 - 91 00 E2 A7 .../...B........
2C50 11 00 E2 F9 - 91 00 E3 0C - 11 00 E3 94 - 91 00 E3 A7 ................
2C60 11 00 E5 61 - 91 00 E5 74 - 11 00 E5 C6 - 91 00 E5 D9 ...a...t........
2C70 11 00 E6 2B - 91 00 E6 3E - 11 00 E6 63 - 91 00 E6 76 ...+...>...c...v
2C80 11 00 E7 2B - 91 00 E7 3E - 11 00 E7 63 - 91 00 E7 76 ...+...>...c...v
2C90 11 00 E7 92 - 91 00 E7 A5 - 11 00 E8 2D - 91 00 E8 40 ...........-...@
2CA0 11 00 E8 92 - 91 00 E8 A5 - 11 00 EA 5F - 91 00 EA 72 ..........._...r
2CB0 11 00 EB C9 - 91 00 EB DC - 11 00 ED 60 - 91 00 ED 73 ...........`...s
2CC0 11 00 EF C6 - 91 00 EF D9 - 11 00 F0 61 - 91 00 F0 74 ...........a...t
2CD0 11 00 F2 2E - 91 00 F2 41 - 11 00 F3 C5 - 91 00 F3 D8 .......A........
2CE0 11 00 F4 F9 - 91 00 F5 0C - 11 00 F5 5E - 91 00 F5 71 ...........^...q
2CF0 11 00 F7 61 - 91 00 F7 74 - 11 00 F8 5F - 91 00 F8 72 ...a...t..._...r
2D00 11 00 F8 FA - 91 00 F9 0D - 11 00 F9 95 - 91 00 F9 A8 ................
2D10 11 00 FA 30 - 91 00 FA 43 - 11 00 FA 95 - 91 00 FA A8 ...0...C........
2D20 11 00 FB 30 - 91 00 FB 43 - 11 00 FC 2E - 91 00 FC 41 ...0...C.......A
2D30 11 00 FC 93 - 91 00 FC A6 - 11 00 FD C7 - 91 00 FD DA ................
2D40 11 00 FE C5 - 91 00 FE D8 - 11 00 FF 60 - 91 00 FF 73 ...........`...s
2D50 11 00 FF FB - 91 00 00 0E - 11 00 00 60 - 91 00 00 73 ...........`...s
2D60 11 00 00 FB - 91 00 01 0E - 11 00 02 2F - 91 00 02 42 .........../...B
2D70 11 00 02 5E - 91 00 02 71 - 11 00 02 96 - 91 00 02 A9 ...^...q........
2D80 11 00 03 94 - 91 00 03 A7 - 11 00 04 2F - 91 00 04 42 .........../...B
2D90 11 00 04 5E - 91 00 04 71 - 11 00 04 96 - 91 00 04 A9 ...^...q........
2DA0 11 00 05 5E - 91 00 05 71 - 11 00 05 F9 - 91 00 06 0C ...^...q........
2DB0 11 00 06 94 - 91 00 06 A7 - 11 00 06 F9 - 91 00 07 0C ................
2DC0 11 00 07 94 - 91 00 07 A7 - 11 00 08 92 - 91 00 08 A5 ................
2DD0 11 00 08 F7 - 91 00 09 0A - 11 00 09 C8 - 91 00 09 DB ................
2DE0 11 00 09 F7 - 91 00 0A 0A - 11 00 0A 2F - 91 00 0A 42 .........../...B
2DF0 11 00 0A 94 - 91 00 0A A7 - 11 00 0B 2F - 91 00 0B 42 .........../...B
2E00 11 00 0C 2D - 91 00 0C 40 - 11 00 0C C8 - 91 00 0C DB ...-...@........
2E10 11 00 0C F7 - 91 00 0D 0A - 11 00 0D C8 - 91 00 0D DB ................
2E20 11 00 0D F7 - 91 00 0E 0A - 11 00 0E 92 - 91 00 0E A5 ................
2E30 11 00 0E F7 - 91 00 0F 0A - 11 00 0F 2F - 91 00 0F 42 .........../...B
2E40 11 00 0F 94 - 91 00 0F A7 - 11 00 10 92 - 91 00 10 A5 ................
2E50 11 00 11 2D - 91 00 11 40 - 11 00 12 2B - 91 00 12 3E ...-...@...+...>
2E60 11 00 14 C7 - 91 00 14 DA - 11 00 15 2C - 91 00 15 3F ...........,...?
2E70 11 00 16 F9 - 91 00 17 0C - 11 00 18 2D - 91 00 18 40 ...........-...@
2E80 11 00 18 92 - 91 00 18 A5 - 11 00 1B C7 - 91 00 1B DA ................
2E90 11 00 1D 5E - 91 00 1D 71 - 11 00 1E C8 - 91 00 1E DB ...^...q........
2EA0 11 00 1E F7 - 91 00 1F 0A - 11 00 22 2C - 91 00 22 3F ..........",.."?
2EB0 11 00 23 F9 - 91 00 24 0C - 11 00 26 F8 - 91 00 27 0B ..#...$...&...'.
2EC0 11 00 29 F7 - 91 00 2A 0A - 11 00 2A 2F - 91 00 2A 42 ..)...*...*/..*B
2ED0 11 00 2B 90 - 91 00 2B A3 - 11 00 2B C8 - 91 00 2B DB ..+...+...+...+.
2EE0 11 00 2D 5F - 91 00 2D 72 - 11 00 30 5E - 91 00 30 71 ..-_..-r..0^..0q
2EF0 11 00 31 2F - 91 00 31 42 - 11 00 31 5E - 91 00 31 71 ..1/..1B..1^..1q
2F00 11 00 33 C4 - 91 00 33 D7 - 11 00 35 C7 - 91 00 35 DA ..3...3...5...5.
2F10 11 00 36 FB - 91 00 37 0E - 11 00 37 60 - 91 00 37 73 ..6...7...7`..7s
2F20 11 00 37 FB - 91 00 38 0E - 11 00 38 F9 - 91 00 39 0C ..7...8...8...9.
2F30 11 00 3A 2D - 91 00 3A 40 - 11 00 3B 2B - 91 00 3B 3E ..:-..:@..;+..;>
2F40 11 00 3B C6 - 91 00 3B D9 - 11 00 3C 2B - 91 00 3C 3E ..;...;...<+..<>
2F50 11 00 3D 5F - 91 00 3D 72 - 11 00 3E F6 - 91 00 3F 09 ..=_..=r..>...?.
2F60 11 00 40 2A - 91 00 40 3D - 11 00 40 FB - 91 00 41 0E ..@*..@=..@...A.
2F70 11 00 41 2A - 91 00 41 3D - 11 00 41 C5 - 91 00 41 D8 ..A*..A=..A...A.
2F80 11 00 42 2A - 91 00 42 3D - 11 00 42 FB - 91 00 43 0E ..B*..B=..B...C.
2F90 11 00 43 60 - 91 00 43 73 - 11 00 43 C5 - 91 00 43 D8 ..C`..Cs..C...C.
2FA0 11 00 44 60 - 91 00 44 73 - 11 00 44 C5 - 91 00 44 D8 ..D`..Ds..D...D.
2FB0 11 00 45 60 - 91 00 45 73 - 11 00 45 C5 - 91 00 45 D8 ..E`..Es..E...E.
2FC0 11 00 46 2A - 91 00 46 3D - 11 00 46 C5 - 91 00 46 D8 ..F*..F=..F...F.
2FD0 11 00 48 92 - 91 00 48 A5 - 11 00 48 F7 - 91 00 49 0A ..H...H...H...I.
2FE0 11 00 49 5C - 91 00 49 6F - 11 00 4A 2D - 91 00 4A 40 ..I\..Io..J-..J@
2FF0 11 00 00 00 - 00 00 00 00 - 00 00 00 00 - 00 00 00 00 ................
Hi, haven't had a chance to clean and check the HD20 since it arrived, let alone try the 400K data cable. Three new cats added to the household is more than "entertaining" enough, hopefully I can get some quality time with my Macorabilia next weekend.
It should be possible to replicate these signals at least, I know I could make the Mac smile with no disk drives or hard drives attached this way, but we want to make sense of this stuff so we can have a read/write disk.
I've been looking at GCR. It isn't too particularly complicated, you basically have to time things out and use the one of the tables here:
http://en.wikipedia.org/wiki/Group_code_recording
BUT I saw something that frightened me a bit on page 12 of this PDF (printed page 6):
http://www.brutal-deluxe.fr/documentation/iwm/apple2_IWM_Spec_Rev19_1982.pdf
Under WRDATA, it says "a transition occurs on this output for each one bit". WTF?? Does this mean that it's GCR'd AND THEN encoded again?? That doesn't make sense to me, it seems that GCR is the format sent and received directly on the magnetic media. Maybe I'm not reading this right, but to me this means:
Original Data:
1010 1011 1001 0110 1010
GCR'ed Data:
11010 11011 11001 10110 11010
Encoded again with a transition for each 1:
10010 01001 01000 10010 01000
Somebody please talk some sense into me, this can't be right. "a transition occurs on this output for each one bit" must mean something else, maybe it's describing GCR itself somehow.
I've been looking at GCR. It isn't too particularly complicated, you basically have to time things out and use the one of the tables here:
http://en.wikipedia.org/wiki/Group_code_recording
BUT I saw something that frightened me a bit on page 12 of this PDF (printed page 6):
http://www.brutal-deluxe.fr/documentation/iwm/apple2_IWM_Spec_Rev19_1982.pdf
Under WRDATA, it says "a transition occurs on this output for each one bit". WTF?? Does this mean that it's GCR'd AND THEN encoded again?? That doesn't make sense to me, it seems that GCR is the format sent and received directly on the magnetic media. Maybe I'm not reading this right, but to me this means:
Original Data:
1010 1011 1001 0110 1010
GCR'ed Data:
11010 11011 11001 10110 11010
Encoded again with a transition for each 1:
10010 01001 01000 10010 01000
Somebody please talk some sense into me, this can't be right. "a transition occurs on this output for each one bit" must mean something else, maybe it's describing GCR itself somehow.
Based on the discussion regarding how the input clock affects the "bit cell" length and other reading of the "theory of operation" section preceding that statement my guess on how to interpret it is that the output on the /WRDATA line is in the form of *strobes*, and "a transition occurs on this output for each one bit" means that if the bit is a one it strobes, if it's a zero it doesn't. The strobe is the "transition".Somebody please talk some sense into me, this can't be right. "a transition occurs on this output for each one bit" must mean something else, maybe it's describing GCR itself somehow.
(Actually, if you read the whole document that pretty much has to be how it works based on the description of how data is *read*.)
Anyway. To go way back in this discussion and how it applies to understanding how to generate and extract data from the disk interface: Have you considered putting your snoop cable inline with an external floppy disk drive and executing some controlled tests there? (Such as reading or writing a trivial ASCII text file?) The Mac filesystem is pretty well documented and the floppy drive is dumb. In such an arrangement you can be looking for *known* data, thus vastly simplifying the task of writing a program for your microcontroller which can make it able to intelligently snoop on IWM "conversations". By banging straight on the HD-20 you've put yourself the position of trying to "learn the language" of the HD-20, which is unknown, at the same time you're struggling with getting your ear to reliably detect the phonemes used to pronounce said language. If you teach your test rig how to snoop on a floppy drive you'll be way ahead in trying to reverse-engineer the HD-20 command set.
(Again, totally just a suggestion.)
Very very good idea with the floppy drive stuff.
With the strobing, that makes good sense. It explains the all the 13-tick samples I got. If the serial runs at 500 kbps, aka 500 kHz, then each bit has a 48 tick window. From this, I gather that a strobe is commonly about 0.5 µs, whereas the window for a serial bit is 2 µs.
Even though I am stabbing a bit at deciphering some serial data, I think it is equally important to figure out some more signal characteristics. For example, I could feed some data to the Mac that I've observed from and HD 20 and observe how it reacts to interruptions or variations in timing. I can also emulate the HD 20 to the point of a happy mac icon. This will double-check a lot of physical characteristics. It maybe provides us with a sense of false hope, but it is easy to do and allows me to strategically substitute in logical methods for regurgitation of unknown data. I can nail down what things I have to wait for from the Mac, what things the Mac waits for, etc.
With the strobing, that makes good sense. It explains the all the 13-tick samples I got. If the serial runs at 500 kbps, aka 500 kHz, then each bit has a 48 tick window. From this, I gather that a strobe is commonly about 0.5 µs, whereas the window for a serial bit is 2 µs.
Even though I am stabbing a bit at deciphering some serial data, I think it is equally important to figure out some more signal characteristics. For example, I could feed some data to the Mac that I've observed from and HD 20 and observe how it reacts to interruptions or variations in timing. I can also emulate the HD 20 to the point of a happy mac icon. This will double-check a lot of physical characteristics. It maybe provides us with a sense of false hope, but it is easy to do and allows me to strategically substitute in logical methods for regurgitation of unknown data. I can nail down what things I have to wait for from the Mac, what things the Mac waits for, etc.
BTW, just one thing I want to clarify a bit when I toss an idea/technical guess into this thread... if I fail to throw a "kudos" for the work you've done so far or come across as a bit "critical" it's just me being me. (Which is usually "busy and not having a whole lot of time to compose my thoughts".) You deserve a lot of credit for taking this project this far... *much* further than usually seems to happen with these "wouldn't it be cool if someone made a device to do X for my old Mac, like other people have made to do X for their (insert other obsolete system here) machines?" threads. If I suggest that you do something differently from how you're doing it you can usually take it as an honest attempt to be helpful rather than simply being contrary or critical.
So, with that out of the way: I can certainly see the value in your suggestion of logging conversations with the HD-20 without necessarily understanding them so you can perform experiments like playing back what appears to be the initialization acknowledgement to see if it tricks the Mac into thinking an HD-20 is attached when one isn't. That said, I still think it might be of great value to downplay the HD-20 *temporarily* and concentrate on nailing down what it takes to make your microcontroller fully conversant with "IWM-speak". I'm a big believer in looking for opportunities to break big projects into smaller modules that can be tackled individually, and with the documentation you have on hand perfecting your IWM signal processing before continuing seems like the lowest-hanging fruit. And again, based on the documentation you have on hand probably the best way to do *that* would be to concentrate on what the IWM was designed to do, which is speak to a floppy drive.
There are certain fundamentals about the HD-20 that we just don't know... one of the biggest holes in our knowledge is we have no idea how seeking/sector addressing is performed with the device. Does the Mac know about the low-level geometry of the drive and use the control lines to send track stepping and head selection commands, or is the HD-20 treated as a linear block of sectors and addressing is entirely encoded inside GCR-encoded bytes sent via the IWM shift register? We could probably make some educated guesses about this by blindly watching conversation logs and watching how often the control lines change when doing a bulk data transfer, but we won't really learn anything about the actual syntax. (Particularly if it *does* use GCR-encoded control bytes extensively.) We *know* based on the documentation how the floppy drive should react when its control lines are toggled and also know it doesn't accept any high-level commands from the IWM's serial shift register so the task of separating wheat (data) from the chaff (synchronization bits and filesystem headers) will be *much* easier because there won't be any unknown needles (HD-20 control bytes) mixed in to confuse you.
This seems to me a somewhat logical order of operations:
1: Wire up your snoop cable to an external floppy drive. Log control line transitions and the IWM serial bits while performing some known tasks. (Mounting/unmounting disks, reading a sector, writing a sector, formatting, etc.)
2: Based on your logs and the IWM documentation, teach your microcontroller how to understand GCR to the point that you can write a known value to the disk and have the microcontroller able to grab the sector as its written and unpack it to its original form.
3: If you have enough memory/your microcontroller is capable enough, set it up so it can fully emulate an external drive. (This could actually be a two-step implementation. Step 1 would be "emulating the raw bits", in which your microcontroller fully decodes control signals but writes the GCR bytes in raw form to its flash device, which means that emulating an 800k floppy would probably take about 1MB of flash. Step 2 would be real-time encoding/decoding of the GCR signals and mapping them to an emulator-style disk image on a FAT formatted flash drive. This might require a fairly powerful microcontroller.) Note that if you get this working you'll have a marketable device already. Many people have wanted a flash replacement for the Mac floppy drive.
4. If you really want to make sure you got everything right, reverse it. Hook a Mac floppy drive up to your microcontroller and see if you can read disks produced by a Mac and write images out to real disks that a Mac can read. This proves that not only have you mastered *speaking* to an IWM, you can fully emulate/replace one as well.
5. *Then* you'll be fully equipped to tackle the project of cracking the protocol spoken by the HD-20. Put your now very highly educated IWM protocol analyzer/emulator back inline with the HD-20 and not only watch the signals, but watch the *bytes inside the signals*. You'll be in a much better position to understand what you see.
But again, take this totally with a grain of salt. If you think you're up to skipping steps 1-4, well, you might manage it. I do again think it's worth noting that the product of step #3 is already something people want, so even if you fail to ever crack the HD-20 you've already won if you get that far.
So, with that out of the way: I can certainly see the value in your suggestion of logging conversations with the HD-20 without necessarily understanding them so you can perform experiments like playing back what appears to be the initialization acknowledgement to see if it tricks the Mac into thinking an HD-20 is attached when one isn't. That said, I still think it might be of great value to downplay the HD-20 *temporarily* and concentrate on nailing down what it takes to make your microcontroller fully conversant with "IWM-speak". I'm a big believer in looking for opportunities to break big projects into smaller modules that can be tackled individually, and with the documentation you have on hand perfecting your IWM signal processing before continuing seems like the lowest-hanging fruit. And again, based on the documentation you have on hand probably the best way to do *that* would be to concentrate on what the IWM was designed to do, which is speak to a floppy drive.
There are certain fundamentals about the HD-20 that we just don't know... one of the biggest holes in our knowledge is we have no idea how seeking/sector addressing is performed with the device. Does the Mac know about the low-level geometry of the drive and use the control lines to send track stepping and head selection commands, or is the HD-20 treated as a linear block of sectors and addressing is entirely encoded inside GCR-encoded bytes sent via the IWM shift register? We could probably make some educated guesses about this by blindly watching conversation logs and watching how often the control lines change when doing a bulk data transfer, but we won't really learn anything about the actual syntax. (Particularly if it *does* use GCR-encoded control bytes extensively.) We *know* based on the documentation how the floppy drive should react when its control lines are toggled and also know it doesn't accept any high-level commands from the IWM's serial shift register so the task of separating wheat (data) from the chaff (synchronization bits and filesystem headers) will be *much* easier because there won't be any unknown needles (HD-20 control bytes) mixed in to confuse you.
This seems to me a somewhat logical order of operations:
1: Wire up your snoop cable to an external floppy drive. Log control line transitions and the IWM serial bits while performing some known tasks. (Mounting/unmounting disks, reading a sector, writing a sector, formatting, etc.)
2: Based on your logs and the IWM documentation, teach your microcontroller how to understand GCR to the point that you can write a known value to the disk and have the microcontroller able to grab the sector as its written and unpack it to its original form.
3: If you have enough memory/your microcontroller is capable enough, set it up so it can fully emulate an external drive. (This could actually be a two-step implementation. Step 1 would be "emulating the raw bits", in which your microcontroller fully decodes control signals but writes the GCR bytes in raw form to its flash device, which means that emulating an 800k floppy would probably take about 1MB of flash. Step 2 would be real-time encoding/decoding of the GCR signals and mapping them to an emulator-style disk image on a FAT formatted flash drive. This might require a fairly powerful microcontroller.) Note that if you get this working you'll have a marketable device already. Many people have wanted a flash replacement for the Mac floppy drive.
4. If you really want to make sure you got everything right, reverse it. Hook a Mac floppy drive up to your microcontroller and see if you can read disks produced by a Mac and write images out to real disks that a Mac can read. This proves that not only have you mastered *speaking* to an IWM, you can fully emulate/replace one as well.
5. *Then* you'll be fully equipped to tackle the project of cracking the protocol spoken by the HD-20. Put your now very highly educated IWM protocol analyzer/emulator back inline with the HD-20 and not only watch the signals, but watch the *bytes inside the signals*. You'll be in a much better position to understand what you see.
But again, take this totally with a grain of salt. If you think you're up to skipping steps 1-4, well, you might manage it. I do again think it's worth noting that the product of step #3 is already something people want, so even if you fail to ever crack the HD-20 you've already won if you get that far.
IN THEORY
A device could be created that emulates an HD-20 AND an external floppy drive with an HD-20 startup disk image in it, allowing a Mac 512 to boot completely from the device.
That sounds pretty cool to me.
A device could be created that emulates an HD-20 AND an external floppy drive with an HD-20 startup disk image in it, allowing a Mac 512 to boot completely from the device.
That sounds pretty cool to me.
yessir.
If you wanted to be REALLY slick, once you get the device running, you could use a USB or SD card based flash device, store diskcopy 4.2 or diskcopy 6 IMG files on the device. Then the device would read/write the IMG files as if they were the floppy itself.
Then you can pick which file you want to open up as a "floppy" or "hardfile" and it mounts. hehe. heck you could even write a lightweight app to signal the device to list the number of image files, which image files, and pick which one you want to mount as a floppy.
Im sure DiskCopy images are in a totally different format than RAW floppy data but hey, thats what microcontroller RAM is for. the RAM is used as the I/O for raw floppy data. once you eject the disk from the finder, the MCU picks up the eject command and then writes the RAW data in RAM as an updated DC4.2 or DC6 IMG file. Simple. Not so simple for an HD20 volume, but heck you can use a HFV file for that. hehehehehehe
possibilities are endless.
If you wanted to be REALLY slick, once you get the device running, you could use a USB or SD card based flash device, store diskcopy 4.2 or diskcopy 6 IMG files on the device. Then the device would read/write the IMG files as if they were the floppy itself.
Then you can pick which file you want to open up as a "floppy" or "hardfile" and it mounts. hehe. heck you could even write a lightweight app to signal the device to list the number of image files, which image files, and pick which one you want to mount as a floppy.
Im sure DiskCopy images are in a totally different format than RAW floppy data but hey, thats what microcontroller RAM is for. the RAM is used as the I/O for raw floppy data. once you eject the disk from the finder, the MCU picks up the eject command and then writes the RAW data in RAM as an updated DC4.2 or DC6 IMG file. Simple. Not so simple for an HD20 volume, but heck you can use a HFV file for that. hehehehehehe
possibilities are endless.
Bingo. Once you get your "floppy emulator" to work completely it's almost certainly just a case of elaborating the software to make it emulate an HD-20... or, like you suggest, emulate both an HD-20 and a floppy drive at the same time. There appears to be sufficient documentation for the floppy controller in the Mac available to write a rudimentary volume management program that could run on the Mac itself and signal the through the IWM when a user might want to switch disk images assigned to the various devices if you really wanted to get fancy. (Or you could do it with an LCD and a few switches on the device itself, or... whatever floats your boat, really.)IN THEORY
A device could be created that emulates an HD-20 AND an external floppy drive with an HD-20 startup disk image in it, allowing a Mac 512 to boot completely from the device.
That sounds pretty cool to me.
Actually, I'm fairly certain (uncompressed) DiskCopy images are essentially the same as HFV files other than they have some header information attached. (You can write 1.44 MB floppy disks from DiskCopy images on Windows or Linux machines as if it were a raw .dsk file just by specifying that rawrite or dd skip some number of bytes at the beginning. If that's the case assuming your microcontroller program is already sophisticated enough to deal with images stored on a DOS filesystem supporting DiskCopy images wouldn't really be any harder than "normal" disk images as you might use in vMac or BasiliskII.)Im sure DiskCopy images are in a totally different format than RAW floppy data but hey, thats what microcontroller RAM is for. the RAM is used as the I/O for raw floppy data. once you eject the disk from the finder, the MCU picks up the eject command and then writes the RAW data in RAM as an updated DC4.2 or DC6 IMG file. Simple. Not so simple for an HD20 volume, but heck you can use a HFV file for that. hehehehehehe.
Of course the Rev. 0.1 floppy emulator would probably just emulate the mechanics of a floppy drive and store GCR-encoded bytes in a completely raw form. Refinement and ease of use comes later. ;^)
Anyway... I do wish I were better at reading assembly language. It would be nice to figure out whether the Mac uses the same GCR encoding loop that it does when writing floppy sectors when it prepares a chunk of data to transfer to the HD-20. I'm basically wondering if it's *possible* that when talking to the HD-20 it's able to "break the rules" of the IWM and use it as a straight UART without the overhead of GCR encoding. My reading of the IWM documentation suggests that wouldn't really work because the clock synchronization would fail after too many consecutive zeros. (IE, if you sent it "10001011 it would raise an error *and stop reading* after the third zero and not bother reading the rest of the bits into its buffer, thus not allowing you to ignore the error and assume the data byte was ok regardless.) One thing to look for in the Z8 code would be a loop that does GCR packing/unpacking. I've had this nagging thought that one of these two things might be true:
A: It's possible, if dangerous, to bend the rules of the IWM, and send straight unencoded data over it somehow.
B: Is it possible that GCR-encoded data from the Mac destined for the hard drive is never actually decoded by the Z8 and is instead just written to it as GCR? The drive has an RLL encoder on it which means that the GCR encoding would be redundant and waste space, but... it seems like a possibility.
I imagine B: is probably more likely than A: if it turns out that the Z8 doesn't encode/decode GCR. Of course, I'm probably just overthinking it. The Z8 is a pretty fast chip, it shouldn't slow things down much to have it decode GCR into a sector buffer.
Those are interesting things to think about and to keep in mind as I poke around.
Today, I adjusted my setup so that it actually spits out binary data and the time since the last data was recorded. Looking at this after a short while, I realized that I am missing many of the impulses in the serial data. I'll have to devise a way to pick up on impulses better.
I am no longer certain that they are 0.5µS long. Tracing through my program, it actually takes me about that long to gather a sample right now.
Interrupts can catch impulses, but that makes the program much less efficient. I'm trying to think of a hardware solution, maybe using T flip-flops. That could get messy really fast.
Today, I adjusted my setup so that it actually spits out binary data and the time since the last data was recorded. Looking at this after a short while, I realized that I am missing many of the impulses in the serial data. I'll have to devise a way to pick up on impulses better.
I am no longer certain that they are 0.5µS long. Tracing through my program, it actually takes me about that long to gather a sample right now.
Interrupts can catch impulses, but that makes the program much less efficient. I'm trying to think of a hardware solution, maybe using T flip-flops. That could get messy really fast.
There is a problem with the state diagram I posted. I thought that the 74109 was negative-edge triggered for some reason, in fact it is positive edge triggered. So the inverting gates going into the clock inputs make it act like it's negative edge triggered.
Glancing at it, this changes any (1,x,x) into a (0,x,x) and (x,x,1) into (x,x,0). I'm not 100% sure what else it affects.
Glancing at it, this changes any (1,x,x) into a (0,x,x) and (x,x,1) into (x,x,0). I'm not 100% sure what else it affects.
I put T-flip-flops in with the read and write lines, unfortunately I'm STILL getting impulse signals through the flip-flop.
So the signal must be noisy and triggering the flip flop multiple times per impulse unless I wired something wrong. (I'm using a 74LS109 with J = 1, /K = 0, /Set = 1, /Reset = 1, original signal fed to clock, output signal taken from Q.) So what I most likely need is a very specialized low-pass filter (MAYBE that would work) or a schmitt trigger between the Mac stuff and the T-Flip-Flop. I don't have any schmitt trigger chips on hand unfortunately.
BAH.
This will allow me to record the serial data better once I get it figured out though.
Also, from what I've seen, at least during early stages of startup, the serial speed seems closer to 450bps than 500bps.
So the signal must be noisy and triggering the flip flop multiple times per impulse unless I wired something wrong. (I'm using a 74LS109 with J = 1, /K = 0, /Set = 1, /Reset = 1, original signal fed to clock, output signal taken from Q.) So what I most likely need is a very specialized low-pass filter (MAYBE that would work) or a schmitt trigger between the Mac stuff and the T-Flip-Flop. I don't have any schmitt trigger chips on hand unfortunately.
BAH.
This will allow me to record the serial data better once I get it figured out though.
Also, from what I've seen, at least during early stages of startup, the serial speed seems closer to 450bps than 500bps.
The IWM documentation sounds like the pulse itself is indeed a lot shorter than the 2 microsecond pulse window. (The chip data suggests that /RDDATA works with pulses in the 300ns-width ballpark.) I'm not surprised you're missing some.I am no longer certain that they are 0.5µS long. Tracing through my program, it actually takes me about that long to gather a sample right now.![]()
A little math based on the size of the sectors, sectors per track and rotational speed of the 400/800k floppy drive indicates that the Macintosh floppy drive writes *bytes* to the floppy drive sectors at about 322,000 bits per second. This is *not* counting the overhead from GCR and other synchronization bits. Add that in and the bit rate is going to be about 450,000-500,000 bps. This jives roughly with the IWM documentation's statement that the "fast mode" uses 2µ second "bit cells", but... keep in mind the timings are going to be slightly "off" on the Mac, because it seems to me that the documentation was written assuming an even 7 or 8Mhz clock. The Mac derives the IWM's clock from that single 15.6Mhz oscillator that's divided up for everything in the system so I'd expect that the timing would be a little slower than 500kbp... I guess by about 3%, that assuming they're using the bit-cell divider settings for an 8Mhz clock. (If they were treating 15.6/2 as a 7Mhz clock it would of course be substantially faster than 500kps.)Also, from what I've seen, at least during early stages of startup, the serial speed seems closer to 450bps than 500bps.
Of course, that's not the 10% difference you're seeing, so... it could just be you're "slipping time" as you miss pulses. (Being enough out of sync could also make the signal look "noisy" as you see two pulses within a single "listening window"... assuming I vaguely understand how you have this wired up, which I may not.)
If you have an oscilloscope lying around that can handle 1Mhz-ish signals it would probably be useful to snoop with that and get an idea of how wide the pulses actually are.
I tried with my scope, but unfortunately, the Mac boots in literally 5 seconds and it can't sync onto anything. I can't do a freeze screen with this scope. It does have some very nice time/frequency/amplitude measurement features though.
I'm not sure what's up with the flip flop. Maybe the pulses are too fast for it or something. I'll have to think about that for a while and browse the datasheet.
I'm not sure what's up with the flip flop. Maybe the pulses are too fast for it or something. I'll have to think about that for a while and browse the datasheet.
My microcontroller has 8 bits of input compare that I may be able to use for this. Basically, it automatically flags and stores timing data of rising edges. This happens in parallel with execution, so no time is wasted operating the system. I'm not sure if that will help but it's good to keep in mind. It could most definitely pick up all impulses, but it buffers only ONE, so I have to grab and store that information before the next impulse.
heres an idea. Pull out the 15mhz clock from the mac and use that as a reference clock?? Everything else runs off of this clock, So can your microcontroller?
would keep instruction for instruction timing accurate, and machine cycles synced. Then creating a timer interrupt for the bit timing window would be MUCH easier.
would keep instruction for instruction timing accurate, and machine cycles synced. Then creating a timer interrupt for the bit timing window would be MUCH easier.
Doh, you're right. I hadn't thought about how "intermittent" the IWM data would be. Without a good memory scope you're sort of stuck. (I suppose in theory you could write a little assembly-language program that would put the IWM into a continuous write loop, basically telling it to write a never-ending sector to a disk in an external floppy drive. That would let you scope it, I guess, but I'll admit it's a tall order.)I tried with my scope, but unfortunately, the Mac boots in literally 5 seconds and it can't sync onto anything. I can't do a freeze screen with this scope. It does have some very nice time/frequency/amplitude measurement features though.
Exactly what are you running in the way of a microcontroller, out of curiosity? The only one I have any experience with is the Propeller. I have a vague idea how I'd try to take a crack at synchronization code with that, but it sort of depends on the Propeller's unique ability to run multiple tasks in parallel.
68HC12. (9S12DP256 @ 24MHz) "Dragon12 Plus USB". I've had a couple of Dragons and they've become nostalgic, much in the same sense as our beloved Macs.
Although it's old tech and expensive, it's amazing for assembly programming. I love the instruction set. It also has countless ports and subsystems. Unfortunately it has only like 2k of RAM I can use. Apparently it's expandable but that takes up some ports and potentially slows things down.
I'm in the process of moving so this project may experience a lack of activity. But I'm notorious for coming back to projects. I do not forget or give up on these things. I don't think anyone here expects an immediate solution from me, it's more about the ride than the destination with these things. Think about how much we have and will learn.
The actual result will be like, oh wow, a Mac 512k boots off of this circuit board that has 5 zillion gigabytes of storage. Cool, yes, but nothing compared to ripping into and figuring out this awesome Woz stuff.
Although it's old tech and expensive, it's amazing for assembly programming. I love the instruction set. It also has countless ports and subsystems. Unfortunately it has only like 2k of RAM I can use. Apparently it's expandable but that takes up some ports and potentially slows things down.
I'm in the process of moving so this project may experience a lack of activity. But I'm notorious for coming back to projects. I do not forget or give up on these things. I don't think anyone here expects an immediate solution from me, it's more about the ride than the destination with these things. Think about how much we have and will learn.
The actual result will be like, oh wow, a Mac 512k boots off of this circuit board that has 5 zillion gigabytes of storage. Cool, yes, but nothing compared to ripping into and figuring out this awesome Woz stuff.
I read a scan of the HD20 manual recently and I came across something interesting. It suggested you could use two HD20's linked together. Makes sense, since the HD20 has it's own floppy controller which allows a 800K external drive to be attached on the end. So, in theory, you could add more than two HD20's linked to each other. Any one ever had 2 or more working together? Any idea on the limit of HD20's you could have attached?
Yup. This is pretty common knowledge. As I posted above, it has been reported as many as 4 to 6 have been daisy chained at one time.
Wonder if there is a theoretical limit. Wasn't SCSI limited to 7? Would be interesting if the HD20 could go more than SCSI! :lol:
It was probably limited by the ability of the Mac to handle the directoriy index. Remember, for all practical purposes, the Mac thought the HD 20 was a huge floppy disk. I shudder to think of it manipulating a 120MB floppy disk. How slow would that be!?
Yes, but in 20MB increments....
It would just give you more options to store data, not one big directory....
It would just give you more options to store data, not one big directory....
The problem with huge directory indexes (IE, the entire directory hierarchy with its "fake" folder system had to fit in RAM) was confined to MFS disks. Hypothetically there wouldn't be any problem with making a large HFS-formatted HD-20-style disks other than the overall low performance of the interface. (Although so far as that goes... I've never used an HD-20 but I doubt it was much slower than a ZIP drive, and that's a 100MB volume.) So far as it relates to the project to re-create the HD-20 if it's found that the HD-20 has a mechanism to report its size to the host Macintosh rather than the OS being hard-coded to treat it as "20MB" then it may be "trivial" to make a larger version.It was probably limited by the ability of the Mac to handle the directoriy index...
As for those reports of people using more than two HD-20s I'd be curious to see a reliable citation. We've seen on this board people confusing the HD-20 with the HD-20SC, and obviously there would be no problem daisy-chaining six HD-20SCs together.
Are you thinking the OS or ROM/driver limits the Mac to having only two HD20's? Otherwise, if each HD20 has it's own Woz floppy controller (unlike the external 800 drive), shouldn't the number be unlimited theoretically?
If you've been reading the technobabble in this thread you'll see that the working hypothesis is that the IWM in the HD-20 has *nothing to do* with driving the daisy-chained drives. (And the traces of the schematic so far support that.)
That aside, so far it's sort of unclear exactly how drive selection works when there are multiple HD-20s hooked up. I don't recall reading how that's accomplished in any of the tech notes. (And in fact one of the goals Dennis Nedry is attempting to accomplish is how the Mac determines whether an HD-20 is present at all. It''s certainly possible that the mechanism for detecting them could scale to an arbitrary number of drives because individual drive addressing is based on something like a serial number. Which would make the theoretical limit either the size of some data structure or hardware electrical strength/noise/signal propagation limits.)
That aside, so far it's sort of unclear exactly how drive selection works when there are multiple HD-20s hooked up. I don't recall reading how that's accomplished in any of the tech notes. (And in fact one of the goals Dennis Nedry is attempting to accomplish is how the Mac determines whether an HD-20 is present at all. It''s certainly possible that the mechanism for detecting them could scale to an arbitrary number of drives because individual drive addressing is based on something like a serial number. Which would make the theoretical limit either the size of some data structure or hardware electrical strength/noise/signal propagation limits.)