Rep Konstruktion av en Printer-Port ynkroniseringsproblem Villkorlig / ovillkorlig överföring Busy Wait och Polling Handskakningssignaler AVBROTT!!! svektor I-flagga svippa sdriven Printerport I DAG fo Bit 7 Printerport v med o tatusregister = : REDO skrivare = : UPPTAGEN skrivare krivarbuss Bit 7 tyrregister krivare s8 = Giltigt tecken = Ogiltigt värde. MOP OH LVB MOP OH LVB Hur bra blev det egentligen s s * HUVUDPROGRAM... Olika initieringar... Loop... Annat arbete som... processorn utför... jsr Print kriv ut en fil... bra Loop s Verkligt "arbete" n väntar på skall gå hög kriv en fil ms s MOP OH LVB Datorsystem MC- system som skriver ut ett tecken krivarbuss krivare Adr: TextP A H Pekare till A L nästa tecken Text H e j ssignal D u ACIIkoder K för texta sträng l l e! EOT lutmarkeing MOP OH LVB
- forts HITILL: Programmeraren (DU) bestämmer när: JR Printchar kriv ett tecken s forts. VAD KRÄV. spara undan sin PC. starta en rutin som skriver ut ett tecken till skrivaren för att. sedan återstarta huvudprogrammet VID AVBROTT: krivaren bestämmer när: Printchar kriv ett tecken VAD KRÄV spara undan sin PC starta en rutin som skriver ut ett tecken till skrivaren för att sedan återstarta huvudprogrammet MOP OH LVB ) para undan sitt PC (jfr JR ubrut) PC (high) PC (low) i subrutinen före subrutinanropet PC (high) PC (low) i en före ssignalen MOP OH LVB forts. VAD KRÄV. spara undan sin PC. starta en rutin som skriver ut ett tecken till skrivaren för att. sedan återstarta huvudprogrammet forts. VAD KRÄV. spara undan sin PC. starta en rutin som skriver ut ett tecken till skrivaren för att. sedan återstarta huvudprogrammet ) starta en rutin som skriver ut ett tecken till skrivaren ) sedan återstarta huvudprogrammet $FFF $FFF Minnet RT PC (high) PC (low) i subrutinen före subrutinanropet PC (high) PC (low) i en före avbrott MOP OH LVB 7 MOP OH LVB 8
- forts s forts. Hur jobbar processorn Adr: TextP A H Pekare till A L nästa tecken Text H * e j ldx ldaa TextP,x+ Läs pekare till nästa kriv nästa tecken D u ACIIkoder K för texta sträng l l e! EOT lutmarkeing sta Printer stx TextP para nya pekare rti Resetsignal Aktiv REET Hämta FETCH ssignal EXECUTE MOP OH LVB 9 MOP OH LVB forts. Vissa problem. --- ldaa umma adda Belopp staa umma --- --- CMPB BHI --- Variabel Larger MOP OH LVB ssignal forts. Vissa problem. ssignal ) ave tatus ) Restore tatus Max CC B A X (high) X (low) Y (high) Y (low) PC (high) PC (low) i en före avbrott MOP OH LVB
Vi summerar händelseförloppet vid ett avbrott. ) met kör ) Hopp till ave status Hämta avbrottsvektor ) tarta o kör ) Återhopp till huvudprogram ) Restore status ) met fortsätter forts. MOP OH LVB avbrottet Aktiv Hämta avbrottet forts. Flera problem. Datorsystem (Redo) Här är data Yttre enhet MOP OH LVB forts.. forts.. avbrottet Lösning: Ny flagga i CC-registret FETCH EXECUTE I-flagga = Aktiv Hämta MOP OH LVB MOP OH LVB
forts.. Före avbrottet Under avbrottet Efter avbrottet Huvud Prog Upg Adr TO =Enable (CC) Initiera för avbrott TO Befintligt stackinnehåll tatus och återhoppsadress för Befintligt stackinnehåll TO Befintligt stackinnehåll Öka Var Visa Var Öka Var Adr max Visa Var ns tatus register Mask =Enable Mask =Off Mask =Enable MOP OH LVB 7 MOP OH LVB 8 Huvud Progr Initiera för avbrott Öka Var Visa Var Visa Var Upg GÖR UPG och studera: Händelseförloppet när ni Kör Run low och tep tacken generellt Återhoppsadress I-flaggan i CC-reg och på stack tatusindikatorer i simulatorn Tryckknapp Puls vid nedtryckning av tryckknapp lite mera problem (MC) E avbrottet Öka Var Öka Var D 7 -D MOP OH LVB 9 MOP OH LVB
lite mera problem Kvittera avbrottet Tryckknapp Puls vid nedtryckning av tryckknapp avbrottet (MC) E D 7 -D I-flagga = Aktiv Hämta MOP OH LVB sruti n tyrenhet tyrenhet = Kvittera avbrott: ätt = Yttre enhet Yttre enhet MOP OH LVB inför svippa Huvud Prog Upg Tryckknapp Puls vid nedtryckning av tryckknapp Initiera för avbrott "" D Q Öka Var R C Q Visa Var Visa Var A A A A A A & Write address Puls då processorn skriver Kvittera avbrott vid TAA IrqVippa MOP OH LVB Öka Var LDAA $DC Läs status TAA $DC Nolla vippa TAA $DC Nolla vippa MOP OH LVB
Upg - ammanfattning Gör Upg och undersök ssignal svippa Nollställning av vippa Gör Upg o och testa med avbrottssignaler avbrottsvippor Nollställning av vipporna Begrepp: singång på processorn (Interrupt) I-flagga i CC-registret (Maskera avbrott, brandvägg) svektor ( ) ave tatus (Placera alla regs på stacken) ( subrutin avslutad med ) Återhopp från () Restore tatus (Återhämta alla regs från stack) svippa Kvittera avbrott (Nollställa avbrottsvippa) MOP OH LVB MOP OH LVB - ammanfattning. OM I-flaggan=: n känner att är aktiverad och slutför utförandet av pågående instruktion.. n sparar huvudprogrammets återhoppsadress och övriga registerinnehåll på stacken, save status. Därefter läser processorn startadressen för en från -vektorn (från adress $FFF och $FFF). Denna startadress placeras i PC. I-flaggan ETT-ställs. en startas (med I-flaggan=). Kvittera avbrott.. en avslutas med instruktionen som får processorn att utföra restore status, dvs registerinnehållen återställs från stacken (med gamla I=).. Återhopp till huvudprogram.. Därmed återstartas huvudprogrammet där det blev avbrutet MOP OH LVB 7 Bit 7 Printerport v med o Datorsystem tatusregister = : REDO skrivare = : UPPTAGEN skrivare krivarbuss Bit 7 tyrregister krivare = Giltigt tecken = Ogiltigt värde. MOP OH LVB 8 7
- PrinterPort sdriven Printerport v. ssignal som skriver ut ett tecken Adr: TextP A H Pekare till A L nästa tecken Text H e j C_Printer avkodning "" D R C Q Q MC- system krivarbuss krivare D u ACIIkoder K för texta sträng l l e! EOT lutmarkeing A A ns databuss Anslutning processorn C_Ctrl CP b Regiser () C C_tat C_Pri CP b Regiser (8) C krivarbuss Anslutning skrivaren MOP OH LVB 9 MOP OH LVB Printer Interface sdriven Printerport v. s I-flagga = Aktiv Hämta sruti n Tryckknapp Puls vid nedtryckning av tryckknapp (MC) E D 7 -D C_Printer A A ns databuss Anslutning processorn avkodning C_Ctrl CP b b Regiser () C "" D R C C_tat C_Pri CP Q Q > b Regiser (8) C krivarbuss Anslutning skrivaren MOP OH LVB MOP OH LVB 8
I DAG fo Mera avbrott - En enhet Olika typer av avbrott Flera avbrottsingångar Vektoravbrott Mjukvaruavbrott DMA adressbuss I/O-interface $Q $Q+ Minnet databuss MOP fo MOP fo - Fler enheter - Fler enheter -shanterare $Q Minnet ssignal $Q+ Källa $Q Källa Källa Minnet & avbrottsingång, aktiv låg CPU Gränssnitt A seriell anslutning ns Gränssnitt B parallell anslutning bussar Gränssnitt C A/D anslutning Minne s hanterare från A från B enhet C s rutin C s rutin A enhet A s rutin B enhet B $Q+ MOP fo RTE MOP fo 9
INTA In Out YE Vektor nr In Databuss Vektor- Out YE Vektor nr In Out YE Vektor nr Vektor nr ( i) Vektor nr ( i+p) Vektor nr max ( i+max) max MOP fo 7 Vektor INTA 7 PC Yttre enhet Minne INTA Vektor Reg p Vektor q (Vektor q) q Databuss r buss MOP fo 8 Flera singångar Olika prioriteter CPU ssignaler ns X Y Z bussar eriell Parallell Analog anslutning anslutning anslutning A B C Minne MOP fo 9 CPU ssignaler för för för RT E ns RT E bussar eriell Parallell Analog anslutning anslutning anslutning A B C Minne Adr tatus och återhoppsadress för tatus och återhoppsadress för tatus och återhoppsadress för huvudprogrammet RT E Adr max MOP fo
Interna signaler för detekterig av olika feltillstånd Externa avbrottsignaler med HC s TYRENHET s Register tatus Register slogik tyrbuss REET avbrottshantering för REET i i+ Minnet Datadel D..D7 ALU DATAVÄG del A..A7 och PC buss X I avbrottshantering för X avbrottshantering för i+ i+ i+ i+ Databuss MOP ns fo externa bussar etc MOP fo (hex) FFFE FFFC FFFA FFF8 FFF FFF FFF FF-FFF med HC Funktion REET, tartvektor Clock Monitor Fail, (ej impl i simulator) COP Watchdog Timeout, (ej impl i simulator) Illegal Op Code (ej impl i simulator) WI X Enhetsspecifika vektorer, skiljer sig något beroende på de olika varianterna e Appendix D MOP fo Övriga avbrott med HC REET X (Reset) (Interrupt Request) (Non Maskable Interrupt Request) PLU - Ett antal avbrottsingångar från Räknare Fel OP-kod För låg klockfrekvens Wake-Up I/O-moduler eriekretsar Datanät etc MOP fo
MC8 Vektor nr $ High Word tackpekare $ $8 High Word High Word Resetvektor Bus Error MC8 Externa avbrottsingångar i systemet yttre enheter $ High Word Division med noll NORMAL EXCEPT ION REET HALTED $ High Word High Word $ High Word High Word Autovektor snivå Autovektor snivå Vektoravbrott vektor Vektoravbrott vektor IPL IPL IPL s nivå 7 Ingen avbrottsbegäran $fc High Word Vektoravbrott vektor 9 MOP fo MOP fo MC8 Exceptions Interna Buss Error REET TRAP VID AVBROTT: krivaren bestämmer när: Printchar WI - oftware Interrupt Datorsystem kriv ett tecken (Redo) Här är data Yttre enhet Feltillstånd Vektor Autovektor avbrott avbrott Programmerade / externa händelser VID oftware Interrupt: Programmeraren (DU) bestämmer med instruktionen WI när rutinen Printchar skall anropas MOP fo 7 MOP fo 8
DMA Direct Memory Access n är BU MATER DMA Direct Memory Access DMA:n är BU MATER Adr Bus Adr Bus CPU ExVis DIK Minne CPU DMAenhet DMAenhet ExVis DIK Minne Data Bus MOP fo 9 Data Bus MOP fo