[abc80] Emulering av 7.8kHz interrupt i ABCWin?

juhasz juhasz at abc.se
Sön Jan 22 10:58:09 PST 2017


Coolt! Tack för insatsen Erik! Ska nog också ta o leka lite med ljud! Vilken lösning valde du med pio-registren förresten?
Robert


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

    Så, då finns ett första försök att
      hämta på

      

      http://www.lysator.liu.se/~exon/archive/ABCWin2/ABCWin2-r221.zip

      

      Det låter iaf när jag kör soundirq.bac...

      

      mvh Erik

      

      

      On 2017-01-21 00:10, juhasz wrote:

    
    
      
      Och här är ljud2
      http://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...
      

      
      

      
      Robert
      
        Skickat 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