Konference: Počítač SHARP MZ-800 a emulátory

Od: Radek Suk
Datum: 10.1.2012 12:18
Předmět: Re: Floppy driver


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 (sharpemu tu byla ta zakroucena vec pandora.cz) napsal(a):
>
>
>
> Dne 10.1.2012 3:01, Radek Suk (sharpemu tu byla ta zakroucena vec pandora.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
>
>
> ---

 
[2012/1 (125)] [2012/2 (34)] [2012/3 (57)] [2012/4 (46)] [2012/5 (40)] [2012/6 (44)] [2012/7 (64)] [2012/8 (57)] [2012/9 (32)] [2012/10 (55)] [2012/11 (25)] [2012/12 (63)]


[1999 (1)] [2000 (168)] [2001 (733)] [2002 (459)] [2003 (654)] [2004 (224)] [2005 (105)] [2006 (182)] [2007 (201)] [2008 (294)] [2009 (363)] [2010 (782)] [2011 (522)] [2012 (642)] [2013 (442)]