Szerző Téma: FD1793 Floppy csatoló emuláció  (Megtekintve 3129 alkalommal)

0 Felhasználó és 1 vendég van a témában

Atka72

  • Full Member
  • ***
  • Hozzászólások: 105
  • Karma: +3/-0
    • Profil megtekintése
    • Atkalabor
FD1793 Floppy csatoló emuláció
« Dátum: 2013. Május 1. - 20:12:21 »
Sziasztok! Jelenleg ezt próbálom megvalósítani az emulátoromban. Nagy vonalakban már megértettem hogy működik, de ha tudtok részletes leírást a működéséről az sokat segíthetne/esetleg magyarul is/.

teki

  • Newbie
  • *
  • Hozzászólások: 34
  • Karma: +0/-0
    • Profil megtekintése
Re:FD1793 Floppy csatoló emuláció
« Válasz #1 Dátum: 2013. Május 3. - 03:57:40 »
Ha kodbol jobban ertesz belenezhetsz ebbe: http://fms.komkon.org/EMUL8/EMULib-102708.zip
Ebben van wd1793 emu, en ezt portoltam javascriptre, de meg nem jutottam el oda, hogy kiprobalhassam.

Tegnap este jo kis old school gepi kodu programozast csinaltam. Megirtam texteditorban a kodot, tablazattal forditas, majd basci program begepeles (halott volt az internet, igy fertem hozza z80 assemblerhez).

Atka72

  • Full Member
  • ***
  • Hozzászólások: 105
  • Karma: +3/-0
    • Profil megtekintése
    • Atkalabor
Re:FD1793 Floppy csatoló emuláció
« Válasz #2 Dátum: 2013. Május 3. - 23:46:24 »
A kód nem tűnik túl bonyolultnak, nagyjából én is ezt csináltam. Elkezd beolvasni, de nem hagyja abba.
A CLI-ben Entert nyomva ez az eredmény: / Read sector parancsra a státusz regiszter S1-et és a HW regiszter IRQ-t és DRQ-t 1-be állítottam/valamit nem jól csinálok az biztos...

Read Status REG: 36
Write Parameter REG: 65
Restore: 0
Read Status REG: 36
Write Track REG 0
Write Sector REG: 1
Write Data: 0
Seek: 0
Read Status REG: 36
Write Track REG 0
Read Status REG: 36
Read Sector
Read HW status REG:129
Read Data: 0
Read HW status REG:129
Read Data: 0
Read HW status REG:129
Read Data: 0
Read HW status REG:129
Read Data: 0
Read HW status REG:129
Read Data: 0
Read HW status REG:129
Read Data: 0
Read HW status REG:129
Read Data: 0
Read HW status REG:129
Read Data: 0
Read HW status REG:129
Read Data: 0
Read HW status REG:129
Read Data: 0
Read HW status REG:129
Read Data: 0
Read HW status REG:129
Read Data: 0
Read HW status REG:129
Read Data: 0
Read HW status REG:129
Read Data: 0
Read HW status REG:129
Read Data: 0

'Elvileg ez lenne a Read Sector egy Lib-ből, sajnos nem értem pontosan a működését valaki el tudja mondani egyszerűbben?
Hihetetlen hogy ilyen egyszerű lenne.   

 case 0x80:
        case 0x90: /* READ-SECTORS */
          if(D->Verbose) printf("WD1793: READ-SECTOR%s %c:%d:%d:%d (%02Xh)\n",V&0x10? "S":"",D->Drive+'A',D->Side,D->R[1],D->R[2],V);
          /* Seek to the requested sector */
          D->Ptr=SeekFDI(
            D->Disk[D->Drive],D->Side,D->Track[D->Drive],
            V&C_SIDECOMP? !!(V&C_SIDE):D->Side,D->R[1],D->R[2]
          );
          /* If seek successful, set up reading operation */
          if(!D->Ptr)
          {
            if(D->Verbose) printf("WD1793: READ ERROR\n");
            D->R[0]     = (D->R[0]&~F_ERRCODE)|F_NOTFOUND;
            D->IRQ      = WD1793_IRQ;
          }
          else
          {
            D->RDLength = D->Disk[D->Drive]->SecSize
                        * (V&0x10? (D->Disk[D->Drive]->Sectors-D->R[2]+1):1);
            D->R[0]    |= F_BUSY|F_DRQ;
            D->IRQ      = WD1793_DRQ;
            D->Wait     = 255;
          }
          break;
« Utoljára szerkesztve: 2013. Május 4. - 09:19:06 írta Lénárt Attila »

Gaia

  • Newbie
  • *
  • Hozzászólások: 45
  • Karma: +0/-0
    • Profil megtekintése
    • Gaia's shrine
Re:FD1793 Floppy csatoló emuláció
« Válasz #3 Dátum: 2013. Május 4. - 18:32:42 »
Ez a Farat féle lib gondolom. Sosem értettem miért kell egybetűs változóneveket használni code completion idején, marha nehéz olvasni. Nekem elég fapadosnak tűnik, a D az valami általános drive struct lehet, de mi az a Ptr? Na mindegy én úgy látom itt valami várakozási időt állít csak be.

Ha ez segít itt van mit csinálok én. Ha kész a szektor (512 byte egyébként valóban a mérete), akkor DRQ-t nullázni kell, a BUSY bitet pedig szintén törölni:

         if ( buffer_offset < maxindex) {
            tmp = sector_buffer[buffer_offset++];
            wd1793.status |= STATUS_DRQ;
         } else if ( buffer_offset == maxindex ) {
            tmp = sector_buffer[maxindex];
            // multiple records?
            //if (wd1793.mult_recs && wd1793.sector < wd1793.image->sectors_per_track) {
            //   buffer_offset = 0;
            //   wd1793.sector += 1;
            //   wd1793_write_cmd(dev_nr, wd1793.command);
            //} else
            {
               wd1793.status &= ~STATUS_DRQ;
               wd1793.status &= ~STATUS_BUSY;
               wd1793_set_irq(dev_nr, 1, z80.tcount);
               buffer_offset = maxindex + 1;
               
               wd1793.state = WD_STATE_IDLE;
            }
                  
         } else {
            tmp = wd1793.data;
         }
« Utoljára szerkesztve: 2013. Május 4. - 18:36:17 írta Gaia »

teki

  • Newbie
  • *
  • Hozzászólások: 34
  • Karma: +0/-0
    • Profil megtekintése
Re:FD1793 Floppy csatoló emuláció
« Válasz #4 Dátum: 2013. Május 9. - 01:05:02 »
Egy kis extra info: http://www.classiccmp.org/cpmarchives/trs80/mirrors/pilot.ucdavis.edu/davidk/documentation/manuals/WD-179Xb.zip

PLusz egy link a facebook-rol: http://enterpriseforever.com/programozas/exdos-283/105/

En meg csak most alltam neki implementalni a dolgot, de nem sok ido van ra mostanaban, igy el fog huzodni.

teki

  • Newbie
  • *
  • Hozzászólások: 34
  • Karma: +0/-0
    • Profil megtekintése
Re:FD1793 Floppy csatoló emuláció
« Válasz #5 Dátum: 2013. Május 10. - 12:59:24 »
A DRQ es az INTRQ pont forditva vannak a doksihoz kepest. Hamar kiderul ha nezem mit var vt-dos, s a kapcsolasi rajzon is egyertelmu.

Gaia

  • Newbie
  • *
  • Hozzászólások: 45
  • Karma: +0/-0
    • Profil megtekintése
    • Gaia's shrine
Re:FD1793 Floppy csatoló emuláció
« Válasz #6 Dátum: 2013. Május 10. - 23:06:11 »
Azt akartam is írni, hogy rossz a doksi! Bocs, de kiment a fejemből.

teki

  • Newbie
  • *
  • Hozzászólások: 34
  • Karma: +0/-0
    • Profil megtekintése
Re:FD1793 Floppy csatoló emuláció
« Válasz #7 Dátum: 2013. Május 30. - 14:56:55 »
Noh a 720-as lemezek nem mukodnek, annak mi lehet a trukkje ?
A 4-es porton irt adat 8-as bitje az oldal valasztas ha jol latom. Valtoztatgatja is, de valami nem jo.
A vtdos 720-as lemezevel nezem, s eleg hamar elakad:


Tul nem bonyolitattam a dolgot:
var offsetTrack = (side == 0) ? 0: this.tracksPerSide;
var offsetSector = (sector !== 0) ? (sector - 1) : 0;
this.position = ((track + offsetTrack) * this.sectorsPerTrack + offsetSector) * this.sectorSize;
« Utoljára szerkesztve: 2013. Május 30. - 15:01:24 írta teki »

PeterGriffin1

  • Newbie
  • *
  • Hozzászólások: 12
  • Karma: +1/-0
    • Profil megtekintése
Re:FD1793 Floppy csatoló emuláció
« Válasz #8 Dátum: 2013. Május 31. - 16:33:07 »
Szia!
A lemez geometriájában a sáv (C-cilinder v. track) a legnagyobb egység. A sávon belül vannak a fejek (H-heads) és a fejeken belül a szektorok (S-sectors).
Így a 720kB-os lemez paraméterei: C=80 H=2 S=9, a kapacitása pedig C*H*S*512 bájt = 737280 bájt.

A sávok számozása: akt_sáv= 0..79
a fejek számozása: akt_fej=  0..1
a szektorok számozása: akt_szektor= 1..9.

Egy szektor lineáris blokkcíme: LBA= akt_sáv * (H * S) + akt_fej * S + akt_szektor - 1

Ebből az image fájlbeli bájt-pozíció: this.position = LBA * 512 bájt

teki

  • Newbie
  • *
  • Hozzászólások: 34
  • Karma: +0/-0
    • Profil megtekintése
Re:FD1793 Floppy csatoló emuláció
« Válasz #9 Dátum: 2013. Június 1. - 15:10:31 »
Koszi az infot, mukszik frankon!