Přejít na obsah
ARCHIVEKArchiv e-mailových konferencí o 8bitových počítačích Archiv Pandory 1999 až 2013

Re: Floppy driver

Radek Suk SHARP MZ-800

Jeste pred usnutim jsem si rikal ze je tam stejne jina chyba, protoze to 
co pisi bude problem az u HD disket ale u DD se to neprojevi - zde je 
dvojnasobny cas. Jinak i posledni verze nefunguje.

Idelani je dat zdrojaky na http://ordoz.com/sharp/fddrv/ a napsat co 
presne pouzivas pro preklad - logicky to delas v Linuxu alespon podle 
souboru. Take bych to cisloval tak napr fddrv7.mzf - ja stejne to 
prejmenovavam na 8 znaku nez to dam do Sharpa a to uz proto abych to 
nepopletl.


Michale posilam klicovou cast z MZ DOSu at vidis jak to resim ja. Mozna 
ti to pomuze nebo to muze nekoho inspirovat.

Radek


makej:   ld   de,(z_bufer)   ; de-kam davat data
makej0:  push de             ; cy-0 input   cy-1 output   a-kod
                              ;
          ld   (makej3+1),a   ;
          ld   a,3h
          out  (0fch),a       ; znemozni preruseni PIO-a
          di
          in   a,(0d8h)       ; nulovani INTRQ vystupu radice
          ld   de,freemem
          ld   hl,10h
          ld   bc,3
          ldir                ; oblast 10h uloz
          ld   l,20h
          ld   c,7
          ldir                ; oblast 20h uloz
          ex   de,hl
          ld   hl,kondopameti-1
          jr   c,makej1
          ld   hl,kondoradice-1
makej1:  dec  de
          ld   c,7
          lddr                ; rutinka pro data z/do radice (oblast 10h 
a 20h)
          ld   a,0c3h
          ld   (10h),a
          ld   hl,makej5
          ld   (11h),hl
          im   0
          ld   a,(fyztyp)
          bit  3,a
          ld   a,1h            ; clock - 1 Mhz  DD-typ
          jr   z,makej2
          ld   a,7h            ; clock - 2 Mhz  HD-typ
makej2:  out  (0dfh),a
          pop  de
          push de
          ld   a,(de)        ; pro pripad ze je zapis do radice je nutno
          cpl                ; mit uz v acc pripraven bajt
          ld   hl,makej4     ; adresa skoku
          ld   c,0d8h
makej3:  ld   b,0
          ei
          out  (c),b         ; vysli instrukci
makej4:  jp   (hl)          ; nekonecna smycka

makej5:  pop  hl            ; vyrovnani zasobniku
          in   a,(0d8h)      ; prevezmi status
          di
          push de
          xor  a
          out  (0dfh),a       ; clock - 1 Mhz
          ld   hl,freemem
          ld   de,10h
          ld   bc,3
          ldir                ; oblast 10h obnov
          ld   e,20h
          ld   c,7
          ldir                ; oblast 20h obnov
          im   2
          ld   a,83h
          out  (0fch),a       ; povol preruseni od PIO-a
          pop  de             ; kolik bajtu jsem precetl
          pop  bc             ; kde zacina bufer
          ld   hl,(delsek)    ; pocet bajtu ktere se maji prenest
          add  hl,bc
          and  a              ; preneslo se spravny pocet bajtu ?
          sbc  hl,de          ; 0 - ano
          ret

zacdoradice:                ; doda 1 bajt do radice
          out  (0dbh),a
          inc  de
          ld   a,(de)        ; delka rutinky je 7 bajtu !
          cpl
          ei
          ret
kondoradice:

zacdopameti:                ; prevezme 1 bajt z radice
          in   a,(0dbh)
          cpl
          ld   (de),a        ; delka rutinky je 7 bajtu !
          inc  de
          ei
          ret
kondopameti:

freemem:  ds   10   ; sem ulozim co je pri spusteni od adresy 20h a 10h


Dne 10.1.2012 8:58, Michal Hučík (sharpemupandora.cz) napsal(a):
Zobrazit citovaný text (19 řádků)
>
>
>
> Dne 10.1.2012 3:01, Radek Suk (sharpemupandora.cz) napsal(a):
>>
>>
>> Proto asi bude stacit zmenit to RETI na RET. Proc vlastne chces delat
>> RETI, vzdyt je to uplne k nicemu - preci neovladas zadny Z80 periferni
>> obvod timto prerusenim?
>>
>
> Ahoj Radku, mas pravdu ... divam se do zdrojaku HD cp/m a vidim tam RET
> a ne RETI ... ja jsem ho tam dal asi proste ze slusnosti ;)
> Posilam verzi ve ktere je pouze EI a RET, tak jsem zvedavy.
>
> Michal
>
>
> ---

Zobrazit původní podobu