Laborationsmoment 2 - En Borrautomat

Relevanta dokument
Laborationsmoment t 2 - En Borrautomat

Laborationsmoment t 2 - En Borrautomat

Laborationsmoment 2 - En Borrautomat

Arbetsbok för MC12, kapitel 4 Klocka. Genomgång av laborationer. New disc Här väljer du olika arbetsstycken

Programmering av inbyggda system

Genomgång av laborationer. New disc: Här väljer du olika arbetsstycken. Control -sektion: Styrord till borrmaskinen

VELKOMMEN!!!! SYFTE o MÅL. till EDA485/DIT151. Maskinorienterad Programmering. Kurslitteratur. önskar Jan o Rolf

Printerport. I DAG Fö 3. Adressavkodning för skrivarporten. Printerport - forts

Programexempel för FLEX

Programmering av inbyggda system

Undantagstyper. Maskinorienterad Programmering 2010/2011. MC68HC12, Stencil Assemblerprogrammering.pdf CPU12 Reference Guide

EDA480/EDA485 - Maskinorienterad programmering, tentamen 2006-xx-xx 1(7)

Maskinorienterad programmering. Arbetshäfte för laboration nr 1-3. Laborant: Godkännande - laboration: Data- och informationsteknik, datorteknik

Maskinorienterad programmering, It/GU

Assemblerprogrammering

Tentamen. DAT015 Maskinorienterad programmering IT DIT151 Maskinorienterad programmering GU. Tisdag 15 december 2009, kl

Förutsättningar för skrivaranslutningen

Extrauppgifter för CPU12

Digital- och datorteknik

VELKOMMEN!!!! SYFTE o MÅL. till DAT015 / DIT151 Maskinorienterad Programmering. Kurslitteratur. önskar Jan o Rolf. Lektioner LP2 Vanlig vecka

Förutsättningar för skrivaranslutningen. Första programexemplet. Synkronisera arbetstakterna

Förutsättningar för skrivaranslutningen. Första programexemplet. strängslut. Maskinorienterad Programmering 2011/2012 Synkronisering och undantag

I DAG Fo 4. Programutveckling i assemblerspråk. Programutveckling i assembler. PROGRAMSTRUKTUR Modul Subrutiner USE-direktivet

Avbrottshantering. Övningsuppgifter Lösningsförslag Uppgift (Reservation för diverse fel!)

Maskinorienterad programmering del 1

Maskinorienterad programmering. Mekatronikingenjör åk 2/ lp 3. Lars-Eric Arebrink. Av institutionen utgiven. Lars-Eric Arebrink

Avbrottshantering. Övningsuppgifter

VELKOMMEN!!!! SYFTE o MÅL. till EDA485/DIT151. Maskinorienterad Programmering. Kursupplägg. Kurslitteratur. önskar Jan o Rolf

EDA215 Digital- och datorteknik för Z

Maskinorienterad Programmering 2010/2011. Maskinorienterad Programmering 2010/2011. Skrivarporten, p Arbetsbok MC12, avsnitt 2

MANUALBLAD MODULER TILL DIGITALMASKINEN

EDA Digital och Datorteknik

Styrenheten 9/17/2011. Styrenheten - forts Arb s 120. LV4 Fo10. Aktivera Kursens mål: Kap 7 Blå

Digital- och datorteknik

Förutsättningar för skrivaranslutningen. Första programexemplet. Inför specialtecken för strängslut

I DAG fo 4. Printerport v3 med READY o DAV. Avbrott. Hur bra blev det egentligen????

Exempel 3 på Tentamen

TENTAMEN (med svar och vissa lösningar)

Digital- och datorteknik

Assemblerprogrammets struktur; exempel

Maskinorienterad Programmering 2010/11

Lösningsförslag tenta

Digital- och datorteknik

Konstruera en dator mha grindar och programmera denna Använda en modern microcontroller

Maskinorienterad programmering

Maskinorienterad programmering

Tentamen. EDA432 Digital- och datorteknik, It DIT790 Digital- och datorteknik, GU. Onsdag 12 Januari 2011, kl

LEU240 Mikrodatorsystem

Digital och Datorteknik EDA /2010. EDA Digital och Datorteknik

Maskinorienterad programmering

Villkorliga hopp: 9/26/2011. Dagens mål: Du ska kunna.. Villrorliga (Relativa) hopp - forts Arb s 140. LV5 Fo12. LV5 Fo12. Aktivera Kursens mål:

Digital- och datorteknik

Digital- och datorteknik

Digital- och datorteknik

Programallokering. Programtyper. Att placera program i flashrespektive. Program i FLASH-minne. Program i RAM-minne

Datorteknik. Tomas Nordström. Föreläsning 6. För utveckling av verksamhet, produkter och livskvalitet.

Assemblerprogrammering del 3

Exempel 1 på Tentamen med lösningar

Tentamen. DIT150 Maskinorienterad programmering GU DAT015 Maskinorienterad programmering IT. Söndag 17 december 2006, kl

CHALMERS TEKNISKA HÖGSKOLA

Ext-13 (Ver ) Exempel på RTN-beskrivning av FLEX-instruktioner

Tentamen 3. EDAxxx Grundläggande Datorteknik DIT791 Grundläggande Datorteknik, GU. Måndag xx Oktober 20xx, kl

F8: Undantagshantering

Avbrott - En enhet. I DAG fo 6 Mera avbrott. Avbrott - Fler enheter. Olika typer av avbrott DMA. Avbrott - Fler enheter -Avbrottshanterare

Tentamen. EDA432 Digital- och datorteknik, IT DIT790 Digital- och datorteknik, GU. Måndag 18 Oktober 2010, kl

Digital- och datorteknik. Mekatronik-, data- och elektroingenjör Åk 1/ lp 1o2. Lars-Eric Arebrink. Av institutionen utgiven. vid flera tillfällen

Maskinorienterad programmering Laborationer för D/Z/GU (EDA480,EDA485, DIT151)

Ext-13 (Ver ) Exempel på RTN-beskrivning av FLEX-instruktioner

Maskinorienterad programmering. Mekatronikingenjör åk 2/ lp 3. Lars-Eric Arebrink. Av institutionen utgiven. vid flera tillfällen.

Reducerad INSTRUKTIONSLISTA för FLIS-processorn

Digital- och datorteknik

Tentamen med lösningar

7) Beskriv tre sätt att överföra parametrar mellan huvudprogram och subrutin.

AVR 3 - datorteknik. Avbrott. Digitala system 15 hp. Förberedelser

Exempel på tentamen 1

Laboration nr 4 behandlar Assemblerprogrammering

Laboration 2 i Datorteknik- Assemblerprogrammering II

Fö 5+6 TSEA81. Real-time kernel + Real-time OS

Maskinorienterad programmering

Övningsuppgifter i Mikrodatorteknik 4p/5p

Maskinorienterad programmering

Övningsuppgifterna i kapitel F avser FLIS-processorn, vars instruktioner och motsvarande koder definieras i INSTRUKTIONSLISTA FÖR FLISP.

Övningsuppgifter STYRNING - i Mikrodatorteknik för U2 2010

Programmering i maskinspråk (Maskinassemblering)

CPU. Carry/Borrow IX. Programräknare

Dataöverföring på Parallell- och serieform MOP 11/12 1

FLEX Instruktionslista

Maskinorienterad programmering

DBG identifierar därefter sig genom utskrift av namn och version. Se även "Disposition av adressrum" nedan. Följande kommandon accepteras av DBG

TSEA28 Datorteknik Y (och U)

Digital- och datorteknik

Digital- och datorteknik. Lars-Eric Arebrink. Betyg 4: 36 poäng Betyg 5: 48 poäng

Svar till Övning3 Datorteknik, HH vt12 Avbrott och timers

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

Övning2 Datorteknik, HH vt12 - Programmering

3. Mikroprogrammering II

Digital- och datorteknik

LV6 LV7. Aktivera Kursens mål:

Transkript:

Maskinorienterad Programmering 2011/2012 : Programutveckling i assembler Arbetsbok för MC12, kapitel 4 1 Laborationsmoment 2 - En Borrautomat Tangentbord för borrkommando Operatör Mikrodator Anpassningselektronik Borrmaskin Klocka 2

Borrmaskin-Robot Borrmotor med ON/OFF knapp Sensor för borr i topp- eller bottenläge Tryckfjäder för höjning av borr Solenoid för sänkning av borr Arbetsstycke Sensor för detektering av referensmärke på arbetsstycke (Dolt) Kretskort med effektelektronik och anslutning mot styrkort för borrmaskin. Stegmotor för rotation av arbetsstycke. 3 Simulatorn för borrmaskinen New disc: Här väljer du olika arbetsstycken Indikator för Motor On Control -sektion: Styrord till borrmaskinen Status -sektion: Statussignaler från borrmaskinen Indikator för Alarm Arbetsstycke Borrade hål märks ut 4

Specifikation Start Operation vald Ja Utför operation Nej starta borrmotorn stoppa borrmotorn sänk borret höj borret vrid arbetsstycket ett steg vrid arbetsstycket till referenspositionen borra ett hål borra hål längs cirkeln enligt ett bestämt mönster. 5 START Init KEYB1 COMMAND COMMAND Spara registerinnehåll på stacken Avkoda (A) Inparameter: Kommandonummer i register A A=0 A=1 A=2 A=3 A=4 A=5 A=6 A=7 A>7 SUB0 (START) SUB1 (STOP) SUB2 (DOWN) SUB3 (UP) SUB4 (STEP) SUB5 (DRILL) SUB6 (REFPO) SUB7 (AUTO) Återställ registerinnehåll från stacken 6

Styrord till borrmaskinen Utport: Drill Control 7 6 5 4 3 2 1 0 stegpuls fram/back borrmotor solenoid larmsignal Bit 4 = 1: Larm på Bit 3 = 1: Borret sänks Bit 2 = 1: Borrmotorn roterar Bit 1 = 1: Medurs vridning Bit 0: Pos flank Stegpuls Logiknivå: Aktiv hög Att göra RESET på borrmaskinen således: LDAA #0 ; Passiva signaler STAA $400 --- --- 7 Statusord från borrmaskinen Inport: Drill Status 7 6 5 4 3 2 1 0 referensposition borr uppe borr nere Anm: Statusporten ansluts till adress $600 i laborationssystemet Bit 2 = 1: Borr i bottenläge Bit 1 = 1: Borr i toppläge Bit 0 = 1: Referensposition Logiknivå: Aktiv hög 8

Testförfarande Uppgift 74 DSInput EQU $600 ; Dip Switch Input DCtrl EQU $0400 ; Drill Control Output DStatus EQU $0401 ; Drill Status Input Loop LDAA DSInput ; Läs strömbrytare STAA DCtrl ; Ge styrord LDAB DStatus ; Läs status BRA Loop 9 Villkorlig assemblering ger korrekta portadresser ; Definiera macro SIM för test i simulator #define SIM DSInput EQU $600 ; Dip Switch Input DCtrl EQU $0400 ; Drill Control Output #ifdef SIM DStatus EQU $0401 ; Drill Status Input #else DStatus EQU $0600 ; Drill Status Input #endif Anm: Dip Switch Input och borrmaskin kan inte användas samtidigt i laborationssystemet (MC12). 10

Använd USE-direktivet ; DRILLDEFS.S12 DSInput EQU $600 ; Dip Switch Input DCtrl EQU $0400 ; Drill Control Output # ifdef SIM DStatus EQU $0401 ; Drill Status Input # else DStatus EQU $0600 ; Drill Status Input # endif ; DTEST1.s12 #define SIM USE DRILLDEFS.S12 Loop LDAA DSInput ; Läs strömbrytare STAA DCtrl ; Ge styrord LDAB DStatus ; Läs status BRA Loop Anm: Både DRILLDEFS och IODEFS förekommer som namn här i arbetsboken, använd endast DRILLDEFS.S12 11 Inledande uppgift med borrmaskinen 1) Arbetsstycket vrids till referensposition. 2) Hål borras 3) Arbetsstycket vrids medurs ett steg 4) Hål borras 5) Arbetsstycket vrids medurs ett steg 6) Hål borras 7) Arbetsstycket vrids medurs tre steg 8) Hål borras 9) En larmsignal ges som indikation på att uppgiften är klar. START Initiera Borrmaskin 1)Till RefPos 2)Borra 3)Vrid1steg 4)Borra 5)Vrid1steg 6)Borra 7)Vrid3steg 8)Borra 9)Ge larm STOP ; Dtest2 USE DRILLDEFS.S12 ORG $1000 LDAA #0 ; Reset STAA DCtrl JSR TillRefPos JSR Borra JSR Vrid1steg JSR Borra JSR Vrid1steg JSR Borra JSR Vrid1steg JSR Vrid1steg JSR Vrid1steg JSR Borra JSR GeLarm Loop: BRA Loop Vrid1steg: TillRefPos: Borra: GeLarm: 12

Att vrida arbetsstycket Uppgift 80 Utport: Drill Control 7 6 5 4 3 2 1 0 Etta: Aktiv styrsignal Nolla: Passiv styrsignal stegpuls fram/back Bit 0 = 0 1 (Pos puls): Arbetsstycket vrids Bit 1 = 0: Medurs vridningsriktning Bit 1 = 1: Moturs vridningsriktning b 1 0 b 0 0 b 0 1 Vrid1S Ange riktning Ge puls 13 Att borra ett hål Borra Utport: Drill Control b 2 1 Starta motor 7 6 5 4 3 2 1 0 Etta: Aktiv styrsignal Nolla: Passiv styrsignal b 3 1 Sänk borr borrmotor solenoid Läs Status Inport: Drill Status 7 6 5 4 3 2 1 0 Nolla: Passiv statussignal Etta: Aktiv statussignal b 2 =1? b 3 0 N Borr Nere? J Höj borr borr nere b 2 0 Stanna motor 14

Att vrida arbetsstycket till referenspositionen TillR efp os Inport: Drill Status 7 6 5 4 3 2 1 0 Nolla: Passiv statussignal Etta: Aktiv statussignal Läs Status referensposition Bit 0 = 0: Arbetsstycket är inte i referensposition Bit 0 = 1: Arbetsstycket är i referensposition b 0 =1? Ref Pos? N Vrid1steg J 15 Att bara ändra en bit i taget * Läs nuvarande styrord LDAA DCtrl * Nollställ lämplig bit ANDA #xx * Skriv nytt styrord STAA DCtrl ;sekvensen är funktionellt ;likvärdig med: BCLR #~xx,dctrl Fungerar inte här ty porten är icke läsbar utport 16

Kopia av styrordet Variabel DCCopy ska hela tiden ha samma värde som DCtrl hade haft om porten varit läsbar För att nollställa en bit används nu: LDAA DCCopy ANDA #Bitmönster STAA DCtrl STAA DCCopy för att ettställa en bit används: LDAA DCCopy ORAA #Bitmönster STAA DCtrl STAA DCCopy DCCopy RMB 1 17 Subrutiner för att manipulera styrregistret OUTONE och OUTZERO * Subrutin OUTONE. Läser kopian av * borrmaskinens styrord på adress * DCCopy. Ettställer en av bitarna och * skriver det nya styrordet till * utporten DCTRL samt tillbaka till * kopian DCCopy. * Biten som nollställs ges av innehållet * i B-registret (0-7) vid anrop. * Om (B) > 7 utförs ingenting. * Anrop: LDAB #bitnummer * JSR OUTONE * Utdata: Inga * Registerpåverkan: Ingen * Anropade subrutiner: Inga bitnummer = 0..7 7 6 5 4 3 2 1 0 18

Realtid - Fördröjningar Instruktioner/ sekund Simulator STEP Simulator RUN Simulator RUN FAST Hårdvara? 10 1000 1 000 000 19 Fördröjningar i mekaniska delar Starta borrmotorn (vänta tills den är uppe i varv, c:a 1 sekund) Vrid arbetsstycket ett steg (vänta tills det har vridits till rätt position, ca 200 ms) Lyft borret (vänta tills borret har kommit ovanför arbetsstycket, ca 300ms) etc 20

************************************** * SUBRUTIN DELAY * Beskrivning: Skapar en fördröjning om * ANTAL x 500 ms. * Anrop: LDAA #6 Fördröj 6*500ms= 3s * JSR DELAY * Indata:Antal intervall,om 500 ms i A * * Utdata: Inga * Register-påverkan:Ingen * Anropad subrutin: Ingen. ************************************** 21 DELAY PSHA PSHX TSTA BEQ DExit ; Fördröjningsvärde noll ; Konstanten 'Konst' måste ; bestämmas... ALOOP LDX #Konst XLOOP LEAX -1,X NOP CPX #0 BNE XLOOP Programmerad tidsfördröjning DECA BNE ALOOP ; Ytterligare fördröjning DExit PULX PULA 22

Använd villkorlig assemblering #ifdef SIM #ifdef RUNFAST * Konstant vid Run Fast Konst EQU XXXX #else * Konstant vid Run Konst EQU YYYY #endif #else Konst EQU ZZZZ #endif Bestäms experimentellt med simulator Bestäms experimentellt vid laboration Uppgift 90 23 Tangentbord ML15 7 6 5 4 3 2 1 0 DAV 0 0 0 B3 B2 B1 B0 Bit 7, DAV: Data Valid; Statusbit som anger nedtryckt tangent b 7 =1: Ingen tangent är för tillfället aktiverad på tangentbordet. b 7 =0: En tangent är aktiverad Bit 6-4, 0: Används ej. Bit 3-0, B3-B0: Tangentnummer; Anger aktuell tangentnedtryckning. 24

Uppgift 91 KEYB1 Läs tangentbord N Tangent nere J Läs tangentbord N Tangent uppe J 25 Borrmaskinrobot START Init Tangent nr Operation subrutin 0 starta borrmotorn START 1 stoppa borrmotorn STOP 2 sänk borret DOWN 3 höj borret UP 4 rotera arbetsstycket medurs ett steg STEP 5 borra ett hål DRILL 6 stega arbetsstycket till referensposition REFPO 7 borra hål längs cirkeln enligt mönster AUTO KEYB1 COMMAND 26

Rutinen COMMAND Uppgift 94 START Init KEYB1 COMMAND Spara registerinnehåll på stacken Avkoda (A) COMMAND Inparameter: Kommandonummer i register A A=0 SUB0 (START) A=1 SUB1 (STOP) A=2 SUB2 (DOWN) SUB3 (UP) A=3 SUB4 (STEP) A=4 A=5 A=6 A=7 SUB5 (DRILL) SUB6 (REFPO) SUB7 (AUTO) A>7 Återställ registerinnehåll från stacken 27 ********************************** * SUBRUTIN COMMAND * Beskrivning: Rutinen avgör vilken * kommandosubrutin som skall * utföras och anropar denna. * Anrop: JSR COMMAND * Indata: Kommandonummer i reg A * Utdata: Inga * Reg-påverkan: A,X * Anrop subr: SUB0 - SUB7 ********************************** MAX EQU 7 COMMAND: * giltigt värde? CMPA #MAX BHI COMEX * hopptabellens basadress LDX #JUMPTAB * offset är 2 bytes per adress ASLA * hämta subrutinens startadress LDX A,X * utför subrutin JSR,X * återvänd från kommandorutin COMEX: ********************************** * Tabell med subrutinadresser JUMPTAB FDB SUB0,SUB1,SUB2,SUB3 FDB SUB4,SUB5,SUB6,SUB7 ********************************** * subrutiner för test, byts senare * ut mot START, STOP, DOWN etc SUB0 MOVB #0,ParOut SUB1 MOVB #1,ParOut SUB2 MOVB #2,ParOut SUB3 MOVB #3,ParOut SUB4 MOVB #4,ParOut SUB5 MOVB #5,ParOut SUB6 MOVB #6,ParOut SUB7 MOVB #7,ParOut 28

Filen MAIN1.S12 STRUKTUR 1. Inkludera definitionsfil 2. Initiera systemet 3. Huvudprogram 4. Subrutinen COMMAND 5. Inkludera fil (filer) med ytterligare subrutiner. 6. Plats för variabler * Definitioner USE IODEFS.S12 ORG Start --- --- ************************************ * Huvudprogram * Invänta vald operation Loop: JSR KEYB1 NOP * Utför vald operation JSR COMMAND BRA Loop ************************************ COMMAND --- --- --- USE KeyML15.S12 * Placera alla variabler här DCCopy RMB 1 29 Att testa filen MAIN1.S12 START Init KEYB1 COMMAND SUB0 SUB1 SUB2 SUB3 SUB4 SUB5 SUB6 SUB7 MOVB #0,ParOut MOVB #1,ParOut MOVB #2,ParOut MOVB #3,ParOut MOVB #4,ParOut MOVB #5,ParOut MOVB #6,ParOut MOVB #7,ParOut 30

Övriga, funktioner (MAINxx) testas med tangentbord och borrmaskin START Init KEYB1 COMMAND 31 Rutiner START och STOP * SUBRUTIN START. Subrutinen startar * borrmotorn väntar därefter i 500 ms * före återhopp så att borret uppnår * rätt hastighet. * * Anrop: JSR START * * Indata: Inga * Utdata: Inga * Registerpåverkan: Ingen * Anropade subrutiner: OUTONE * DELAY * SUBRUTIN STOP. Subrutinen stannar * borrmotorn. * * Anrop: JSR STOP * Indata: Inga * Utdata: Inga * Registerpåverkan: Ingen * Anropade subrutiner: OUTZERO Ändringar i huvudprogram... JUMPTAB FDB START,STOP,SUB2,SUB3 FDB SUB4,SUB5,SUB6,SUB7 ********************************** * subrutiner för test, byts senare * ut mot START, STOP, DOWN etc START... STOP... SUB2 MOVB #2,ParOut... 32

Laborationsmoment 2 Pseudoparallell exekvering Tangentbord för borrkommando Operatör Mikrodator Anpassningselektronik Borrmaskin Klocka 33 Applikation för avbrott (IRQ) ;Initieringssekvens ORG XXXX... ; nollställ I-flagga ANDCC #$FE JSR _main... FFFF 4000 3FFF 1000 0FFF 0400 03FF 0000 ROM, Innehåller det inbyggda debuggerprogrammet DBG12. RWM, används för program och data. I detta adressintervall placeras gränssnitt mot externa enheter HCS12 interna register ORG $FFF2 FDB irq_service_routine ; Avbrottshanterare irq_service_routine:... RTI I laborationssystemet (MC12) kan vi INTE placera avbrottsvektorerna på deras rätta platser (konflikt med DBG12) I stället placeras dom i RWM 34

MC12 (DBG12) och avbrott IRQ Huvudprogram IRQHandler RTI Betjäna avbrottet Vektor ROM Funktion FFFE RESET, Startvektor FFFC Clock Monitor Fail, JMP [3FFC] FFFA COP Watchdog Timeout, JMP [3FFA] FFF8 Illegal Op Code, JMP [3FF8] FFF6 SWI, JMP [3FF6] FFF4 XIRQ, JMP [3FF4] FFF2 IRQ, JMP [3FF2] FF8C Enhetsspecifika JMP [3Fxx] FFF0 vektorer Allmänt ORG $FFF2 FDB irq_service_routine ; Avbrottshanterare irq_service_routine: RTI Men i MC12 och simulator... ORG $3FF2 FDB irq_service_routine ; Avbrottshanterare irq_service_routine: RTI 35 Processbyte En processor flera program körs samtidigt (pseudoparallellt) HDW krav: En avbrottskälla som ger regelbundna avbrott (Ex Timer) SW krav: En avbrottsrutin (SWITCH) som växlar process Init variabler kod P1 data/stack P1 kod P2 data/stack P2 kod P3 data/stack P3 Process1 Process 2 Process 3 Puls generator 400Hz CS vid skrivning 1 1D C1 R Q' Till processorns IRQ kod P4 data/stack P4 Ledigt... Process 4 36

Processtillstånd 400Hz 1 1D C1 RUNNING READY CS f 400Hz p R 1 400 Q' IRQ 0,0025s 2,5ms IRQ PROC 4 PROC 3 PROC 2 PROC 1 IRQ IRQ IRQ READY READY READY RUNNING INIT SWITCH T=0 2,5ms 2,5ms 2,5ms μs μs μs RTI RTI RTI t 37 Init variabler Viktigt: I-flaggan måste vara 0 $3000 kod P1 data/stack P1 kod P2 data/stack P2 kod P3 data/stack P3 kod P4 data/stack P4 Ledigt... Process1 Process 2 Process 3 Process 4 $2FF7 $3000 CCR ACCB ACCA X H X L Y H Y L PC H PC L SP 38

Init variabler kod P1 data/stack P1 kod P2 data/stack P2 kod P3 data/stack P3 Process1 Process 2 Process 3 SPProc1 SPProc2 SPProc3 SPProc4 P1sp H P1sp L P2sp H P2sp L P3sp H P3sp L P4sp H P4sp L Stackpekare Process 1 Stackpekare Process 2 Stackpekare Process 3 Stackpekare Process 4 kod P4 data/stack P4 Process 4 ProcNR 0,1,2,3 Processnummer Running Ledigt... 39 Initial stack för process och processbyte : ORG TopOfStack-9 Istack: FCB $C0 ; Initialt CCR FCB 0 ; Initialt B FCB 0 ; Initialt A FDB 0 ; Initialt X FDB 0 ; Initialt Y FDB Start ; Initialt PC ORG LDD STD Code #Istack SPProc CCR ACCB ACCA X H X L Y H Y L PC H PC L SP IRQHandler: ; Spara Running stackpekare STS... ; Välj ny Running LDS... ; Återstarta RTI 40