Hi Sean,

> However I don't feel like reverse-engineering everything about the disk
> drive
> from the disk bios. :/ Someone who knows the format of the disks (if they
> are 5.25") could save me a lot of time and effort.

Here are the specs you requested on brazilian hardware:

1) The Microsol standard for DiskDrive interface (I/O ports)

This is the standard used by more than 95% of the brazilian external disk 

interfaces. The following makers use this standard (so you could get the 

rigth roms)

- Microsol
- DDX (v1.0, 1.1 and 1.2)
- DMX (all)
- Racimec (all)

2) The Sharp memory based diskcontroller.
  I don't know for real, but I think it's the only one on this standard.



FDC on my DDX v3.0e     : WDC2793A-PL 
FDC on my HB3600 v1.1   : WDC2793A-PL
FDC on Racimec v1.2     : WDC2793A-PL

(Hummm... Coincidence?  ;)


*** Register map for Microsol and Sharp diskcontrollers ***

+----------------+--------------------+-----------------+
|FDC Register    |  Microsol I/O port | Sharp I/O addr  |
+----------------+--------------------+-----------------+
|  COMMAND (W)   |       D0h          |   7FF8h         |
|  STATUS (r)    |       D0h          |   7FF8h         |
|  TRACK (r/w)   |       D1h          |   7FF9h         |
|  SECTOR (r/w)  |       D2h          |   7FFAh         |
|  DATA (r/w)    |       D3h          |   7FFBh         |
|  DRIVE (r/w?)  |       D4h          |   7FFDh         |
|     ?          |       none         |   7FFFh (?!)    |
+----------------+--------------------+-----------------+

Obs: Since the wd179x.h on mess does not cover the DRIVE register I think
it might be implemented externaly. So that's the register structure:

DRIVE register:

bit             Function
0               Drive DS0 led
1               Drive DS1 led
2               Drive DS2 led
3               Drive DS3 led
4               head
5               motor on/off
6               wait data
7               density (0=simple, 1=double)

The bits 0 to 3 turns recpectives drive's leds on (1) or off (0)

bit 4: Select disk head (side). 0=up, 1=down
bit 5: 1 = all motors on. 0 = all motors off.
bit 6: Must be on for slow drives (old drives)
bit 7: Has no mean on this interfaces. leave it 0.



3) Hotbit (all) keyboard matrix (on PPI). From "MSX Red Book-BR".


                       Column
   7      6      5      4      3      2      1      0
+------+------+------+------+------+------+------+------+line
|  &   |  "   |  %   |  $   |  #   |  @   |  !   |  )   |
|  7   |  6   |  5   |  4   |  3   |  2   |  1   |  0   | 0
|      |      |      |      |      |      |      |      |
+------+------+------+------+------+------+------+------+
|  ç   |  `   |  `   |  ^   |  +   |  _   |  (   |  *   |
|  Ç   |  "   |  '   |  \   |  =   |  -   |  9   |  8   | 1
| (*3) | (*2) | (*1) |      |      |      |      |      |
+------+------+------+------+------+------+------+------+
|      |      |  >   |  ?   |  :   |  ;   |  ]   |  ^   |
|  B   |  A   |  <   |  /   |  .   |  ,   |  [   |  ~   | 2
|      |      |      |      |      |      |      | (*1) |
+------+------+------+------+------+------+------+------+
|             standard QWERTY keyboard                  | 3-5
+------+------+------+------+------+------+------+------+
|      |      |      |      |      |      |      |      |
|  F3  |  F2  |  F1  | CODE | CAPS |GRAPH | CTRL |SHIFT | 6
|      |      |      |      |      |      |      |      |
+------+------+------+------+------+------+------+------+
|Equal to the MSX keyboard described on the MSX red book| 7-8
+-------------------------------------------------------+
|                  empty (no keypad)                    | 9-10
+-------------------------------------------------------+

As you can see, there are some ASCII chars that not appear
on HotBit's layout. Theys chars are |}{~ (7CH, 7DH, 7BH, 7EH).
It can be obtained respectivelly by the following key
combinations: GRAPH+<, CODE+C, CODE+X, SHIFT+CODE+<

(*1) This are deadkeys used for accentuation. When a deadkey is
     pressed, no direct char is produced. Instead, the next
     char will be modified (receive accentuation)
     For example, pressing the deadkey ~ plus the key a gives
     you a "ã".
     Obs: I don't know if the char between quotes 
     will appear correctly for you. Its only an "a" with a "~"
     over it. All other portuguese accents work like this. It's
     the vocal with the accent simbol over it. No accented consoants.
     To see the thing working, try the following:

     a) Get the Hotbit1.2 ROM at mep (ops! the link is wrong there! ;)
     b) Use it on the fMSX-DOS v1.6b
     c) Press [ and then a. Press [ then e. It does not need to
        be simultaneously like SHIFT, did you notice?   :)
        This is why they're called "dead keys".
        If you want to continue testing, the Hotbit deadkeys will
        be mapped by fMSX1.6b2 on the following keys of a US-PC
        keyboard: []'

I wonder if using a ABNT2 keyboard on PC, the HotBit keys will be mapped
to the right places... Since the PC keycodes on the ABNT2 keyboard differs
from the US-PC layout in a very similar way.

To use the MSXBR roms on fMSX and MESS, I simply patched the Hotbit
romBIOS and put the standard keytable. So, I killed the deadkeys!  :D

(*2) This is a weird key. Without SHIFT it is a deadkey that generates
     the /"/ (trema) accent (between the /s). But with SHIFT pressed
     it acts like a normal key and generates the /'/ (ascii 27h) symbol.
     Yes, I think it's stupid... Since it's half alive, half dead, can
     we call this a zombie key?  >:)
     (LOL)

(*3) This is the cedilla character. It's not a deadkey on ABNT layouts,
     but on PCs using the US keyboard it's produced by ' plus C.
     (US-International layout on winblows, i.e.)
     On dot-matrix printers it was produced by printing ,^HC
     (comma-backspace-C). It really looks like a C with a comma
     crossing it on the lower part.
     Wondering how it sounds?  :)  Like "ssss".


4) Expert >=1.1 keyboard matrix (on PPI). My research.  :)

                       Column
   7      6      5      4      3      2      1      0
+------+------+------+------+------+------+------+------+line
|  &   |  ^   |  %   |  $   |  #   |  "   |  !   |  )   |
|  7   |  6   |  5   |  4   |  3   |  2   |  1   |  0   | 0
|      |      |      |      |      |      |      |      |
+------+------+------+------+------+------+------+------+
|  ^   |  ]   |  `   |  }   |  +   |  _   |  (   |  '   |
|  ~   |  [   |  '   |  {   |  =   |  -   |  9   |  8   | 1
| (*1) | (*2) | (*1) |      |      |      |      |      |
+------+------+------+------+------+------+------+------+
|      |      |  ?   |  :   |  >   |  <   |  Ç   |  @   |
|  B   |  A   |  /   |  ;   |  .   |  ,   |  ç   |  *   | 2
|      |      |      |      |      |      | (*3) |      |
+------+------+------+------+------+------+------+------+
|             standard QWERTY keyboard                  | 3-5
+------+------+------+------+------+------+------+------+
|      |      |      |      |      |      |      |      |
|  F3  |  F2  |  F1  | RGRA | CAPS | LGRA | CTRL |SHIFT | 6
|      |      |      |      |      |      |      |      |
+------+------+------+------+------+------+------+------+
|Equal to the MSX keyboard described on the MSX red book| 7-8
+-------------------------------------------------------+
|      |      |      |      |      |      |      |      |
|      |      |      |      |  /   |  *   |  -   |  +   | 9
|      |      |      |      |      |      |      |      |
+------+------+------+------+------+------+------+------+
|         empty (the keypad is simulated)               | 10
+-------------------------------------------------------+

The same observation is valid for the Expert's keyboard:
There are some ASCII chars not represented directly on
the keyboard. They can be show only by keyboard combinations.


4) Expert 1.0 keyboard matrix (on PPI). My research too.

                       Column
   7      6      5      4      3      2      1      0
+------+------+------+------+------+------+------+------+line
|  &   |  ^   |  %   |  $   |  #   |  @   |  !   |  )   |
|  7   |  6   |  5   |  4   |  3   |  2   |  1   |  0   | 0
|      |      |      |      |      |      |      |      |
+------+------+------+------+------+------+------+------+
|  :   |  }   |  {   |  |   |  +   |  _   |  (   |  *   |
|  ;   |  ]   |  [   |  \   |  =   |  -   |  9   |  8   | 1
|      |      |      |      |      |      |      |      |
+------+------+------+------+------+------+------+------+
|      |      |  '   |  ?   |  >   |  <   |  Ç   |  "   |
|  B   |  A   |  `   |  /   |  .   |  ,   |  ç   |  '   | 2
|      |      | (*5) |      |      |      | (*4) |      |
+------+------+------+------+------+------+------+------+
|             standard QWERTY keyboard                  | 3-5
+------+------+------+------+------+------+------+------+
|      |      |      |      |      |      |      |      |
|  F3  |  F2  |  F1  | RGRA | CAPS | LGRA | CTRL |SHIFT | 6
|      |      |      |      |      |      |      |      |
+------+------+------+------+------+------+------+------+
|Equal to the MSX keyboard described on the MSX red book| 7-8
+-------------------------------------------------------+
|      |      |      |      |      |      |      |      |
|      |      |      |      |  /   |  *   |  -   |  +   | 9
|      |      |      |      |      |      |      |      |
+------+------+------+------+------+------+------+------+
|         empty (the keypad is simulated)               | 10
+-------------------------------------------------------+

(*4): The cedilla key (*3) on Expert 1.1 is generated by
      a dirty trick by Gradiente on the ROM routine. The
      keymap table on Expert1.0 ROM is identical to the
      standard MSX ROM. So, a second-hand "filter"
      changes the `~ original key by çÇ (cedillas). Yikes!
      This is fudeba! It looks that at initially Gradiente
      doesn't understand very much of the keyboard handler
      routines.

(*5): There's only one dead key: It has the ` and ' accents.
      IMHO, the Gradiente guys misunderstanded the idea of
      "dead keys" and think it was "THE only possible dead
      key", because The "MSX Red Book" explains about "*the*
      DEAD key found on european MSX machines". (pg 56 on
      the original Red Book, pg 67 on Brazilian edition)

------------


Well, the final conclusions from analysing the keymaps is:

1) The HotBits aways used the ABNT1 keyboard layout.
2) The Expert 1.0 used the international keyboard
   layout, except for the "post filtered" key. But
   the worse was that almost all accentuation was done by
   irritatingly combinations with RGRA or RGRA+SHIFT.
3) The Experts >=1.1 used an ugly mix from the ABNT1 layout
   and the international layout (see the <> on ,. keys) plus
   a nonstandard cedilla key.
4) There seems to be a bug on the HotBit kbd decoder routine!!!
   The CODE+SHIFT combination doesn't work. This is fudeba
   too. At least this bug is solved when you upgrade it to
   MSX2/2+, since a new ROM is used.


Someone talk here about compatibility problems on HotBit 1.2. All
"compatibility" problems that occured with HotBit 1.2 and even worse
with the Expert of the plus series was caused by dumb pirat^H^H^H^H^H
programmers that made stupid romloader routines. This routines
search for RAM using the braindamadged++ method I ever seen!!!
Some of them searches for "Gradiente" or "Hotbit" on a position of
the mainROM. Since the mainROM of Hotbit 1.2 was changed, the string
goes to another address. And the dumb pseudo-detection routines
goes crazy...

With the Expert Plus series the problem turned a nightmare: This
machines had RAM on the *expanded* slot3.0. But a lot of MSX
software (including spanish spectrum adaptations) never worried about
expanded slots. The results where obvious: A huge amount of software
doesn't run on the Plus series without some kind of bugfix or work-
around. The problem is the same with Turbo-Rs and some european
machines with expanded slots.

Regards,
            FRS




--
For info, see http://www.stack.nl/~wynke/MSX/listinfo.html

Reply via email to