[abc80] Emulering av 7.8kHz interrupt i ABCWin?

juhasz juhasz at abc.se
Fre Jan 20 15:10:46 PST 2017


Och här är ljud2http://www.devili.iki.fi/pub/Luxor/software/ABC-klubben/abc80/musik/ljud2.asm
Fel av mig förresten, man behöver inte nödvändigtvis stödja möjligheten att ändra interrupt-adressen i pion, i alla fall inte för ljud2 - som du ser ligger den på offset 52 från ljud2:s startadress (HI+52) och det är samma som för tangentbordsrutinen. Det enda som ändras är I-registret som sätts till HI vid inkoppling och 0 vid urkoppling, och det finns nog redan i z80-emuleringen. Däremot vet jag att Basic ii (asmkod/basicii.cod) på abc80 ställer om interruptadressen i pion - förmodligen för att får mer plats till annat. Så kanske inte så dumt att stödja det ändå - det är ju bara ett register...

RobertSkickat från min Samsung Galaxy-smartphone.
-------- Originalmeddelande --------Från: Andreas Gustafsson <andreas.gustafsson at gmail.com> Datum: 2017-01-20  23:34  (GMT+01:00) Till: Erik Isaksson <exon at lysator.liu.se> Kopia: juhasz <juhasz at abc.se>, "H. Peter Anvin" <hpa at zytor.com>, abc80 <abc80 at abc80.org> Rubrik: Re: SV: Re: [abc80] Emulering av 7.8kHz interrupt i ABCWin? 
Här är en så avskalad variant som möjligt av min irq-ljud-rutin.
På nuvarande ABCWin är det bara tystnad, på en riktig ABC80 får man en ihållande ton (inte så vacker men ändock...)

Suveränt att du börjat förbättra denna eminenta emulator igen. Får du rätt på IRQs så ska jag påbörja övertalningsarbetet att fixa hires-timingen härnäst... ;)

/Andreas


2017-01-20 22:23 GMT+01:00 Erik Isaksson <exon at lysator.liu.se>:

  
    
  
  
    Så, det verkar som att jag bara har
      stöd för "bitwise"-moden i min pio-implementation. Vilket betyder
      en del knåpande innan allt är på plats. Som tur är så är jag
      lycklig ägare till en kopia av Z80 User's Manual :-)

      

      Var finns ljud2.asm? Och kanske finns det ett färdigt testprogram
      (.BAC) som jag kan köra för att se om det funkar?

      

      PS. Ni är synnerligen onda människor som får mig att ta tag i det
      här igen... ;)

      

      mvh Erik

      

      

      On 2017-01-20 09:39, juhasz wrote:

    
    
      
      Just det, man ställer om pio:n till att reagera på astb istf
        en ändring av bit 7 på tgbordet. Detta görs i ett litet "paket"
        av out till pio-porten 
      (se ljud2.asm). dessutom måste man stödja registret för
        interruptadress (som normalt är 0x26) som styr vart z80 hoppar
        vid interrupt. Så det är lite pyssel. Bra referenser är
      - ljud2.asm - där ser man inkoppling o även återställning av
        pio-register
      - Z80 pio datablad
      - listan....
      

      
      Robert
      

      
      
        Skickat från
          min Samsung Galaxy-smartphone.
      
      

      
      
        -------- Originalmeddelande --------
        Från: "H. Peter Anvin" <hpa at zytor.com> 
        Datum: 2017-01-20 05:12 (GMT+01:00) 
        Till: Erik Isaksson <exon at lysator.liu.se>, Andreas
          Gustafsson <andreas.gustafsson at gmail.com>, juhasz
          <juhasz at abc.se> 
        Kopia: abc80 <abc80 at abc80.org> 
        Rubrik: Re: [abc80] Emulering av 7.8kHz interrupt i ABCWin?
        
        

        
      
      On 01/19/17 13:53, Erik Isaksson wrote:

      > Hm, jag känner att jag behöver lite mer input här. Är det
      signalen in på

      > /ASTB som åsyftas? Den ser ut att komma från bit 0 i
      linjeräknaren.

      > 

      > Och hur programmeras PIOn för att generera detta interrupt?
      Är osäker på

      > hur väl jag emulerar den. Samt att påverkas inte
      tangentbordsfunktionen

      > om man pillar för mycket på den?

      

      Sätt PIO port A till "input" i stället för "bitwise".  Det gör
      också att

      tangentbordsstoben inte längre generar interrupt, så din drivrutin
      måste

      kolla om port 56, bit 7 går från 0 -> 1 och hoppa till
      interruptrutinen

      i BASIC-tolken i stället för att göra RETI, d.v.s. något i den här
      stilen:

      

      

      interrupt:

      push af

      push hl

      

      ; Your own interrupt code goes here

      

      

      ld a,(last_key)

      xor 0FFh

      ld l,a

      in a,(56)

      ld (last_key),a

      and l

      pop hl

      jp m,keyboard_int

      pop af

      reti

      keyboard_int:

      pop af

      jp basic_keyboard_int

      

      last_key:

      defb 0

    
    

    
  





More information about the ABC80 mailing list