Hoofdstuk 4 Besturingssystemen SOCS Hoofdstuk 4 Besturingssystemen
Besturingssystemen Werking van de computer besturen/regelen In geheugen geladen bij opstarten v/d computer Voordelen: Eenvoudiger om met computer te werken Laag niveau taken, verbergen details, … Computer efficiënt laten werken Meerdere programma’s tegelijk, in- en uitvoer, … Voldoende hardware ondersteuning! Programmaonderbrekingen, processortoestanden, geprivilegieerde bevelen, beschermingsregisters, wekker, …
Besturingssystemen Gebruikers Toepassingen Besturingssysteem Hardware
Inhoud Inleiding Programmatoestandswoord Programma-onderbrekingen Invoer en uitvoer Processortoestanden Multiprogrammatie Soorten Besturingssystemen Taken van een besturingssysteem Kosten en Baten
Inhoud Inleiding Programmatoestandswoord Programma-onderbrekingen Invoer en uitvoer Processortoestanden Multiprogrammatie Soorten Besturingssystemen Taken van een besturingssysteem Kosten en Baten
Inleiding Besturingssysteem (Operating System) Doelstellingen Gebruiksvriendelijker Efficiënter Geen sine qua non Zonder BS: niet eenvoudig! Laden van programma, bewaren informatie, … Eerste computers zeer duur Efficiëntie erg belangrijk
Inleiding Voor bepaald type hardware DOS, OS/2 Intel PC VMS Dec (VAX) MVS IBM Mainframes Voor verschillende hardware platformen Unix/Linux Grote verschillen Verschillende hardware, gebruikers, beheerders Gemeenschappelijke kenmerken
Inhoud Inleiding Programmatoestandswoord Programma-onderbrekingen Invoer en uitvoer Processortoestanden Multiprogrammatie Soorten Besturingssystemen Taken van een besturingssysteem Kosten en Baten
Programmatoestandswoord Register van het CVO (Program Status Word, PSW) Bevat informatie over: Toestand van het programma in uitvoering Toestand van de machine zelf Bezig met uitvoering van instructie op adres 0090 Conditiecode = 2 Oei, Overloop! …
Programmatoestandswoord 20 decimale cijfer Verschillende velden PTW3 = CC, PTW6..9 = BT, … Stapel- overloop- indicator Conditie-code Overloop- indicator Bevelen- teller H/U S/P CC ONV OVI SOI BT 0 1 2 3 4 5 6 7 8 9 GPF WEK DRK G IN UIT SCH OVL SPL MFT 10 11 12 13 14 15 16 17 18 19
Programmatoestandswoord Sommige velden krijgen impliciet hun waarde neveneffect van uitvoering van een bevel CC (HIA, BIG, OPT, …, VGL, LEZ, DRU) Indien overloop bij +,-,*,/,%, dan OVI 1, anders OVI 0 Indien stapeloverloop, dan SOI 1, anders SOI 0 BT wordt tijdens het ophalen van een bevel opgehoogd of bij een sprong aangepast
Programmatoestandswoord Waarde van sommige velden indirect testen: VSP-instructie CC: NUL, NNUL, POS, NPOS, NEG, NNEG OVI: OVL (overloop), GOVL (geen overloop) SOI: SO (stapeloverloop), GSO (geen SO)
Programmatoestandswoord int a, b, c; main() { a = getint(); while (a != 0) { b = getint(); c = a – b; if (c < 0) c = – c; /* ... Zet c op stapel ... */ } ... LEZ LUS: VSP NUL,ENDWH HIA R1,R0 AFT R1,R0 VSP NNEG,POS VER.w R1,-1 POS: BST R1 SPR LUS ENDWH: … CC? CC? a, c R1 b R0
Programmatoestandswoord int a, b, c; main() { a = getint(); while (a != 0) { b = getint(); c = a – b; if (c < 0) c = – c; /* ... Zet c op stapel ... */ } ... LEZ LUS: VSP NUL,ENDWH HIA R1,R0 AFT R1,R0 VSP NNEG,POS VER.w R1,-1 POS: BST R1 SPR LUS ENDWH: … Overloop? Geen informatie over aantal of bereik van getallen
Programmatoestandswoord int a, b, c; main() { a = getint(); while (a != 0) { b = getint(); c = a – b; if (c < 0) c = – c; /* ... Zet c op stapel ... */ } ... LEZ LUS: VSP NUL,ENDWH HIA R1,R0 AFT R1,R0 VSP OVL,OVERL VSP NNEG,POS VER.w R1,-1 POS: BST R1 SPR LUS ENDWH: … OVERL: … Overloop? Geen informatie over aantal of bereik van getallen
Programmatoestandswoord int a, b, c; main() { a = getint(); while (a != 0) { b = getint(); c = a – b; if (c < 0) c = – c; /* ... Zet c op stapel ... */ } ... LEZ LUS: VSP NUL,ENDWH HIA R1,R0 AFT R1,R0 VSP OVL,OVERL VSP NNEG,POS VER.w R1,-1 POS: BST R1 SPR LUS ENDWH: … OVERL: … Stapel- overloop? Geen informatie over aantal of bereik van getallen
Programmatoestandswoord int a, b, c; main() { a = getint(); while (a != 0) { b = getint(); c = a – b; if (c < 0) c = – c; /* ... Zet c op stapel ... */ } ... LEZ LUS: VSP NUL,ENDWH HIA R1,R0 AFT R1,R0 VSP OVL,OVERL VSP NNEG,POS VER.w R1,-1 POS: BST R1 VSP SO,STOVL SPR LUS ENDWH: … OVERL: … STOVL: … Overloop? Overloop? Stapel- overloop? Geen informatie over aantal of bereik van getallen
Inhoud Inleiding Programmatoestandswoord Programma-onderbrekingen Overloop en Oneindige lussen Bevelencyclus Programma-onderbrekingsmechanisme Soorten onderbrekingen Verbieden van programma-onderbrekingen Programma-onderbrekingsroutines Geprogrammeerde programma-onderbrekingen Invoer en uitvoer …
Elektronica reeds aanwezig! Overloop Overloop = resultaat kan niet meer voorgesteld worden Voorbeeld: HIA R1,a OPT R1,b VSP OVL,OVLP … OVLP: … 4.000.000.000 +1.000.000.000 =5.000.000.000 Onmiddellijk testen na berekening Zoniet: OVI Nieuwe waarde Beter: Automatisch onderbreken Minder geheugen Sneller uitvoeren = – 5.000.000.000 Elektronica reeds aanwezig!
Overloop Oeps! Overloop!!! Stop de uitvoering!!! Rekenwerk Controle 4.000.000.00 +1.000.000.000 = –5.000.000.000 Oeps! Overloop!!! Stop de uitvoering!!! Rekenwerk Controle
Oneindige Lus Meerdere programma’s Editor Vertaler Gebruikersprogramma Besturingssysteem … Editor Vertaler Wisselen tussen programma’s Via SPR-bevel Niet op willekeurig ogenblik! Programma controle over de processor bevelen van dit programma uitgevoerd worden CVO monopoliseren!!! Vb. Oneindige Lus
Oneindige Lus int a, b, c; main() { a = 0; b = 17; while (a < b) ... } | a R1 | b R2 HIA.w R1,0 HIA.w R2,17 LUS: VGL R1,R2 VSP GRG,EINDE OPT.w R3,10 SPR LUS EINDE: …
Bevelencyclus Volgorde besturing: Doorbreken volgorde: Ophalen bevel BT BT + 1 Instructie analyseren Functiecode Operand(en) berekenen Instructie uitvoeren Doorbreken volgorde: Sprongbevel: BT nieuwe waarde Programma-onderbreking
Programma-onderbreking Uitvoering van een programma onderbreken + uitvoering van ander programma beginnen
Programma-onderbreking Boek lezen = programma uitvoeren Voor achter (= sequentieel) Bel gaat Bladwijzer (= onthouden waar gekomen) Naar deur, deur openen, interactie bezoeker (= uitvoeren ander programma) Bezoeker weg … Boek verderlezen (bladwijzer) = onderbroken programma hernemen
Programma-onderbreking Boek lezen Bezoeker ontvangen Toestand bewaren Toestand herstellen Bezoeker weg
Programma-onderbreking Verschillende oorzaken …
Programma-onderbreking H/U S/P CC ONV OVI SOI BT 0 1 2 3 4 5 6 7 8 9 GPF WEK DRK G IN UIT SCH OVL SPL MFT 10 11 12 13 14 15 16 17 18 19 1 2 3 4 5 6 7 8 9 Onderbreking gevraagd! 1 Onderbrekingsvlaggen CVO (processor)
Programma-onderbreking Op elk ogenblik aangevraagd (asynchroon) Eventueel ingaan na uitvoering huidige instructie Bevelencyclus Ophalen bevel BT BT + 1 Analyseren bevel Functiecode Operanden Uitvoeren bevel Programmaonderbreking aangevraagd? Toestand bewaren Ander programma uitvoeren
Programma-onderbreking Toestand bewaren Toestand = BT, CC, OVI, SOI, … Op vaste plaats Op stapel Eerste deel van PTW: PTW0..9 Risico! Ander programma uitvoeren BT Nieuwe waarde Vaste waarde of afhankelijk onderbreking Adres vast bepaald of instelbaar “Programma-onderbrekingsvectoren” DRAMA: 9990 + k (k = nummer PO) 0000009000 0000009500 0000009584 0000009112 0000009228 0000009012 0000009212 0000009612 0000009712 9991 9992 9993 9994 9995 9996 9997 9998 9999 PO4
Voorbeeld Stapel PO-vectoren 0100 0101 0102 0103 8999 9000 9050 9993 9994 BIG R3,RES SPR VERDER RES: RESGR 1 VERDER: HIA.w R2,0 … 1221009900 3221900103 0000000000 1111200000 1221300102 0000009212 0000009050 1221009100 0000909090 Stapel R9 … PO_ROUT4: BIG R0,BEWAAR … PO-vectoren
Onderbrekingsvlaggen Voorbeeld Ophalen 0100 0101 0102 0103 8999 9000 9050 9993 9994 1221300102 Processor 0 1 0 0 BT SOI OVI 2 CC 1 3221900103 0000000000 1 2 3 4 5 6 7 8 9 1111200000 0000000020 R0 0000909090 1111111111 R3 1221009100 Onderbrekingsvlaggen 0000009000 R9 1221009900 1112000000 BR 0000009212 0000009050
Onderbrekingsvlaggen Voorbeeld Analyseren, Uitvoeren 0100 0101 0102 0103 8999 9000 9050 9993 9994 1221300102 Processor 2 CC OVI SOI 0 1 0 1 BT 3221900103 1 1 0000000000 1 2 3 4 5 6 7 8 9 1111200000 0000000020 R0 0000909090 1111111111 R3 1221009100 Onderbrekingsvlaggen 0000009000 R9 1221009900 1221300102 BR 0000009212 0000009050
Onderbrekingsvlaggen Voorbeeld PO aangevraagd? 0100 0101 0102 0103 8999 9000 9050 9993 9994 1221300102 Processor 1 CC OVI SOI 0 1 0 1 BT 3221900103 1 1 1111111111 1 2 3 4 5 6 7 8 9 1111200000 0000000020 R0 0000909090 1111111111 R3 1221009100 Onderbrekingsvlaggen 0000009000 R9 1221009900 1221300102 BR 0000009212 0000009050
Onderbrekingsvlaggen Voorbeeld Ophalen 0100 0101 0102 0103 8999 9000 9050 9993 9994 1221300102 Processor 1 CC OVI SOI 0 1 0 1 BT 3221900103 1 1 1111111111 1 2 3 4 5 6 7 8 9 1111200000 0000000020 R0 0000909090 1111111111 R3 1221009100 Onderbrekingsvlaggen 0000009000 R9 1221009900 1221300102 BR 0000009212 0000009050
Onderbrekingsvlaggen Voorbeeld Analyseren, Uitvoeren 0100 0101 0102 0103 8999 9000 9050 9993 9994 1221300102 Processor 1 CC OVI SOI 0 1 0 2 BT 3221900103 1 1 1111111111 1 2 3 4 5 6 7 8 9 1111200000 0000000020 R0 0000909090 1 1111111111 R3 1221009100 Onderbrekingsvlaggen 0000009000 R9 1221009900 3221900103 BR 0000009212 0000009050
Onderbrekingsvlaggen Voorbeeld PO aangevraagd? 0100 0101 0102 0103 8999 9000 9050 9993 9994 1221300102 Processor 1 CC OVI SOI 0 1 0 3 BT 3221900103 1 1 1111111111 1 2 3 4 5 6 7 8 9 1111200000 0000000020 R0 0000909090 1 1111111111 R3 1221009100 Onderbrekingsvlaggen 0000009000 R9 1221009900 3221900103 BR 0000009212 0000009050
Onderbrekingsvlaggen Voorbeeld PO aangevraagd? Push(PTW0..9) 0100 0101 0102 0103 8999 9000 9050 9993 9994 1221300102 Processor 1 CC OVI SOI 0 1 0 3 BT 3221900103 1 1 1111111111 1 2 3 4 5 6 7 8 9 1111200000 0000000020 R0 0000909090 1 1111111111 R3 1221009100 Onderbrekingsvlaggen 0000009000 R9 1221009900 3221900103 BR 0000009212 0000009050
Onderbrekingsvlaggen Voorbeeld PO aangevraagd? PO-vlag[4] 0 0100 0101 0102 0103 8999 9000 9050 9993 9994 1221300102 Processor 1 CC OVI SOI 0 1 0 3 BT 3221900103 1 1 1111111111 1 2 3 4 5 6 7 8 9 1111200000 0000000020 R0 0111000103 1 1111111111 R3 1221009100 Onderbrekingsvlaggen 0000008999 R9 1221009900 3221900103 BR 0000009212 0000009050
Onderbrekingsvlaggen Voorbeeld PO aangevraagd? PTW6..9 … 0100 0101 0102 0103 8999 9000 9050 9993 9994 1221300102 Processor 1 CC OVI SOI 0 1 0 3 BT 3221900103 1 1 1111111111 1 2 3 4 5 6 7 8 9 1111200000 0000000020 R0 0111000103 1111111111 R3 1221009100 Onderbrekingsvlaggen 0000008999 R9 1221009900 3221900103 BR 0000009212 0000009050
Onderbrekingsvlaggen Voorbeeld Ophalen 0100 0101 0102 0103 8999 9000 9050 9993 9994 1221300102 Processor 1 CC OVI SOI 9 0 5 0 BT 3221900103 1 1111111111 1 2 3 4 5 6 7 8 9 1111200000 0000000020 R0 0111000103 1111111111 R3 1221009100 Onderbrekingsvlaggen 0000008999 R9 1221009900 3221900103 BR 0000009212 0000009050
Onderbrekingsvlaggen Voorbeeld Enz … 0100 0101 0102 0103 8999 9000 9050 9993 9994 1221300102 Processor 1 CC OVI SOI 9 0 5 0 BT 3221900103 1 1111111111 1 2 3 4 5 6 7 8 9 1111200000 0000000020 R0 0111000103 1111111111 R3 1221009100 Onderbrekingsvlaggen 0000008999 R9 1221009900 1221009900 BR 0000009212 0000009050
Soorten Onderbrekingen Externe oorzaken Externe klok, wekker, reset-toets, … Randapparatuur Bestuurder van invoer-, uitvoerapparaat, hulpgeheugen, netwerkkaarten, … Klaar met aangevraagde bewerking, Gegevens beschikbaar, Fout, … Machinefout Elektrische spanning uitgevallen, Geheugenfout, … Programmafout Overloop, Stapeloverloop, Ongeldig adres, Ongeldige instructie, … Geprogrammeerde programma-onderbreking Hulp vragen aan het besturingsprogramma
Soorten Onderbrekingen Engels: Interrupt Trap, Exception (oorz. = programma) Synchroon vs asynchroon Synchroon = op welbepaald tijdstip Voorbeeld: ongeldige instructie (bij analyse) Asynchroon = op willekeurig tijdstip Randapparaat klaar met opdracht
Soorten Onderbrekingen Type Masker Oorzaak PO-vector Nr = Prio 1 2 3 4 5 6 7 8 9 9991 9992 9993 9994 9995 9996 9997 9998 9999 Machinefout Ongeldige instructie Ongeoorloofde instructie --- WEK DRK IN UIT SCH OVL SPL MFT Asynch. Synch. Synch. Programmafout (SO) Synch. Programmafout (OVL) Synch. Schijfbestuurder Asynch. Schermbestuurder Asynch. Toetsenbordbestuurder Asynch. Drukkerbestuurder Asynch. Wekker Asynch. Supervisie-oproep Synch.
Soorten Onderbrekingen Type Masker Oorzaak PO-vector Nr = Prio 1 2 3 4 5 6 7 8 9 9991 9992 9993 9994 9995 9996 9997 9998 9999 Machinefout Ongeldige instructie Ongeoorloofde instructie --- WEK DRK IN UIT SCH OVL SPL MFT Asynch. Synch. Synch. Programmafout (SO) Synch. Programmafout (OVL) Synch. Schijfbestuurder Asynch. Schermbestuurder Asynch. Toetsenbordbestuurder Asynch. Drukkerbestuurder Asynch. Wekker Asynch. Supervisie-oproep Synch.
Verbieden van programma-onderbrekingen
Uitstellen van programma-onderbrekingen Wie eerst?
Verbieden/Uitstellen van programma-onderbrekingen Onderbreking onmogelijk PO-vlag kan niet gezet worden Onderbreking tijdelijk opschorten Niet ingaan op PO-aanvraag Mechanismen: Maskers Prioriteiten
Maskers 0 1 2 3 4 5 6 7 8 9 H/U S/P CC ONV OVI SOI BT 0 1 2 3 4 5 6 7 8 9 H/U S/P CC ONV OVI SOI BT 10 11 12 13 14 15 16 17 18 19 GPF WEK DRK G IN UIT SCH OVL SPL MFT Invoer Masker Schijf Masker Globaal Masker Wekker Masker Drukker Masker Uitvoer Masker Overloop Masker Machinefout Masker Stapeloverloop Masker Globaal Programma Fout Masker 0: PO-aanvraag toegelaten (enabled) 1: PO-aanvraag niet toegelaten (disabled)
G==1 geen enkele PO-aanvraag toegelaten Maskers 0 1 2 3 4 5 6 7 8 9 H/U S/P CC ONV OVI SOI BT 10 11 12 13 14 15 16 17 18 19 G GPF WEK DRK IN UIT SCH OVL SPL MFT G==1 geen enkele PO-aanvraag toegelaten
Maskers 0 1 2 3 4 5 6 7 8 9 H/U S/P CC ONV OVI SOI BT 0 1 2 3 4 5 6 7 8 9 H/U S/P CC ONV OVI SOI BT 10 11 12 13 14 15 16 17 18 19 G GPF WEK DRK IN UIT SCH OVL SPL MFT GPF==1 PO7 en PO8 genegeerd (ignored) (vlaggen kunnen niet gezet worden)
Maskers 0 1 2 3 4 5 6 7 8 9 H/U S/P CC ONV OVI SOI BT 0 1 2 3 4 5 6 7 8 9 H/U S/P CC ONV OVI SOI BT 10 11 12 13 14 15 16 17 18 19 G GPF WEK DRK IN UIT SCH OVL SPL MFT Masker == 1 PO-aanvraag uitgesteld (pending)
Maskers Speciale instructies MKH xxx (Masker Hoog) PTWxxx 1 MKL xxx (Masker Laag) PTWxxx 0 TSM xxx (Test Masker) CC PTWxxx TSO xxx (Test Onderbrekingsvlag) CC PO-vlagxxx
Maskers Voorbeelden: PO vanwege wekker en drukker niet toegestaan Toch nagaan of drukker PO aangevraagd heeft R9 niet gebruikt voor stapel Staat Globaal Masker af? MKH WEK MKH DRK TSO DRK VSP POS,PO_AANGEVRAAGD MKH SPL TSM G VSP NUL,G_MASKER_AF
Prioriteiten 0 1 2 3 4 5 6 7 8 9 H/U S/P CC ONV OVI SOI BT 0 1 2 3 4 5 6 7 8 9 H/U S/P CC ONV OVI SOI BT 10 11 12 13 14 15 16 17 18 19 GPF WEK DRK G IN UIT SCH OVL SPL MFT Alleen op PO-aanvragen met prioriteit hoger dan ONV kan ingegaan worden.
Geen enkele PO TOEGESTAAN Prioriteiten Prio Oorzaak 9 Machinefout Ongeldige instructie Ongeoorloofde instr. 8 Programmafout (SO) 7 Programmafout (OVL) 6 Schijfbestuurder 5 Schermbestuurder 4 Toetsenbordbest. 3 Drukkerbestuurder 2 Wekker 1 Supervisie-oproep Voorbeelden: ONV == 4 ? PO-aanvraag Wekker ? PO-aanvraag Schijf ? PO-aanvraag Machinefout ONV == 9 Toekenning prioriteiten? UITGESTELD TOEGESTAAN TOEGESTAAN Geen enkele PO TOEGESTAAN Prio(dringend) > Prio(minder dringend) Prio(snel apparaat) > Prio(traag apparaat)
Bevelencyclus stop = 0; while (! stop) { /* haal bevel op */ … /* analyseer bevel */ … /* voeruit */ … if (PTW[10] != 1) { /* G masker af */ int onv = PTW[0]; int k; /* Toeg. PO-aanvraag? */ for (k=9; k>onv; k--) if ((PO_vlag[k] && ((k == 1) || ! PTW[10+k])) /* && (PTW[11]==0 || (k!=7 && k!=8))*/ ) break; if (k > onv) { /* POk */ PTW[0] = k; /* ONV */ PO_vlag[k] = 0; vulin( Geheugen[9990+k] % 10000,PTW,6,9); } } /* if (G-masker) */ } /* while */ Indien PTW[11] == 1 PO_vlag[7] en PO_vlag[8] kunnen niet gezet worden
PO-behandelingsroutine Elk soort programma-onderbreking apart programma (= PO-behandelingsroutine) Engels: Interrupt (service) routine HIA.w R1,10 HIA.w R2,50 OPT R1,R2 … … HIA.w R1,1000 ! Na onderbreking: Onderbroken programma hernemen Alle accumulatoren terug oorspronkelijke waarde CC, OVI, SOI terug oorspronkelijke waarde BT terug oorspronkelijke waarde
KTO-instructie Na programma-onderbreking terug verder met onderbroken programma KTO Keer Terug van Onderbreking 6299999999 Beëindigt de programma-onderbreking PTW0..9 pop() BT terug de oorspronkelijke waarde CC, OVI, SOI opnieuw oorspronkelijke waarde … Vergelijk KTG Alleen BT hersteld PTW6..9 pop() % 10000
Gebruikers- programma Voorbeeld Masker PO5 = 1 Andere maskers = 0 Gebruikers- programma PO-routine-1 PO-routine-2 PO-routine-3 PO-routine-4 PO-routine-5 PO-routine-6 PO-routine-7 PO-routine-8 PO-routine-9 ONV=9 KTO ONV=7 KTO ONV=4 ONV=4 ONV=4 KTO ONV=0 ONV=0 PO4 PO9 PO7 PO5 tijd
PO-behandelingsroutine | Bewaar inhouden van accumulatoren PO_routineN: | Hier begint de eigenlijke behandeling … | Herstel de inhouden v/d accumulatoren | Keer terug KTO BIG R0,BEWAAR+0 BIG R1,BEWAAR+1 … BIG R9,BEWAAR+9 HIA R0,BEWAAR+0 HIA R1,BEWAAR+1 … HIA R9,BEWAAR+9 BEWAAR: RESGR 10
Geprogrammeerde programma-onderbreking PO-vlag[1] geplaatst via speciale instructie OND (Onderbreking) 619999 Waarde niet gebruikt bij uitvoering Programma vraagt “hulp” aan het besturingsprogramma Bijvoorbeeld: Hoe laat is het? Schrijf “PO-aanvraag” weg in bestand “Socs.doc” = dienstnummer PO_routine voor geprogrammeerde PO moet zelf nummer ophalen (cfr. Verder)
DRAMA - machine Opstarten van DRAMA-machine KTO H/U S/P CC OVI SOI BT 9990 9991 9992 9993 9994 9995 9996 9997 9998 9999 KTO 6299999999 0000009990 H/U S/P CC OVI SOI BT 1
DRAMA - machine Voorbeeld: PO voor drukker (PO3) toelaten H/U S/P CC 9990 9991 9992 9993 9994 9995 9996 9997 9998 9999 6299999999 0000009990 H/U S/P CC OVI SOI BT 0000009990 1 1 1 1 1 1 1 1 1 1 0000009990 0000009990 … PO_DRK: … KTO HIA.a R0,PO_DRK 0000009990 BIG R0,9990+3 0000009990 0000009990 0000009990 9123 0000009990
DRAMA - machine Voorbeeld: PO voor drukker (PO3) toelaten H/U S/P CC 9990 9991 9992 9993 9994 9995 9996 9997 9998 9999 6299999999 0000009990 H/U S/P CC OVI SOI BT 0000009990 1 1 1 1 1 1 1 1 1 1 0000009123 0000009990 HIA.a R0,PO_DRK BIG R0,9990+3 … PO_DRK: … KTO 0000009990 0000009990 MKL DRK 0000009990 0000009990 9123 0000009990
DRAMA - machine Voorbeeld: PO voor drukker (PO3) toelaten H/U S/P CC 9990 9991 9992 9993 9994 9995 9996 9997 9998 9999 6299999999 0000009990 H/U S/P CC OVI SOI BT 0000009990 1 1 1 1 1 1 1 1 1 0000009123 0000009990 HIA.a R0,PO_DRK BIG R0,9990+3 MKL DRK … PO_DRK: … KTO 0000009990 0000009990 MKL G 0000009990 0000009990 9123 0000009990
DRAMA - machine Voorbeeld: PO voor drukker (PO3) toelaten H/U S/P CC 9990 9991 9992 9993 9994 9995 9996 9997 9998 9999 6299999999 0000009990 H/U S/P CC OVI SOI BT 0000009990 1 1 1 1 1 1 1 1 0000009123 0000009990 HIA.a R0,PO_DRK BIG R0,9990+3 MKL DRK MKL G … PO_DRK: … KTO 0000009990 0000009990 0000009990 0000009990 9123 0000009990
Cursustekst Hoofdstuk 4: pag. 94 pag. 123