|
|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 176128 (0x2b000)
Types: TextFile
Names: »D154«
└─⟦ae2411776⟧ Bits:30008864 Diskette med tekster der formodes at være 31-D-152…161
└─⟦this⟧ »D154«
\f
i
I_N_D_H_O_L_D_S_F_O_R_T_E_G_N_E_L_S_E_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _S_I_D_E_
1. INDLEDNING ............................................. 1
2. GENEREL BESKRIVELSE AF TESTOMGIVELSER .................. 2
2.1 Diskette stationer ................................ 2
2.2 Externt udstyr .................................... 2
2.3 Prom-identifikation ............................... 3
2.4 Printkort ......................................... 3
3. BESKRIVELSE AF TESTFUNKTIONER OG TESTPROGRAMMER ........ 5
4. IMPLEMENTEREDE TESTPROGRAMMER .......................... 9
4.1 Lagertest ......................................... 12
4.1.1 Lagertest, modif 0 ......................... 13
4.1.2 Simpel lagertest, modif 1,2,3 .............. 16
4.2 Parallel out/keyboard in test ..................... 18
4.3 Flexible Disk test ................................ 19
4.3 1 Diskette formattering ...................... 21
4.3.2 Diskette Write/Read ........................ 22
4.3.3 Diskette test specifikationer .............. 23
4.4 Printer test ...................................... 26
4.5 Keyboard in/display out test ...................... 26
4.6 Terminal out/terminal in test ..................... 27
5. EN FULDSTÆNDIG SYSTEMTEST .............................. 28
6. KONKLUSION ............................................. 30
B_I_L_A_G_:
A. REFERENCER ............................................. 31
B. FEJLKODETABEL OG FÆLLES ARBEJDSOMRÅDE .................. 32
B. OVERORDNET STRUKTUR OG FÆLLES RUTINER .................. 33
\f
ii
I_N_D_H_O_L_D_S_F_O_R_T_E_G_N_E_L_S_E_ _(_f_o_r_t_s_a_t_)_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _S_I_D_E_
D. RC701 SYSTEMTEST ....................................... 34
E. LINESELECTOR TEST ...................................... 35
F. RC702 SYSTEMDISKETTE TEST .............................. 36
G. TEKNIKERPANEL, TCP702 .................................. 37
H. PROGRAM-LISTNING I UDDRAG .............................. 39
\f
1_._ _ _ _ _ _ _ _ _I_N_D_L_E_D_N_I_N_G_ 1.
Denne manual beskriver på nødtørftig vis de vigtigste parametre,
som er af betydning for test af og fejlfinding på RC702. Beskri-
velsen dækker i et vist omfang også fejlsøgning på RC701, idet
testprogrammerne er næsten ens udformet. På RC701 skal man spe-
cielt bemærke de ændrede hardw-portnumre, som anført i appendix D.
Manualen findes kun i denne foreløbige version, som forhåbenlig
senere kan udbygges og udsendes som almindelig standard klasse 2
manual.
Den omtalte version af testprogram-systemet er på mange måder
ikke tilpasset de overordnede krav til funktion og virkemåde, som
foreligger med henblik på indførelse af funktionsanalyse, udnyt-
telse af fælles testrutiner (ramme-system for RC700, RC850 osv.),
ligesom lagerpladskrav allerede er en begrænsende faktor.
Testprogrammerne afvikles ved hjælp af TCP702.
Manualen giver en beskrivelse af, hvorledes man benytter testpro-
grammerne. En systembeskrivelse af programmerne vil forhåbentlig
blive tilføjet senere.
Endelig skal det fremhæves, at manualen også beskriver allerede
afprøvede testprogrammer, der har måttet udelades i denne version
af testsystemet grundet lagerpladskrav.
\f
2_._ _ _ _ _ _ _ _ _G_E_N_E_R_E_L_ _B_E_S_K_R_I_V_E_L_S_E_ _A_F_ _T_E_S_T_O_M_G_I_V_E_L_S_E_R_ 2.
Et komplet RC700 system til aftestning vil normalt bestå af
nedenfor angivne enheder.
2_._1_ _ _ _ _ _ _ _D_i_s_k_e_t_t_e_ _s_t_a_t_i_o_n_e_r_ 2.1
a) 1 mini-drive monteret med unit 0 strap platform + slutmod-
stand, eller
b) 2 mini-drives monteret med henholdsvis unit 0 og unit 1 strap
platform + slutmodstand på unit 1, eller
c) 1 mini-drive monteret med unit 0 strap platform og 1 maxi
drive monteret med unit 1 strap platform og slutmodstand,
eller
d) 1 maxi-drive monteret som beskrevet under a), eller
e) 2 maxi-drives monteret som beskrevet under b).
Maxi-drive montering foregår altid via det externe stik på
bagsiden mærket J1009: "Ext. Flex. Diskette".
Mini-drive montering foregår altid via de interne kabelstik.
Ved test af et stand-alone maxi-drive system, skal mini-drive
kabler fjernes (pkt. d + e).
2_._2_ _ _ _ _ _ _ _E_x_t_e_r_n_t_ _u_d_s_t_y_r_ 2.2
Skærmenhed, type: _ _ _ _ _R_C_7_5_1_ _ _ _ _ _ _
Keyboard, type: _ _ _ _ _R_C_7_2_1_ _ _ _ _ _ _
Printer, type: _ _ _ _ _R_C_8_6_1_ _ _ _ _ _ _
Lineselector, type: _ _ _ _ _R_C_7_9_1_ _ _ _ _ _ _
\f
Diverse kabler, ikke specificeret, herunder:
a) Ext. flex. diskette kabel(ler)
b) Int. flex. diskette kabel(ler)
c) Keyboard/parallel port sammenkoblings kabel (test alene)
d) Terminal afslutningskabel (test alene)
e) Lineselector kabel(ler) + printer kabel.
Mini-diskette, type VERBATIM MD550-01 (Double Sided)
Maxi-diskette, type 3M 740/2-0 (vendbar)
2_._3_ _ _ _ _ _ _ _P_r_o_m_-_i_d_e_n_t_i_f_i_k_a_t_i_o_n_ 2.3
Testprom no. 1 : type I 2716, id _ _R_O_A_3_7_8_ _ _ _
Testprom no. 2 : type I 2716, id _ _R_O_A_3_7_9_ _ _ _
Systemprom no.1 : type I 2716, id _ _R_O_A_3_7_5_ _ _ _
2_._4_ _ _ _ _ _ _ _P_r_i_n_t_k_o_r_t_ 2.4
I fig. 2.4 er søgt fremstillet på forenklet vis placeringen på
printkort af de kredse/moduler, der benyttes i forbindelse med
test af RC702 systemerne.
S_W_1_:
Testprogram select switch, se kapitel 3.
T_e_k_n_i_k_e_r_p_a_n_e_l_ _(_T_C_P_7_0_2_)_:
Benyttes ved alle testforsøg til start/stop af programudførelse
samt lageropslag. TCP702 kan anvendes med/uden RESET-tråd, mærket
>R>. Nærmere beskrevet i appendix A samt appendix H.
\f
P_r_o_m_-_s_o_k_l_e_r_:
Ved alle testforsøg benyttes de under pkt. 2.3 beskrevne kredse.
Grundet pladsnød udføres test no. 3 og 5 p.t. på et kørende COMAL
system, hvorfor en system-prom skal anvendes.
M_C_:
MC-kredsen skal benyttes, når der anvendes system-prom-kredse.
MC-platform skal benyttes, når der anvendes test-prom-kredse.
N_B_!_ Såfremt TCP702 anvendes i non-DMA mode, udtages DMA-kredsen
samt IC-position 56.
I stedet isættes en DMA-strapplatform.
Dette er ikke angivet på fig. 2.4.
Figur 2.4
\f
3_._ _ _ _ _ _ _ _ _B_E_S_K_R_I_V_E_L_S_E_ _A_F_ _T_E_S_T_F_U_N_K_T_I_O_N_E_R_ _O_G_ _T_E_S_T_P_R_O_G_R_A_M_M_E_R_ 3.
I fig. 3 nedenfor er angivet, hvorledes de implementerede test-
programmer kan selekteres via SW1.
Testprogram udvælgelse
Figur 3 \f
Som det fremgår af fig. 2.4 samt fig. 3, der viser SW1 i forhold
hertil, er der benyttet omvendt fremstilling af
registerindholdet. Normalt vises mindst betydende bit til højre
(LSB), bitposition 0.
Til brug ved sammenligning med testprogram-udskriften, skal der
derfor refereres direkte til den heri angivne SW1-dekodningsta-
bel, se appendix C.
De enkelte testprogrammer startes fra teknikerpanelet efter SW1-
indstilling. Testprogrammet vil dernæst udføre en hel testsekvens
- en test pass - og hoppe retur til den fælles startdel efter en
udskrift (pass xxx) på skærmen. Såfremt SW1 er uændret, vil man
automatisk blive genstartet i samme test, der nu afsluttes med
udskriften >pass xxx + 1>. Således fortsættes.
Af ovenstående ses, at hver enkelt testrutine skal afbrydes manu-
elt. Der eksisterer imidlertid den mulighed at udnytte >all-
test>-faciliteten, hvorved fås en automatisk udførelse af de
enkelte tests n efter n som angivet i tabel 3.1. Denne test
repeteres som ovenfor omtalt i sin helhed.
Her og i det følgende er alle konstanter, referencer til lager-
celler og data m.m. angivet på hexadecimal form, hvis ikke andet
explicit er anført.
Tabel 3.1
\f
Alle testprogrammer vil i tilfælde af fejl angive fejlårsagen ud-
trykt ved en fejlkode lagret i celle 8003 (og angivet på tekni-
kerpanelets display), og skrive fejlkoden ud på skærmen. Dernæst
vil programmerne gå i en >halt,jmp-1>sekvens placeret i fælles-
delen (lokaliseret omkring 70). En liste over fejlkoder er an-
bragt i appendix B. De simple lager testprogrammer adskiller sig
på enkelte punkter fra ovenstående som beskrevet i kapitel 4.
Udover fejlkoden vil skærmen vise indholdet af de enkelte regi-
stre samt stak-toppen, som specificeret i figur 3.2. De enkelte
testprogrammer udnytter mere eller mindre visse lagerområder som
temporære arbejdsområder. Der henvises til appendix B. I appendix
C er angivet visse fælles hovedtræk for de enkelte programmer
samt en beskrivelse af et generelt programforløb.
Display-indhold ved fejl
Figur 3.2
\f
På grund af lagerpladsproblemer er ikke alle nævnte testprogram-
mer implementeret i denne udgave af test-systemet som anført
foran i fig. 3. De nævnte testprogrammer udføres derfor via en
almindelig COMAL-system-autoload med dels en efterfølgende ud-
skrift af en kildetekst eller afvikling af et print-program for
printertestens vedkommende; dels et efterfølgende kald af >TERM>-
programmet med indtastning via keyboard for terminal-testens
vedkommende. Hermed fås samtidig en system slut-test. De nødven-
dige udskiftninger af prom-kredse er beskrevet i afsnit 2.4.
Det bemærkes, at denne procedure ikke tester input delen af
printer-tilslutningen, hvilket kan være aktuelt ved visse line-
selector opkoblinger. Det hertil knyttede problem er omtalt i
appendix F.
\f
4_._ _ _ _ _ _ _ _ _I_M_P_L_E_M_E_N_T_E_R_E_D_E_ _T_E_S_T_P_R_O_G_R_A_M_M_E_R_ 4.
I det følgende er de enkelte testprogrammer behandlet dels på be-
skrivende form på tabel form med angivelse af de vigtigste data
for den enkelte test. Det bemærkes, at med undtagelse af den sim-
ple lager test, vil alle testprogrammer enable interrupt systemet
(mode 2) og behandle uvedkommende interrupts på linje med forven-
tede interrupts. Da testprogrammerne er sådan udformet, at inter-
rupt afventes via et interrupt flag i hovedrutinen, vil uvedkom-
mende interrupts ikke forstyrre det kørende testprogram, blot
sætte et flag, som der ikke testes på i det kørende testprogram.
Falske interrupts vil resultere i en system fejl med fejlindika-
tion, ligesom vedvarende interrupts jo klart >lægger> programmet
ned (skærmen >dør>, programafvikling standser).
En normal testprogram afvikling starter via PROM nr. 1, celle 0 i
disabled mode med kald af initialiserings rutiner for de enkelte
kredse (DMA, CRT, SIO, FL, CTC) samt interrupttabel og stak-ini-
tialisering. Disse rutiner udgør sammen med CRT dvs. skærm-ud-
skriftsrutinen indholdet af PROM nr. 2. Dernæst sker der udhop
til PROM nr. 1 igen og SW 1 testes. Herefter udvælges det enkelte
testprogram. I appendix C er de fælles rutiner beskrevet nærmere.
Som tidligere omtalt udfører de simple lager testprogrammer ikke
initialisering, og de afvikles i DI-mode. Ydermere initialiseres
FL-controlleren alene i forbindelse med afvikling af FL-testen.
Generelt gælder det, at anvendelse af teknikerpanelet forudsætter
en korrekt DMA funktion, idet DMA kanal 0 benyttes til RC702
lagertilgang. Dette problem kan dog afhjælpes gennem special op-
kobling uden DMA-kreds som omtalt i appendix H, hvorfor overvåg-
ning via teknikerpanel er mulig i forbindelse med afvikling af
den simple lager test, hvor DMA-kredsen ikke initialiseres. Tek-
nikerpanelet vil da ikke have indflydelse på testens afvikling.
Generelt ang. TCP702 skal blot nævnes, at error cellen 8003 er
fastlagt i mikroprogrammet. Enhver >HALT>-instruktion afvikling i
RC702 forårsager et interrupt (restart 7) til 8080-kredsen på\f
TCP702, hvorefter denne automatisk viser indholdet af celle 8003,
der nulstilles af alle testprogrammer ved opstart.
Endelig skal man ved anvendelse af de forskellige testprocedurer
vurdere, hvorvidt en gentaget test er nødvendig og i så fald,
hvor mange test-gennemløb (passes), der skal køres.
Til fejlfinding af statiske fejl er t gennemløb tilstrækkeligt.
Fejlfinding af dynamiske fejl kræver normalt flere gennemløb,
hvilket anbefales ved lagertest og diskette test.
De enkelte testprogrammer anvender fælles procedurer og vil der-
for benyttes fælles dataareal til f.eks. udskrivning af test-id,
testpass (aktuel gennemløb), fejlinformation, interruptgenken-
delse osv. som beskrevet i tabel 4 nedenfor.
Såfremt der til det enkelte testprogram er knyttet nogle bruger-
parametre, kan disse ikke defineres før start af testprogrammet,
da brugerdata vil blive overskrevet af default-værdien, se de
respektive testprogrammer.
I stedet venter man, indtil teksten >Test : test-id> vises på
skærmen, hvorefter programmet udfører >dummy> instruktioner i ca
5 sek., før teksten >pass> vises. I denne periode kan man standse
programafviklingen via TCP702 og herfra genskrive det ønskede
lagercelle-indhold.
Når et testgennemløb er fuldført og næste gennemløb afvikles,
ændres disse parametre ikke.
\f
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Adresse Init. værdi Fælles dataarealer, beskrivelse
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
66 Halt,retn System nonmaskable interrupt
adresse. System error A samt
(HALT, RETN).
2000-20 Def. Vektor interrupt tabel.
7800-7FFF Alle blanke Display buffer for CRT-control-
ler samt styreparametre hertil.
BFFF <- Udef. Stakpointer, vokser baglæns.
8040-48 0,..,0 Interrupt flag område
+ 0: reserveret
+ 1: flexible diskette
+ 2: Keyboard
+ 3: Parallel output
+ 4: SIO-interrupt
+ 5-8: Ubenyttet.
8003, 8024: 0,0 Fejlkode.
8025-2C: Def. Register-save:
H, L, D, E, B, C, SP(H), SP(L).
8020,8021: 0,3 Aktuel hhv. første ikke benyt-
tede testprogram nr. i
>All-test>.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Tabel 4 \f
4_._1_ _ _ _ _ _ _ _L_a_g_e_r_t_e_s_t_ 4.1
Lagertest proceduren adskiller sig markant fra de øvrige test-
programmer ved at udføre test af det lagerområde, som hele test-
programmet skal benytte. Lagertest proceduren bør derfor altid
startes som det første pkt. i en samlet testprocedure.
Når lagertest programmet startes, vil en systemfejl ikke nødven-
digvis sætte programmet i en korrekt fejlsitiation, såfremt
fejlen forhindrer normal ordre udførelse i test-prom delen, dvs.
i programmet selv. Dette fænomen vil naturligvis optræde i for-
bindelse med fejlagtig CPU-funktion, fejl i ordre - fetch -
cycle, forkert lager-timing o.l., hvorimod programmet er sikret
mod fejl grundet manglende refresh, overskrivning via fejlagtig
adressering af dataområde o.l.
Yderligere kan programmet køre i >disable mode> uden anvendelse
af perifere kredse som DMA- og CRT-controller, ligesom stak-meka-
nismen lades ubenyttet (her bør det tilkoblede teknikerpanel
ligeledes benyttes i mon-DMA mode, se appendix G). Denne funktion
benævnes i det følgende som modif 1, og testen omtales som en
simpel lagertest.
Den simple lagertest vil give normal fejlmeddelelse ved fejl og
således udføre en halt-instruktion.
Til brug ved fejlfinding af mere mystiske eller >hårde> fejl kan
man benytte en modifikation, der enten genstarter testprogrammet
ved fejlfinding eller konstant udfører test af den lagercelle,
hvor fejlen opstod. De mulige funktioner er resumeret nedenfor i
tabel 4.1.
\f
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
LAGER TEST
_ _ _S_W_1_ _m_o_d_i_f_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.xxxx x LAGER TEST (Modif 0)
.xxxx .x SIMPEL LAGER TEST (Modif 1):
.xxxx. x SIMPEL LAGER TEST (Modif 2): (Modif 1 med fejl genstart)
.xxxx..x SIMPEL MEMORY TEST (Modif 3): (Modif 1 med fejl-celle-løkke)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Tabel 4.1
Lager testprogrammets funktion er ens for de nævnte modificerende
test-programmer som anført nedenfor:
1) Lageret skrives igennem med datamønsteret:
lowaddress XOR highaddress XOR datamod og testes dernæst.
Init. værdi af datamod = 0.
2) Testen gentages for alle værdier af datamodifikator mellem 0
og 255.
4_._1_._1_ _ _ _ _ _L_a_g_e_r_t_e_s_t_,_ _m_o_d_i_f_ _0_ 4.1.1
Den normale lagertest har til formål primært at teste det an-
vendte RAM-lager. Det aktuelle lager segments indhold vises på
skærmen, hvorfor dennes funktioner samt DMA-kredsen samtidig
afprøves med samt interrupt systemet.
\f
Testen er derfor egnet til et go/non-go testforsøg på et netop
samlet system. Går denne test glat igennem, kan det centrale
system siges at være uden graverende fejl.
Fejler denne test >normalt>, dvs. testen stoppes med angivelse af
en fejlkode, aflæses fejladresse samt bitmønstre som beskrevet
nedenfor, og fejlen søges rettet, hvorefter testen gentages.
Såfremt testen forløber unormalt (sort skærm, ugyldig fejlkode
fremkommer som følge af et ukontrollabelt spring rundt i lage-
ret), må den simple lager test anvendes. Hvilken modifikation,
man her vil benytte, må afhænge af tilkoblet fejlsøgningsudstyr
og fejlens art, se nærmere under de følgende afsnit. Her skal kun
nævnes, at modifikation 1 indledningsvis bør benyttes. Viser den-
ne et fejlfrit testforløb, skal fejlen findes i forbindelse med
interruptsystemet, DMA-kredsløbet eller skærm-kontrolleren.
\f
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Intel AM Z80
8275 CRT 9517 DMA CTC TEST NR. 0
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Specifikationer for LAGER TEST (modif 0):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Formål: Lageraftestning, loc. 4000-77FF + 8000
-FFFF.
Forudsætninger: CPU, DMA, CTR samt Int. system fungerer,
herunder testes skærmbuffer Loc.
7800-7FFF.
Testtid: ca 2+4 min. med automatisk genstart.
Externe tilslutninger: TCP702 + skærmenhed, alle øvrige
forbindelser bør være afbrudte (mindsker
sandsynligheden for interrupt fejl).
Specielle bemærkninger: Anvendes som go/non-go test i 1. forsøg,
flere pass anbefales.
Testresultat: Hvis fejlfri, da lagerkontrol + CPU + DMA
+ CRT - funktion aftestet. Legitimerer
brug af teknikerpanel som hjælpeværktøj
(denne benytter DMA ch0, se dog 4.1.2)
Testdata: 8003: mulig fejlkode = 1
8000-1: tilhørende adresse
8002: forventet testmønster
8004: aflæst testmønster
Fejlstop: (Halt,jump-1)-løkke i IE-mode
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Tabel 4.1.1 \f
4_._1_._2_ _ _ _ _ _S_i_m_p_e_l_ _l_a_g_e_r_t_e_s_t_,_ _m_o_d_i_f_ _1_,_2_,_3_ 4.1.2
Som tidligere beskrevet forudsætter denne test alene en korrekt
ordreafvikling af programmet, dvs. korrekt CPU-funktion. Testen
kan overvåges fra TCP702 på normal vis (forudsætter dermed kor-
rekt DMA ch0 funktion), eller denne kan sættes i mon-memory mode
som beskrevet i appendix G (man kan da udføre korrekt >single-
step>- programafvikling).
Testen afsluttes med automatisk genstart i tilfælde af fejlfrit
gennemløb. Ved fejlafvikling udføres forskellige aktioner som
beskrevet nedenfor på tabelform. Testen har til formål at afprøve
system-kernen, dvs. CPU-kreds med tilhørende logik, samt at
afteste det anvendte RAM-lager.
\f
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Z80 Z80
CPU CTC TEST NR. 0
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Specifikationer for SIMPEL LAGER TEST (modif 1,2,3):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Formål: CPU-funktions afprøvning, lagertest af
lagerområde loc 4000 - 77FF + 8000 -
FFFF.
Forudsætninger: CPU-funktion OK, ellers udefineret
fejlmønster.
Externe tilslutninger: Ingen udover TCP702.
Specielle bemærkninger: Udføres disabled, udnytter ikke stak-fa-
ciliteten. Mest primitive testprogram.
Skal efterfølges af memory test, modif 0.
Testresultat: Hvis fejlfrit gennemløb, da vides den
basale CPU-funktion at være i orden.
Første check af RAM-lager udføres.
Legitimerer sand programafvikling for
lagertest, modif 0.
Testdata: 8003: mulig fejlkode = 1.
8000-1: tilhørende adresse
8002: forventet testmønster
8004: aflæst testmønster
Fejlstop: modif 1, (Halt,jump-1)- løkke i DI-mode
modif 2, Fejl-genstart i DI-mode
modif 3, Fejl-celle-løkke i DI-mode
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Tabel 4.1.2
\f
4_._2_ _ _ _ _ _ _ _P_a_r_a_l_l_e_l_ _o_u_t_/_k_e_y_b_o_a_r_d_ _i_n_ _t_e_s_t_ 4.2
Dette testprogram udføres normalt som første testprogram efter et
fejlfrit lager-test gennemløb. Det primære formål med programmet
er at afteste parallel out porten. Dette udføres ved i testpro-
grammet at generere en række karakter-værdier og sende disse en
efter en ud på porten. Keyboard indgangen testes dernæst for
samme tegnværdi, når interrupt fås herfra. Alle karakter-værdier
mellem 0 og 255 afprøves.
Ved afprøvningen skal >parallel out> samt >keyboard in> sammen-
kobles med et speicalkabel som nævnt i kapitel 2. Afprøvning af
keyboardkabel + keyboard sker i test no. 4, keyboard in/display
out testen.
\f
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Z80
_ _ _P_I_O_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _T_E_S_T_ _N_R_._ _1_ _ _ _
Specification for PARALLEL OUT/KEYBOARD IN TEST
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Formål: Parallel out/keyboard in - afprøvning.
Forudsætning: TEST 0 udført tilfredsstillende.
Externe tilslutninger: TCP 702, Display, kabel mellem J1004
(Keyboard) og J1003 (Parallel out)
Specielle bemærkninger: Ingen (normalt ingen fejl)
Testresultat: Afprøvning af Z80-PIO. Bemærk, at J1003
ikke anvendes med input. Imidlertid
testes Z80-PIO input mæssigt via keyboard
in-porten.
Testdata: 8003: mulig fejlkode = 2.
8000: tegn testet fra keyboard in
8002: tegn genereret på parallel out
Fejlstop: (Halt,jump-1)-løkke i EI-mode.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Tabel 4.2
4_._3_ _ _ _ _ _ _ _F_l_e_x_i_b_l_e_ _D_i_s_k_ _t_e_s_t_ 4.3
Med dette testprogram, som findes i flere varianter som beskrevet
i fig 4.3, aftestes enhver flexible disk konfiguration. De mulige
opstillinger og opkoblinger er omtalt i kapitel 2.
Generelt vil SW1(7) afgøre, hvorvidt en mini- eller maxi-diskette
er under test, idet denne switch hardwaremæssigt skelner mellem
et system af mini-drives (SW1(7):= 1) eller et system af maxi-
drives (SW1(7):= 0). Et maxi-drive tilkoblet med SW1(7)= 1 vil
derfor resultere i en fejlmelding, hvis testen startes.
\f
Såfremt blandede systemer anvendes, vil testprogrammet automatisk
selektere det korrekt tilkoblede drive, idet testen indlednings-
vis søger alle 4 units igennem, og tester status online samt WP
(writeprotected). I et dual-drive system vil man kunne få testet
drive 1, såfremt drive 0 sættes offline (ikke muligt med mini-
drives) eller der lægges en WP-diskette i diskettestationen
(mini/maxi).
De anvendte diskette typer er angivet i tabel 4.3. Bemærk, at
WP-proceduren for mini-disketter er modsat den på maxi-diskette
anvendte:
MINI: WP = hul tildækket.
MAXI: WP = hul frit.
Som antydet eksisterer der flere modifikationer af fl-test
programmet, se tabel 4.3
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
SW1-modif Flexible Disk Test
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
0 .xx . MAXI, formattering af en diskette
1 .xx MAXI, sekventiel write/read af en sector
2 .xx. MAXI, random write/read en sector ad gangen
3 .xx.. MAXI, random read af de resterende sectorer
på cylinderen.
0 .xx .. MINI, formattering af en diskette
1 .xx . MINI, sekventiel write/read en sector ad gangen
2 .xx. . MINI, random write/read en sector ad gangen
3 .xx... MINI, random read af de resterende sectorer
på cylinderen.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Tabel 4.3
\f
4_._3_._1_ _ _ _ _ _D_i_s_k_e_t_t_e_ _f_o_r_m_a_t_t_e_r_i_n_g_ 4.3.1
Formatterings-delen benytter lagercelle 800F til fastlæggelse af
det ønskede format. Såfremt denne indeholder værdien nul, anven-
des standart formatet som angivet således:
Maxi-diskette: Single density, single sided, 26
sector/track diskette med sectorlængde =
128.
(ækvivalent: 3M 740-0)
Mini-diskette: Single density, dual sided, 16
sector/track diskette med sectorlængde =
128.
(medium: MD 550-01).
Ønskes et andet format benyttet, skal følgende beskrivelse over-
holdes ved redefinition af celle 800F:
800F, brugerdiskette oplysninger:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
MSB LSB
_ _ _ Single/dual density (1:= dual)
_ _ _ _ _ _ Single/dual sided (1:= dual)
_ _ _ _ _ _ _ _ _ _ _ Sectorlength = 2UUnDD* 128,
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ MINI/MAXI-Select (1:= MINI)
Figur 4.3.1
Hvor s = antal sectorer pr. spor defineres ud fra de givne
variable som beskrevet i tabel 4.3.4.
\f
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
n Single/dual density S Sectorlength
_ _ _ _ _ _ _ _ _ _ _ _ _ _(_F_M_,_ _M_F_M_)_ _ _ _ _ _ _ _ _ _ _ _M_A_X_I_ _ _ _M_I_N_I_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
0 0 26 16 128
1 52 ./.
1 0 15 9 256
1 26 16
2 0 8 5 512
1 15 9
3 0 4 2 1024
1 8 5
4 0 ./. ./.
1
5 0 ./. ./.
1
6 0 ./. ./.
1
7 0 ./. ./.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _1_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Tabel 4.3.1
4_._3_._2_ _ _ _ _ _D_i_s_k_e_t_t_e_ _W_r_i_t_e_/_R_e_a_d_ 4.3.2
De enkelte testprocedurer udfører en skrivning af et testdata-
mønster ind på en sector med efterfølgende læsning af samme
sector for kontrol af data samt CRC. Disse rutiner forudsætter
brug af en preformatteret diskette, f.eks. direkte 3M 740-0 eller
lign. Mini-disketter leveres ikke preformatterede, hvorfor disse
må formatteres af testprogrammet.
Datamønstret, der skrives på en sector, beregnes således:
databyte:= (sector no.) XOR(spor no.)XOR(byteposition).
\f
Procedurerne forudsætter således, at enhver sector indeholder
noget fornuftigt under læsningen, hvorfor en skrivning må have
fundet sted. Dette sker automatisk ved kørsel af modif 1 og 2
testen, hvorimod modif 3 alene må anvendes på et allerede testet
system med en modif 1/2 - diskette monteret. Modif 3 anvendes
alene som et check på, om de givne data er holdbare over en læn-
gere periode, dvs. en tilstrækkelig effektiv skrivning har fundet
sted. Yderligere testes multisector/multitrack-faciliteten,
hvilket benyttes under system-autoload.
4_._3_._3_ _ _ _ _ _D_i_s_k_e_t_t_e_ _t_e_s_t_ _s_p_e_c_i_f_i_k_a_t_i_o_n_e_r_ 4.3.3
For at lette aftestning af den omfattende og komplekse diskette-
funktion, er programmet udstyret med en række forskellige fejl-
meldinger forsynet med hver sin fejlkode. Endvidere findes en
række statusinformationer gemt i lageret. Specifikationstabellen
er derfor omfattende og findes alene i en fælles udgave for
samtlige modificerede testprogrammer.
\f
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
NEC
_ _ _u_P_D_7_6_5_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _T_E_S_T_ _N_R_._ _2_ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _S_p_e_c_i_f_i_k_a_t_i_o_n_e_r_ _f_o_r_ _F_L_E_X_I_B_L_E_ _D_I_S_K_E_T_T_E_ _T_E_S_T_ _ _(_m_o_d_i_f_ _0_,_1_)_ _ _ _ _ _
Format: Test af mini og maxi diskette system.
Forudsætning: TEST 0 udført tilfredsstillende.
Externe tilslutninger: TCP 702, Display, Diskette-drive
tilsluttet som angivet i kapitel 2.
Specielle bemærkninger: Bør altid udføres med omhu. Bør testes
for dynamiske og temporære fejl. De be-
nyttede mini-drives vil altid returnere
status online uafhængigt af aktuel til-
stand, hvorfor testprogrammet ikke rea-
gerer på diskette skift. Controlleren
afventer ny diskette isat.
N_B_: Slå netspændingen til før mini-dis-
ketten lægges i, således at disketten
ikke ødelægges.
Modif 2,3 er ikke implementeret
Testresultat: Fuldstændig afprøvning af flexible
disk controller-kreds.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Tabel 4.3.3 (fortsættes)
\f
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Testdata: 8003: mulig fejlkode (se fejl liste
appendix A)
8002: main status reg fra controller
ved fejl under >command/status>
overførelse.
800B: FF hvis >command> under
udførelse, 7 hvis >get status>
under udførelse.
800F: Brugerdiskette variabel
8010-17: Controller-status ved afslutning
af >command>.
801C-D: >delay-counters> for hver
opstart og >get status>.
8030-: >Command-layout>.
803A-: Aktuel diskette def. blok
9000: Buffer for datalæsning fra FL.
A000: Buffer for dataskrivning til FL.
Fejlstop: (Halt,jump-1)løkke i EI-mode.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Tabel 4.3.3
\f
4_._4_ _ _ _ _ _ _ _P_r_i_n_t_e_r_ _t_e_s_t_ 4.4
Testprocedurerne er ikke implementeret, hvorfor alene en kort
beskrivelse gives af det anvendte V-24-hardware.
V24-kommunikation varetages af en 2-kanals SIO-kreds, kaldet
Z80-SIO, version 2. Kanal A anvendes til asynchron terminal kom-
munikation i >full duplex mode>, junction J1001 mærket terminal,
medens kanal B anvendes til asynchron printer kommunikation i
>full duplex mode>, junction J1002 mærket printer. Den gældende
bandrate er default 1200, og der anvendes 7 bits databytes med
lige paritet samt 2 stopbits.
Testen udføres som beskrevet i kapitel 3 under et COMAL-system.
4_._5_ _ _ _ _ _ _ _K_e_y_b_o_a_r_d_ _i_n_/_d_i_s_p_l_a_y_ _o_u_t_ _t_e_s_t_ 4.5
Dette testprogram viser på skærmen de karakterer, der indtastes
på keyboard. Idet ROM. nr 2 indeholder et komplet skærmdriver-
program, kan også specialkarakterer indtastes, se i øvrigt tabel
herfor i appendix C.
De såkaldte funktions-taster vil af testprogrammet blivet opfat-
tet som normalkarakter-taster med en fuld 8 bits kode.
Test af >semi-grafik> udføres ved indtastning af >semi-grafik>-
starttegnet efterfulgt af et normalt tegn, der herefter vises som
et semigrafisk-tegn. I øvrigt findes implementeret under
COMAL-systemet en række COMAL-programmer til aftestning af
semi-grafik.
Test-programmet har ikke tilkyttet nogen fejlkode, idet der ikke
fortages data-check. Hvis et keyboard-interrupt ikke fanges, vil
programmet blot vente på næste karakter. Keyboard-funktionstesten
vil derfor bestå i en visuel inspektion af skærmmønsteret.
\f
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Z80- Keyboard Karakter -
_ _ _P_1_0_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _r_o_m_._ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _T_E_S_T_ _N_R_._ _4_ _ _ _
_ _ _ _ _ _ _ _ _S_p_e_c_i_f_i_k_a_t_i_o_n_e_r_ _f_o_r_ _K_E_Y_B_O_A_R_D_ _I_N_/_D_I_S_P_L_A_Y_ _O_U_T_ _T_E_S_T_._ _ _ _ _ _ _ _ _ _ _ _ _ _
Formål: Test af Keyboard samt karakter rom.
Forudsætning: TEST 0 og TEST 1 udført tilfredsstil-
lende.
Externe tilslutninger: TCP702, Display, Keyboard.
Specielle bemærkninger: Kontrol-karakterer displayes ikke. Inten-
sitetsproblemer i inverteret mode. Cur-
sor rykkes op i >bunden> af tekstlinjen
i grafik mode.
Testresultat: Fuldstændig afprøvning af keyboard
funktioner. Kørsel af demo-program
anbefales, se appendix F.
Testdata: 8003: mulig fejlkode udefineret.
_ _ _F_e_j_l_s_t_o_p_:_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _I_k_k_e_ _d_e_f_i_n_e_r_e_t_._ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Tabel 4.5
4_._6_ _ _ _ _ _ _ _T_e_r_m_i_n_a_l_ _O_u_t_/_t_e_r_m_i_n_a_l_ _i_n_ _t_e_s_t_ 4.6
Testproceduren er ikke implementeret, og der henvises til afsnit
4.4 (printer-test).
\f
F_ 5_._ _ _ _ _ _ _ _ _E_N_ _F_U_L_D_S_T_Æ_N_D_I_G_ _S_Y_S_T_E_M_T_E_S_T_ 5.
Som allerede antydet inkluderer en fuldstændig systemtest
anvendelse såvel af testprogrammel som af systemprogrammel
(COMAL-system). Som beskrevet i kapitel 2 medfører dette bl.a.
udskiftning af test-promkredse med autoload-prom.
I det følgende listes på tabelform et skelet, der kan benyttes
til fastlæggelse af en testfremgangsmåde for udførelse af en
fuldstændig systemtest. Tabellen skal betragtes som vejledende,
og de angivne tider (antal gennemløb pr. test) skal tages med al-
le mulige forbehold.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Test nr. Fuldstændig systemtest
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
0 a) Memory test udføres, 2+4 min pr. pass
(6 min * 2) b) Hvis fejl da simpel memory test, 2+4 min. pr.
pass og herefter gentages a.
Hvis OK i mindst 2 gennemløb udføres test 1.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
1 Parallel out/keyboard in test udføres, under 1
sek. pr. pass.
(ca. 0 min)
Ved fejl gentages 1, ellers udføres test 2
efter mindst 2 gennemløb.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2 Flexible disk test udføres med afprøvning af
såvel mini- som maxikonfigurationer, ca. 5-10
min. pr. pass.
(ca. 30 min)
Ved fejl gentages 2 evt. 0, ellers udføres test 3
efter mindst 2 gennemløb.
Det anbefales at teste samtlige mulige konfigu-
rationer som nævnt i kapitel 2.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Tabel 5 (fortsættes)
\f
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Ønskes testtiden nedbragt kan den enkelte test
afbrydes undervejs, såfremt blot 1 mini- samt 1
maxitest fuldføres.
Estimeret tidsforbrug: Fuld test = 2 timer
Reduceret test = 1/2
time.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
3 Printer test udføres efter system autoload
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
4 Keyboard in/display out test, ca. 5 min pr.
pass.
(ca. 5 min)
Hvis fejl gentages 4, i modsat fald udføres
test 5 efter et gennemløb.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
5 Terminal out/terminal in test udføres efter
system autoload.
X1 De ikke implementerede testprogrammer erstattes
af systemprint henholdvis terminal-kommunika-
tions programmerne på COMAL-systemdisketten, se
appendix F.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
X2 Der findes endnu ikke udarbejdet retningslinier
for line-selector testen, der imidlertid vurde-
res at kunne foretages isoleret, uafhængigt af
systemtesten iøvrigt.
X1 testen forudsættes udført.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Tabel 5
\f
6_._ _ _ _ _ _ _ _ _K_O_N_K_L_U_S_I_O_N_ 6.
De beskrevne testprogrammer danner et totalt testsystem. På trods
af de mangler og uhensigtsmæssigheder, som måtte være indbygget,
vil et testet produkt erfaringsmæssigt sjældent være fejlbehæf-
tet. De kendte rapporterede fejl på allerede producerede syste-
mer, har alle kunnet karakteriseres som >ældningsfejl>.
Derimod synes testsystemet ikke at være det rigtige til hurtig
fejlfinding. Alle statiske fejl konstateres hurtigt, men der er
ikke tilstrækkelige oplysninger ang. hvor, hvad og hvordan.
Hertil må benyttes et mere hardwareorinteret testsystem, som i
øjeblikket overvejes indført i produktionen (lokalisering af
overskårne printbane, kortsluttede baner, kolde lodninger m.m).
Endvidere vil en funktionstest være værdifuld.
Indføres disse testforanstaltninger, vil de her beskrevne test-
programmer på glimrende vis kunne benyttes til sluttest. Udvik-
ling af fælles testprogrammer til RC700 samt RC850 må derfor an-
befales på det niveau, som er angivet her, herunder specielt ud-
vikling af et fælles rammesystem for operatørprocedurer og tek-
niker-panel.
\f
A_._ _ _ _ _ _ _ _ _R_E_F_E_R_E_N_C_E_R_ A.
1 RC701/751 Microdatamat System, Brugsanvisning.
2 RCSL No 42-i 1339: RC700 COMAL, Brugermanual.
3 Som 1, blot ang. RC702.
4 Programlistninger.
5 UDV-ADM.SM.228, Test på kort sigt, mødereferat.
6 LIS701, V24 line selector
7 TCP702, Programmer>s Reference Manual.
8 Hardw. portnumre, RC701/RC702.
1 + 2 fås hos NIA, Bal.
3 endnu ikke officiel (NT, Bal.).
4 + 5 fås hos KDH, Bal.
6 fås hos PKA, Bal.
7 fås hos MVP, Bal.
8 fås hos KDH, Bal.
\f
B_._ _ _ _ _ _ _ _ _F_E_J_L_K_O_D_E_T_A_B_E_L_ _O_G_ _F_Æ_L_L_E_S_ _A_R_B_E_J_D_S_O_M_R_Å_D_E_ B.
\f
F_C_._ _ _ _ _ _ _ _ _O_V_E_R_O_R_D_N_E_T_ _S_T_R_U_K_T_U_R_ _O_G_ _F_Æ_L_L_E_S_ _R_U_T_I_N_E_R_ C.
Testprogramsystemet er groft skitseret inddelt i 3 uafhængige
dele bestående af:
1) Initialiseringsdel for de enkelte >controller>-kredse.
2) Display-rutine (for rulleskærm)
3) Testprogrammer.
Som tidligere nævnt indeholder PROM1 testprogrammer, medens PROM2
indeholder initialisering og display-rutine. Der findes ud over
udskriftsrutiner til brug under >start testprogram>, >repetr
testprogram> og >udskriv fejlinformation> ingen operatør-kommuni-
kations-rutiner. På den baggrund synes display-rutinen at være
delvis overdimensioneret. Imidlertid benyttes det fulde display-
program under udførelsen af >Keyboard in/display out testen>.
De implementerede testprogrammer har herudover fælles interrupt-
system (interrupt erkendes ved brug af interrupt-flag) via en
interrupt-vektor-tabel anbragt i initialiseringsdelen. Interrupt-
service udføres altid i DI-mode og afsluttet med sekvensen >EI,
RETI>.
Display-rutinen kaldes via en >CALL CDISP> - instruktion med den
aktuelle karakter i reg. A, medens udskriftrutinerne kaldes via
en >CALL UPPA1> - instruktion med testprogram-nummer i reg. A i
tilfældet >start program>, en >CALL UPPAS>- instruktion i til-
fældet >afslut pass> (=>repetr testprogram>).
\f
F_ D_._ _ _ _ _ _ _ _ _R_C_7_0_1_ _S_Y_S_T_E_M_T_E_S_T_ D.
De ændringer som testprogrammerne har undergået fra RC701-udgaven
til RC702-udgaven er kort beskrevet her. Når undtages disse kon-
krete forskelle, kan denne manual benyttes som brugervejledning
for RC701-testsystemet.
Testprom no. 1: type I 2716, id _ _R_O_A_3_7_6_ _ _ _
Testprom no. 2: type I 2716, id _ _R_O_A_3_7_7_ _ _ _
Systemprom no. 1: type I 2716. id _ _R_O_A_1_9_5_ _ _ _
Indledningvis bemærkes, at den generelle struktur af testprogram-
systemet er bibeholdt fra RC701-udgaven. Der er følgende afvigel-
ser:
1) SW0-switch til forudindstilling af SIO-A/B baudrate
(transmissions hastighed) er ikke medtaget på RC702, hvorfor
denne nu sættes fra testprogrammet til default 1200 bps.
2) PÅ RC702 anvendes en bedre og højere neddelings >clock-fre-
kvens> for generering af SIO-A/B transmissions-clock-signa-
let, hvorfor initialiseringsdelen af >CTC> samt >SIO>-kred-
sene er ændret.
3) På RC702 er indført en betydning af SW1(1B7) som MINI/MAXI-
drive indikator i testprogrammet for diskettesystemet, idet
SW1(1B7) hardwaremæssigt direkte sætter diskette controlleren
i MINI/MAXI-mode.
4) SW1-switchen dekodes fra højre (mindst betydende bit) i
RC701.
5) På RC702 er skærmcontroller-initialiseringen ændret grundet
>semi-grafik>.
6) De ændrede HW-portnumre, se ref. 8.
\f
F_ E_._ _ _ _ _ _ _ _ _L_I_N_E_S_E_L_E_C_T_O_R_ _T_E_S_T_ E.
Ikke beskrevet, ikke implementeret.
\f
F_ F_._ _ _ _ _ _ _ _ _R_C_7_0_2_ _S_Y_S_T_E_M_D_I_S_K_E_T_T_E_ _T_E_S_T_ F.
En RC702-systemdiskette indsættes i minidriveenheden, en auto-
loadprom monteres og reset knappen aktiveres. Seneste revision af
systemdisketten betegnes 1.12. Denne diskette indeholde følgende
COMAL-programmer, der tænkes anvendt til printer, terminal og
semi-grafik test:
GRAFIK tillader korrekt semi-grafisk display af de
enkelte tegn. (cursor hævet)
SMDEMO3 benytter de grafiske tegn såvel som de indbyggede
CTR-funktioner dvs. blink, >reverse video>,
understregning osv.
TPRINT tester printertilslutning.
De enkelte programmer indlæses til lager og kræver ikke operatør
indgreb.
Terminaltilslutningen testes via kald af system-proceduren >TERM>
(der tastes >BYE> til COMAL). Herunder indtastes fra keyboard
tegn, som med special-afslutningen hængende på terminaludgangen,
vil blive vist på skærmen.
Alternativt kan man tilslutte sig et modem og således under
normale forhold afteste terminal-funktionen.
Autoload af et COMAL-system og anvendelse af de enkelte system-
ordrer er beskrevet i ref. 1, der stadig er gyldig. Ref. 3 skal
benyttes, såfremt detaljeret information ang. f.eks. Keyboard-
funktionen er påkrævet.
COMAL-programmeringssproget er beskrevet i ref. 2.
\f
F_ G_._ _ _ _ _ _ _ _ _T_E_K_N_I_K_E_R_P_A_N_E_L_,_ _T_C_P_7_0_2_ G.
Der henvises til ref. 7, hvorfra der kort resumeres nedenstående
tilkoblings/initialiserings-procedure. Endvidere er der enkelte
funktionstaster beskrevet.
Teknikerpanelet tilkobles via et printkort-stik som angivet i
afsnit 2.4. Netspænding tilsluttes og >RESET>-tasten aktiveres.
Herefter indsættes værdien 0 hhv. 1 i lagercelle 2009 svarende
til ikke DMA/DMA lagertilgang på RC702, hvorefter TCP702-program-
met startes op i celle 1000. Nu sendes et RC702-reset-signal, og
der tastes C for continue. Proceduren er angivet i tabel G.1.
FUNKTIONS- DATA
TASTER TASTER
RESET
SUB (memory) 2009
NEXT (data) 0/1
EXEC
GO (udfør) 1000
EXEC
9 (RC702 reset)
C (fortsæt)
Tabel G.1
\f
I tabel G.2 er angivet de vigtigste funktionstaster samt udførel-
se af en lagercelle-inspektion/modifikation.
data2
SUB data1 NEXT NEXT/NEXT ... EXEC:
Opslag i den lager-
celle, der addresseres
via >data1>.
Indlæsning af >data2>
eller opslag i næste celle.
Der fortsættes indtil
ordren afsluttes med >EXEC>.
C/D:
Fortsæt eller afbryd kørsel, >D> bør
altid aktiveres før en SUB... udføres.
Bemærk: D-tasten stopper også RC702>s
interrupt-system, hvorved RC702-skærm-
billedet forsvinder (>C> bringer det
frem igen).
9:
Reset-puls udsendes. Reset-tråd fra
TCP702 skal være forbundet til RC702.
F:
>Single-step>, dvs. ordre-afviklingen
følges trinvis med anslaget.
Tabel G.2
\f
H_._ _ _ _ _ _ _ _ _P_R_O_G_R_A_M_-_L_I_S_T_N_I_N_G_ _I_ _U_D_D_R_A_G_ H.
0: DI, JMP MINIT
GTEST: DECODE SW1 AND JUMP TO TESTPROGRAM.
\f
WORD 1 2 3 4 5 6 7-8
_T_E_X_T_ _ _ _ _ _ _ _ _ _t_y_p_e_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
s-data 1 message 1
w-data 2 message 1
signal 4/5 2 m.buf. addr. m.buf. length m.priority semaphor No act.cor.No 3 hour 6
wait 8 wait _select wait _time - - - -
wait-exit 16/18 4 m.buf. addr. m.buf. length c.priority - - - -
cor _to _sem 64 corout.No undefined undefined - - 0 -
activate 128 - undefined undefined undefined 0 -
user 1024 5 0 0 0 0 act.cor.No 3 -
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
\f
i
T_A_B_L_E_ _O_F_ _C_O_N_T_E_N_T_S_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _P_A_G_E_
1. INTRODUCTION ........................................... 1
2. THE COROUTINE SYSTEM ................................... 2
2.1 The Central Logic Procedure Centralogic ........... 2
2.2 Standard Procedures ............................... 3
2.3 Standard Variables ................................ 5
2.4 Procedures in ALGOL Library ....................... 6
3. DATA STRUCTURES ........................................ 8
3.1 Semaphore Tables .................................. 8
3.1.1 User Semaphores ............................ 8
3.1.2 Central Logic Semaphores ................... 9
3.1.3 System Semaphores .......................... 9
3.2 Coroutine Description ............................. 9
3.3 Message Buffers ................................... 10
3.4 Reference Variable ................................ 10
4. CENTRA LOGIC ........................................... 13
4.1 Processing of 8000-messages ....................... 15
4.2 Conversion of 8000-answers into Messages .......... 15
4.3 Demand for Log Display ............................ 17
5. TEST FACILITIES IN THE COROUTINE SYSTEM ................ 18
6. PROCEDURE DESCRIPTION .................................. 19
6.1 User Procedures ................................... 19
6.1.1 Allocate ................................... 19
6.1.2 Coroutines ................................. 20
6.1.3 Initref .................................... 20
6.1.4 Set Priority ............................... 21
6.1.5 Signal ..................................... 21
6.1.6 Wait ....................................... 23
6.1.7 Wait _select ................................ 24
6.1.8 Wait _time .................................. 26
6.2 Test Procedures ................................... 27
6.2.1 Prepare _test ............................... 27
6.2.2 Select _test ................................ 28 \f
ii
T_A_B_L_E_ _O_F_ _C_O_N_T_E_N_T_S_ _(_c_o_n_t_i_n_u_e_d_)_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _P_A_G_E_
6.3 Auxiliary Central Logic Procedures ................ 28
6.3.1 Co _8000 _event .............................. 29
6.3.2 Co _own _base ................................ 29
6.3.3 Cor _to _sem ................................. 29
6.3.4 Co _time .................................... 30
6.3.5 Co _time _base ............................... 30
6.3.6 Schedule ................................... 30
A_P_P_E_N_D_I_C_E_S_:
A. REFERENCES ............................................. 33
B. INTERNAL TABLES ........................................ 34
B.1 The Own Core of the Coroutine System .............. 34
B.2 Chain Elements .................................... 35
B.3 Semaphore Table ................................... 35
B.4 The Coroutine Description Table ................... 36
B.5 Message Buffers ................................... 37
B.6 Procedures used to Display the Tables ............. 37
C. PROGRAM MODE ........................................... 41
D. TEST RECORDS ........................................... 42
E. ALARMS FROM THE COROUTINE SYSTEM ....................... 45
\f
F_ 1_._ _ _ _ _ _ _ _ _I_N_T_R_O_D_U_C_T_I_O_N_ 1.
This manual describes a coroutine system available to ALGOL8 pro-
grams.
The manual implies a knowledge of the activity concept of ALGOL8.
Various concepts from the RC8000 monitor are used in the descrip-
tion. To avoid confusion the prefix '8000' is used with these
concepts. For a more detailed description, plese see ref. 1 and
ref. 3.
Chapter 2 contains a brief description of the facilities made
available by the system.
Chapter 3 describes a special set of data structures used in the
system.
Chapter 4 describes a central logic procedure of the system.
Chapter 5 describes the test facilities of the system.
Chapter 6 describes the standard procedures and standard
variables of the system.
\f
F_ 2_._ _ _ _ _ _ _ _ _T_H_E_ _C_O_R_O_U_T_I_N_E_ _S_Y_S_T_E_M_ 2.
The system, which is based on message semaphores, is implemented
as a set of external procedures with the following facilities:
1. Coroutines scheduled by priority.
2. Time out on wait operations.
3. Messages communicated in order of priority.
4. Messages picked out according to message lock/key.
5. Full index control of messages and semaphores.
6. Easy programming:
a. pre-compiled modules, no source code copying,
b. readymade central logic, scheduling coroutines, communica-
ting messages,
c. separate compilation of coroutines.
7. Switch to dedicated central logic.
8. Creation of test records.
2_._1_ _ _ _ _ _ _ _T_h_e_ _C_e_n_t_r_a_l_ _L_o_g_i_c_ _P_r_o_c_e_d_u_r_e_ _C_e_n_t_r_a_l_o_g_i_c_ 2.1
The system has a standard procedure, centra _logic, which may be
used as central logic for schedulation of coroutines and commu-
nication of messages.
The procedure has the following facilities:
1. Start up of coroutines, queuing them up on proper start sema-
phores.
2. Restart of the highest priority coroutine ready to be started
\f
3. Scheduling coroutines de-activated by implicit passivate or
"stack busy" (virtual coroutines inhibited by a fellow corou-
tine waiting for some i/o operations to complete).
4. Queuing up 8000-messages on central logic semaphores where it
can be fetched by means of wait operations.
5. Queuing up messages on specified semaphores on the arrival of
certain 8000-answers to the event queue.
6. Time out on wait operations without CPU load.
7. Display of logging records, showing the operation flow and
time consumption.
8. Display of semaphore tables at termination.
2_._2_ _ _ _ _ _ _ _S_t_a_n_d_a_r_d_ _P_r_o_c_e_d_u_r_e_s_ 2.2
1_._ _P_r_o_c_e_d_u_r_e_s_ _f_o_r_ _S_y_s_t_e_m_ _I_n_i_t_i_a_l_i_z_a_t_i_o_n_
Name: Task:
coroutines make stack reservations for the
semaphore and coroutine description
tables and initialize the tables.
allocate make stack reservation for a mes-
sage buffer and initialize it.
initref initialize reference variables (see
section 3.4).
set _priority change the priority of calling
coroutine.
\f
2_._ _C_o_m_m_u_n_i_c_a_t_i_o_n_ _P_r_o_c_e_d_u_r_e_s_
Name: Task:
signal send a message (placed in a message
buffer) to a semaphore queue.
wait wait for a message in/fetch a mes-
sage from a semaphore queue.
3_._ _T_e_s_t_ _P_r_o_c_e_d_u_r_e_
Name: Task:
prepare _test create a user test record and
insert it among system test
records.
4_._ _A_u_x_i_l_i_a_r_y_ _P_r_o_c_e_d_u_r_e_s_
Name: Task:
schedule start the next coroutine.
cor _to _sem transfer a coroutine description to
a semaphore queue and insert it ac-
cording to its priority.
The auxiliary procedures are intended to facilitate the construc-
tion of alternative coroutine schedulers, replacing centra _logic.
\f
2_._3_ _ _ _ _ _ _ _S_t_a_n_d_a_r_d_ _V_a_r_i_a_b_l_e_s_ 2.3
1_._ _S_t_a_n_d_a_r_d_ _V_a_r_i_a_b_l_e_s_ _f_o_r_ _M_o_d_i_f_i_c_a_t_i_o_n_ _o_f_ _t_h_e_ _N_e_x_t_ _W_a_i_t_ _O_p_e_r_a_t_i_o_n_
Name: Meaning:
wait _select if zero, the wait operation waits
for/fetches the first message in
the semaphore queue, no matter its
key. If not zero, wait _select is a
lock, and the wait operation waits
for/fetches the first message in
the semaphore queue with a key that
fits the lock.
Name: Meaning:
wait _time states the maximum waiting time
accepted by the coroutine executing
the wait operation.
If wait _time = 0 there is no limi-
tation to the waiting time.
If wait _time < 0 no waiting time is
accepted.
If wait _time > 0 wait _time contains
the maximum waiting time measured
in tenth of a second.
The contents of these variables are stored in the calling corou-
tine description each time wait is called and they are reset to
zero.
\f
2_._ _S_t_a_n_d_a_r_d_ _V_a_r_i_a_b_l_e_ _f_o_r_ _S_p_e_c_i_f_i_c_a_t_i_o_n_ _o_f_ _T_e_s_t_ _R_e_c_o_r_d_s_
Name: Meaning:
select _test contains the test numbers wanted as
a bit pattern.
3_._ _S_t_a_n_d_a_r_d_ _V_a_r_i_a_b_l_e_s_ _U_s_e_d_ _b_y_ _T_h_e_ _C_e_n_t_r_a_l_ _L_o_g_i_c_
Name: Meaning:
co _time _base 8000-clock-time at the last test
for timeout. Basis for time indi-
cation in the coroutine system.
Must not be changed!
co _time the time until the next possible
timeout measured in tenth of a
second from co _time _base.
co _8000 _event the number of unprocessed 8000-
events found in the latest scan of
the 8000-event queue.
co _own _base the address of the first own vari-
able in the coroutine system.
Must not be changed.
2_._4_ _ _ _ _ _ _ _P_r_o_c_e_d_u_r_e_s_ _i_n_ _A_L_G_O_L_ _L_i_b_r_a_r_y_ 2.4
The following ALGOL library procedures are used by the system and
the users of the system.
For a detailed description of the individual procedures, cf. ref.
1.
\f
Name: Function:
activity Used to create a number of empty
activity descriptors before calling
procedure coroutines.
new _activity Initiates an empty activity with a
procedure and starts the activity.
Must be called after procedure co-
routines and before any other co-
routine procedure.
activate Activates a non-empty activity in
its restart-point.
Used by procedure schedule. Must
not be used in coroutines scheduled
by this procedure.
passivate De-activates the executing activ-
ity, establishing its restart point
(waiting point).
Used in procedure wait.
May be used in the coroutines, but
does not change the location in any
semaphore queue of executing corou-
tine.
\f
F_ 3_._ _ _ _ _ _ _ _ _D_A_T_A_ _S_T_R_U_C_T_U_R_E_S_ 3.
The system introduces 3 data structures and a new type of vari-
able in connection with the coroutine system.
The data structures are:
a) A semaphore table containing chain fields for all semaphores.
b) A coroutine description table containing information about the
priority of each coroutine, the maximum waiting time, what the
coroutine is waiting for and chain fields.
c) Message buffers each consisting of a head and a data part. The
head contains priority, length and chain fields.
The new type of variable is a reference type used to refer to the
messages.
3_._1_ _ _ _ _ _ _ _S_e_m_a_p_h_o_r_e_ _T_a_b_l_e_s_ 3.1
Semaphores in the system are always message semaphores. They are
identified by number.
There are 3 types of semaphores:
a) user semaphores numbered 1 to max-semaphore,
b) central logic semaphores numbered -5 to 0,
c) system semaphores numbered -9 to -6.
The semaphore description consists of 8 halfwords per semaphore.
3_._1_._1_ _ _ _ _ _U_s_e_r_ _S_e_m_a_p_h_o_r_e_s_ 3.1.1
The number of user semaphores is stated when the system is start-
ed up calling procedure coroutines. The semaphores are used for
signal and wait operations.
\f
3_._1_._2_ _ _ _ _ _C_e_n_t_r_a_l_ _L_o_g_i_c_ _S_e_m_a_p_h_o_r_e_s_ 3.1.2
These semaphores, defined by the central logic, are used in con-
nection with the facilities made available by the central logic.
The semaphores can be used by means of procedures cor _to _sem,
signal and wait.
3_._1_._3_ _ _ _ _ _S_y_s_t_e_m_ _S_e_m_a_p_h_o_r_e_s_ 3.1.3
System semaphores are used by the coroutine procedures.
The system semaphores are:
No: Name: Semaphore queue contains:
-9 ready semaphore coroutines ready to be activated.
-8 implicit passivate coroutines implicitly passivated.
semaphore
-7 not used.
-6 free semaphore coroutines not used at present.
3_._2_ _ _ _ _ _ _ _C_o_r_o_u_t_i_n_e_ _D_e_s_c_r_i_p_t_i_o_n_ 3.2
The procedure coroutines will create a coroutine description for
each coroutine. The description consists of 16 halfwords per co-
routine. It must not be confused with the activity description
created by procedure activity, consisting of 20 halfwords per ac-
tivity.
Apart from chain fields, the coroutine description contains co-
routine priority, maximum waiting time accepted and a "message
lock", which is the value of wait _select the last time procedure
wait was called by the coroutine.
\f
The coroutine description will always be queued up on a semaphore
in order of priority. When the system is started up, all corou-
tine descriptions are queued up on the free semaphore.
3_._3_ _ _ _ _ _ _ _M_e_s_s_a_g_e_ _B_u_f_f_e_r_s_ 3.3
Communication between coroutines takes place by means of messages
placed in message buffers. These buffers are allocated in the
stack by means of procedure allocate.
Apart from the data part, a message buffer contains a protected
head with chain fields, the length of the data part and the pri-
ority of the message buffer.
A message buffer occupies 8 halfwords + the length of the data
part, which must be at least 6 halfwords.
The system considers the first two words of the data part to be a
message key. If "the message lock" in a coroutine description
queued up on a sempahore is not zero, it will be compared with
the key words in all message buffers arriving at the semaphore,
and only if the key fits will the message be transferred to the
coroutine.
In this way several pairs of coroutines can communicate messages
via the same semaphore, or two coroutines can communicate differ-
ent types of messages.
3_._4_ _ _ _ _ _ _ _R_e_f_e_r_e_n_c_e_ _V_a_r_i_a_b_l_e_ 3.4
A new type of variable, a reference variable, is used to refer to
messages in the message buffers.
A reference variable can be regarded as an array, whose length
and location in the stack changes according to the state of the
variable.
\f
The state can be one of the following:
'array' The reference variable refers to a
message buffer.
In this state the reference varia-
ble functions as an array contain-
ing the message.
The array has the same length as
the data part of the message buffer
and has lower index = 1.
Fielding and indexing are made in
the same way as with a normal
array.
The type of array equals the type
declared for the reference vari-
able, i.e. boolean, integer, real
or long.
'nil' The reference variable does not
refer to a message buffer, and it
has the length 0.
Fielding and indexing in this state
will cause a field/index alarm.
Reference variables are declared in the following way:
M_m_m_ 1
P_p_p_ boolean
M_m_m_ integer *
array <name> (1:1) ,<name> (1:1) ;
P_p_p_ long 0
M_m_m_ real
P_p_p_ 0
\f
A reference variable m_u_s_t_ be initialized before being used. This
is done by calling the procedure:
initref (<name>);
and the state will be 'nil'.
N_o_t_e_:
1) The array bound (1:1) must be stated in the declaration for
e_a_c_h_ reference variable separately.
2) A parameter to an ALGOL procedure will be a reference variable
only if:
a) the parameter on the call side is an unfielded reference
variable,
b) the parameter is not fielded or indexed in the procedure
itself.
If fielding or indexing of a reference variable is necessary
in a procedure, this part of the procedure must be transformed
into one or more procedures called with the reference variable
as actual parameter.
3) At the end of the block in which a reference variable has been
declared, it should be in the 'nil' state, otherwise the
message buffer referred to will be lost.
\f
F_ 4_._ _ _ _ _ _ _ _ _C_E_N_T_R_A_ _L_O_G_I_C_ 4.
The procedure centra _logic may be used as central logic to sched-
ule coroutines and communicate messages. It does not return until
a corutine terminates, either via its final end or because of an
alarm.
The procedure can be called again.
C_a_l_l_: centra _logic (log);
centra _logic (return value, long). The result of the last
call of schedule.
log (call value, integer). Log is interpreted as a
bit pattern specifying the log records wanted.
(cf. section 4.3).
P_r_o_g_r_a_m_ _m_o_d_e_: At call, the program mode must be cor _monitor
(cf. appendix C).
Procedure centra _logic uses the central logic semaphores in the
following way:
No: Name: Use:
0 wait _message _pool (cf. section 4.1)
-1 wait _message (cf. section 4.1)
-2 wait _answer _pool (cf. section 4.2)
-3 delay may be used freely
-4 not used
-5 virtual _error cf. point 4 below
Procedure centra _logic performs the following functions:
1) Starts up coroutines queuing them up on the proper start sema-
phore. (This is due to the fact that the central logic does
not get the result from the call of new _activity).
2) Restarts the highest priority coroutine ready to be started.
(Procedure schedule selects the coroutine).
\f
3) Coroutines deactivated with an implicit passivate statement
are queued up on the implicit passivate semaphore. They are
restarted in order of priority when their 8000-answers are
found in the 8000-event queue.
4) Coroutines which cannot be restarted because of "stack busy"
(activate result -2) are queued up on the virtual _error sema-
phore. When the blocking coroutine later passivates explicit-
ly, the blocked coroutine will be queued up on the ready se-
maphore.
Note: There must be no call, explicitly or implicitly of pass-
ivate between 8000-send-message and 8000-wait-answer in vir-
tual coroutines. Consequenly virtual coroutines cannot send
8000-messages and receive 8000-answers, in multibuffered im-
plicit-passivate-zones.
5) resets wait _time and wait _select before each coroutine is ac-
tivated.
6) Communicates incoming 8000-messages (cf. section 4.1).
7) Communicates on request 8000-answers via messages sent to
specified semaphores (cf. section 4.2).
8) Generates timeout on 8000-answers (cf. Section 4.2).
9) If no coroutines are ready to be started, the 8000-event queue
is scanned for external events.
One event to be found is the answer from the 8000 clock pro-
cess to a delay operation sent by centra _logic itself with the
purpose of being timed out from the event queue to restart
timed-out coroutines.
10) Displays logging records showing operation flow and time
consumption.
\f
4_._1_ _ _ _ _ _ _ _P_r_o_c_e_s_s_i_n_g_ _o_f_ _8_0_0_0_-_m_e_s_s_a_g_e_s_ 4.1
The semaphores 0 and -1 are used in connection with communication
of 8000-messages.
If a coroutine wishes to receive an 8000-message there must be a
message queued up on the semaphore wait _message _pool.
When, scanning the event queue, an 8000-message is found,
centra _logic will examine whether there is a message queued up on
the wait _message _pool semaphore. If a message is found and a co-
routine is queued up on the wait _message semaphore waiting for
the 8000-message, the 8000-message buffer will be copied to the
message, which is signalled to the wait _message semaphore:
field addr.
+2 sender process description addr.
+4 receiver process description addr.
+6 8000-message buffer addr.
+8
M_ .
. 8000-message
P_ .
+22
If the message is less than 22 halfwords, only the part of 8000-
message for which there is room will be copied. If the message is
greater than 22 halfwords the rest of the message will be unde-
fined.
By means of wait _select it is possible for a coroutine to wait
for a message from a particular process or/and a particular
pseudo process.
4_._2_ _ _ _ _ _ _ _C_o_n_v_e_r_s_i_o_n_ _o_f_ _8_0_0_0_-_a_n_s_w_e_r_s_ _i_n_t_o_ _M_e_s_s_a_g_e_s_ 4.2
In connection with conversion of an 8000-answer into a message,
semaphore -2 (wait _answer _pool) is used.
\f
This facility can be used if:
1) A coroutine has to wait for one or more 8000-answers.
2) A coroutine has to wait for the first of either a message or
an 8000-answer.
3) A coroutine wishes to regret an 8000-message, if no 8000-an-
swer is received within a certain time (timeout).
4) A coroutine has sent an 8000-message via a global zone, and
another coroutine has to wait for the 8000-answer.
The facility is used in the following way:
When an 8000-message has been sent by means of monitor (16
<*send _message*>, ...) a message with the following format is
signalled to wait _answer _pool:
field addr.
+2 not used
+4 8000-message-buffer-address
+6 answer semaphore
Whenever procedure centra _logic finds an 8000-answer in the 8000-
event queue, it is examined whether a message with this 8000-mes-
sage-buffer-address is queued up on wait _answer _pool. If so, the
message is communicated to the semaphore stated in the 3rd word
of the message.
Procedure centra _logic does not change the message, which only
need to consist of 6 halfwords.
In case 3 where the coroutine does not wait for the 8000-answer,
the coroutine must withdraw its message from wait _answer _pool
before calling 8000-regret-message.
\f
4_._3_ _ _ _ _ _ _ _D_e_m_a_n_d_ _f_o_r_ _L_o_g_ _D_i_s_p_l_a_y_ 4.3
The log display wanted by procedure centra _logic is stated by the
parameter log. The log display is printed on current output.
The parameter log must contain the sum of the numbers of the
printouts wanted:
No Meaning
1 Various counters.
2 The semaphore table and associated records at normal
coroutine termination.
4 The semaphore table and associated records at coroutine
termination with alarm.
8 The semaphore table and associated records at start up.
\f
F_ 5_._ _ _ _ _ _ _ _ _T_E_S_T_ _F_A_C_I_L_I_T_I_E_S_ _I_N_ _T_H_E_ _C_O_R_O_U_T_I_N_E_ _S_Y_S_T_E_M_ 5.
The coroutine procedures contain a possibility of creation of
test records in a zone belonging to the coroutine system.
The zone, which must be declared and opened in the user program,
is the second parameter to the procedure coroutines. The creation
of test records is demanded by means of the standard integer
variable select _test. The different test record types have a num-
ber, which is a power of two and so select _test must have a value
corresponding to the sum of the numbers of the test record types
wanted.
The following test record types exist:
1: the first part of message at call of procedure signal
2: the first part of message at return from procedure wait
4: call of procedure signal
8: call of procedure wait
16: return from procedure wait
32: not used
64: transfer of coroutine to another semaphore queue
128: start up of coroutine
The system contains a procedure prepare _test, which creates a
test record containing test type (= 1024), coroutine number, the
hour and zeroes in the remaining fields.
When prepare _test has been called, the test record is the current
zone _record and may be changed freely.
\f
F_ 6_._ _ _ _ _ _ _ _ _P_R_O_C_E_D_U_R_E_ _D_E_S_C_R_I_P_T_I_O_N_ 6.
The following procedure description, which describes standard
procedures as well as standard variables, is divided into 3
sections: user procedures, test procedures and central logic
procedures.
6_._1_ _ _ _ _ _ _ _U_s_e_r_ _P_r_o_c_e_d_u_r_e_s_ 6.1
6_._1_._1_ _ _ _ _ _A_l_l_o_c_a_t_e_ 6.1.1
This standard procedure is used to allocate stack space for a
message buffer, initialize it with priority and a message, which
in the second word contains the message buffer length and other-
wise is zerofilled. This message is signalled to the semaphore.
The procedure must be called after the procedure coroutines and
at the same block level.
C_a_l_l_: allocate (sem, message _size, prio);
sem (call value, integer). The number of the se-
maphore to which the message is to be signal-
led.
0 <= sem <= max _semaphore.
message _size (call value, integer). The length in half-
words of the message buffer to be reserved.
6 <= message _size.
prio (call value, integer). The priority to be
assigned to the message buffer.
-2048 <= prio <= 2047.
(2047 is the highest priority).
P_r_o_g_r_a_m_ _m_o_d_e_: The program mode must be cor _monitor.
\f
6_._1_._2_ _ _ _ _ _C_o_r_o_u_t_i_n_e_s_ 6.1.2
This standard procedure is used to allocate stack space for se-
maphore and coroutine descriptions. The coroutine descriptions
are queued up on the free semaphore with the priority 0.
The procedure activity must be called before procedure coroutines
and at the same block level.
Procedure coroutines must be called before procedure new _activity
and before all other coroutine procedures.
C_a_l_l_: coroutines (max _semaphore, test _zone)
max _semaphore (call value, integer). The number of user
semaphores. These semaphores are numbered
from 1 to max _semaphore.
test _zone (call value, zone). The zone in which test
records are created. The zone must be open
and ready for record output when the creation
of test records is enabled (cf. prepare _test
and select _test).
P_r_o_g_r_a_m_ _m_o_d_e_: At call the program mode must be act _monitor,
at return it will be cor _monitor.
6_._1_._3_ _ _ _ _ _I_n_i_t_r_e_f_ 6.1.3
This standard procedure is used to initialize a reference vari-
able.
C_a_l_l_: initref (ref);
ref (call and return value, boolean array, inte-
ger array, long array or real array). The ar-
ray to be transformed into a reference vari-
able. At return the state of the reference
variable will be 'nil'.
\f
P_r_o_g_r_a_m_ _m_o_d_e_: The program mode must be one of the
cor _modes (cf. appendix C).
The array ref m_u_s_t_ be declared in the following way:
M_m_m_ 1
P_p_p_ boolean
M_m_m_ integer *
array <name> (1:1) ,<name> (1:1) ;
P_p_p_ real 0
M_m_m_ long
P_p_p_ 0
6_._1_._4_ _ _ _ _ _S_e_t_ _P_r_i_o_r_i_t_y_ 6.1.4
This standard procedure changes the priority of a coroutine. When
the change has been made, the coroutine is queued up on the ready
semaphore in order of its new priority and is passivated.
C_a_l_l_: set _priority (prio);
prio (call value, integer). The new priority.
-2048 <= prio <= 2047.
(2047 is the highest priority).
P_r_o_g_r_a_m_ _m_o_d_e_: The program mode must be cor _activity.
As the procedure queues up the coroutine on the ready semaphore
after all coroutines with the same or higher priority, the call:
set _priority (act _prio);
act _prio being the priority of the coroutine, will queue up the
coroutine behind all coroutines with the same priority.
6_._1_._5_ _ _ _ _ _S_i_g_n_a_l_ 6.1.5
This boolean standard procedure signals a message to a semaphore.
\f
C_a_l_l_: signal (sem, ref);
signal (return value, boolean). True if the message
key fits the lock of a waiting coroutine
(i.e. a coroutine is transferred to the ready
semaphore, queue), false otherwise.
sem (call value, integer). The number of the
semaphore to which the referenced message is
signalled.
-5 <= sem <= max _semaphore.
ref (call and return value, reference variable).
ref is a reference variable which refers to
the message. At call the state of ref must be
'array', at return the state is 'nil'.
F_u_n_c_t_i_o_n_:
Procedure signal proceeds in the following steps:
1) If one or more coroutines are queued up on the specified
semaphore, they are examined, in order of priority, to have a
message lock in their coroutine description to which the
message key fits. (see subsection 6.1.7).
2) If a coroutine is found, the message buffer address will be
inserted in the coroutine description, and the coroutine is
queued up on the ready semaphore in order of priority.
3) If no coroutine is found, the message is queued up on the
semaphore message queue in order of priority.
4) The procedure returns.
P_r_o_g_r_a_m_ _m_o_d_e_: The program mode must be one of the cor _modes (cf.
appendix C).
Even if the procedure transfers a coroutine with a higher prior-
ity than that of calling coroutine to the ready semaphore, the
procedure will not de-activate calling coroutine.
\f
6_._1_._6_ _ _ _ _ _W_a_i_t_ 6.1.6
This integer standard procedure waits for a message at a sema-
phore.
C_a_l_l_: wait (sem, ref);
wait (return value, integer).
= 0: timeout, no message received
> 0: length in halfwords of the data part of
message received (the data part is al-
ways greater than five halfwords).
sem (call value, integer). The number of the
semaphore where to wait for the message.
-5 <= sem <= max _semaphore.
ref (call and return value, reference variable).
At call, the state of ref must be 'nil'.
At return the state of ref is 'array' and the
value of ref will refer to the message re-
ceived, if one is received.
F_u_n_c_t_i_o_n_:
Procedure wait proceeds in the following steps:
1) Current values of the standard variables wait _select and
wait _time are inserted in the coroutine description.
2) If one or more messages are queued up on the semaphore spec-
ified, they are examined, in order of priority, to have a mes-
sage key that fits the message lock stored in the coroutine
description (cf. subsection 6.1.7).
If more messages of the same priority are found, the one which
has been queued up for the longest time is taken.
3. If program mode is cor _monitor or cor _disable, or if wait _time
< 0, the procedure proceeds at point 7. with message found or
timeout if no message was found.
\f
4. If no message was found, the coroutine is queued up on the
semaphore specified.
If a message was found the coroutine stays in the ready sema-
phore queue.
5. The procedure examines whether there is timeout for any of the
other coroutines in the system or, if any higher priority co-
routine is implicitly passivated, whether there is an 8000-
answer for any of the implicitly passivated coroutines. If so,
they are queued up on the ready semaphore in order of prior-
ity.
6. If a message was found, and calling coroutine is the first in
the ready semaphore queue, the procedure proceeds at 7., else
the coroutine is passivated.
7. This is a re-start point with a delay in case the message
waited for is received or in case of timeout. It is the con-
tinue point with no delay, whether or not a message is receiv-
ed in case the procedure is called in cor _disable or
cor _monitor mode or if the coroutine will accept no delay.
If a message is received, the reference variable specified is
changed to refer it, and its state is changed to 'array'.
8. If a message is received, wait returns with the length of the
datapart, else with the value 0.
P_r_o_g_r_a_m_ _m_o_d_e_: The program mode must be cor _modes (cf. appendix
C).
M_M_m_m_ 6.1.7 Wait _select 6.1.7
P_P_p_p_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
This long standard variable affects the progress of the next
wait.
\f
Procedure wait starts by inserting the value as a message lock in
the coroutine description, whereupon wait _select is zeroed.
A coroutine must not passivate, explicitly or implicitly, between
an assignment to wait _select and a call of wait, because
wait _select is zeroed by procedure centra _logic.
A reactivated coroutine will always find wait _select = 0.
The value wait _select is inserted as a message lock in the co-
routine description, which must be fitted by a message key found
in the first two words of a message.
The lock/key comparison made by procedure wait as well as by pro-
cedure signal both use the value of wait _select inserted in the
coroutine description by procedure wait.
Two integer arrays, message _key and message _lock, containing the
first two words of the message as a message key and the message
lock from the coroutine description respectively, are used in the
comparison algorithm.
The comparison is made according to the following algorithm:
accept:= true;
for i:= 1,2 do
if message _lock(i) <> 0 then
begin
if message _lock(i) > 0 then
begin
if message _lock(i) <> message _key(i) then accept:= false
end else
begin <* message _lock(i) < 0 *>
if logand (message _lock(i), message _key(i)) = 0 then
accept:= false
end
end;
If accept is still true, the message key fits the lock.
\f
M_M_m_m_6.1.8 Wait _time 6.1.8
P_P_p_p_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
This integer standard variable affects the progress of the next
wait.
Procedure wait starts by inserting the value as maximal delay
accepted in the coroutine description, whereupon wait _time is
zeroed.
A coroutine must not be passivated, explicitly or implicitly,
between an assignment to wait _time and a call of wait because
wait _time is zeroed by procedure centra _logic.
A re-activated coroutine will always find wait _time = 0.
The value of wait _time is inserted as maximal delay accepted
waiting for a message.
wait _time > 0: the maximum waiting time accepted in tenth of se-
conds. If no message is received within this per-
iod of time, procedure wait returns without a mes-
sage.
wait _time = 0: no limits to the waiting time.
wait _time < 0: procedure wait accepts no delay and returns at
once.
If a message is received it is returned, else wait
returns without a message. The coroutine is not
passivated even if higher priority coroutines are
queued up on the ready semaphore.
\f
E_x_a_m_p_l_e_ _1_:
Coroutine that prints out the time every 5 minutes.
procedure write _time (z);
zone z;
begin
real time;
integer delay _sem;
integer array dummy (1:1);
initref (dummy);
delay _sem:= -3;
repeat
systime (5, 0.0, time);
write (z, <:<'nl'>time:>, <<dd dd>, (entier time)//100);
setposition(z,0,0);
wait _time:= 5 * 60 / 0.1024; <* 5 min *>
wait(delay _sem, dummy);
until false
end;
6_._2_ _ _ _ _ _ _ _T_e_s_t_ _P_r_o_c_e_d_u_r_e_s_ 6.2
M_M_m_m_6.2.1 Prepare _test 6.2.1
P_P_p_p_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
This standard procedure creates a test record in the test zone
buffer. The test record, which consists of 16 halfwords, is
created by means of outrec6.
The record is initialized with test type, current coroutine and
hour, cf. appendix D.
After return from the procedure, further specification may be in-
serted in the test record, which is available in the test zone
buffer.
C_a_l_l_: prepare _test
\f
At call the zone state for the test zone (2nd parameter in the
call of procedure coroutines) must be 0 or 6 (ready for record
output).
M_M_m_m_6.2.2 Select _test 6.2.2
P_P_p_p_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
This integer standard variable selects the test records to be
created. The value of the variable can be changed dynamically
during program execution if only the test zone is open and ready
for record output (zone state 0 or 6), before select _test is
given a value different from 0.
Standard procedure coroutines zeroes select _test.
The value of select _test must be the sum of the numbers of the
test record types wanted:
Test record type Meaning
1 Message buffer at call of procedure signal
2 Message buffer at return from procedure wait
4 Call of procedure signal
8 Call of procedure wait
16 Return from procedure wait
64 Transfer of coroutine to another semaphore
queue
128 Start up of coroutine.
6_._3_ _ _ _ _ _ _ _A_u_x_i_l_i_a_r_y_ _C_e_n_t_r_a_l_ _L_o_g_i_c_ _P_r_o_c_e_d_u_r_e_s_ 6.3
These standard procedures and standard variables are used in the
central logic procedure of the system (centra _logic).
The procedures are thus only interesting if an alternative cen-
tral logic is to be made, or if one wishes to know how
centra _logic works.
\f
M_M_m_m_6.3.1 Co _8000 _event 6.3.1
P_P_p_p_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
This integer standard variable holds information about unprocess-
ed 8000-events, if any, from the last scan of the 8000-event
queue.
If the value of co _8000 _event differs from 0 at entry to pro-
cedure centra _logic the procedure will scan the 8000 _event queue
before starting up the next coroutine.
co _8000 _event is assigned by procedures schedule and centra _logic
after each scan of the 8000 _event queue.
M_M_m_m_6.3.2 Co _own _base 6.3.2
P_P_p_p_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
This standard integer contains the start address of the own core
of the coroutine system. See appendix B.
M_M_m_m_6.3.3 Cor _to _sem 6.3.3
P_P_p_p_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
This standard procedure is called by the central logic to trans-
fer coroutines from one semaphore queue to another. A coroutine
is always inserted in order of priority.
C_a_l_l_: cor _to _sem (sem, cor);
sem (call value, integer). The number of the
semaphore where the coroutine is queued up.
-9 <= sem <= -1
cor (call value, integer). The number of the
coroutine.
P_r_o_g_r_a_m_ _m_o_d_e_: The program mode must be cor _monitor (cf. appendix
C).
Alarm: The procedure must not be called as a formal procedure or
with formal expressions.
\f
M_M_m_m_6.3.4 Co _time 6.3.4
P_P_p_p_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
This integer standard variable controls - together with the
variable co _time _base - when the next possible timeout can take
place.
The time of the next possible timeout is
co _time _base + (extend co _time shift 10);
M_M_m_m_6.3.5 Co _time _base 6.3.5
P_P_p_p_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
This long standard variable contains the basis of time measure-
ments in the coroutine system.
The value of the variable must n_o_t_ be changed.
co _time and remaining wait _time in the coroutine descriptions are
measured in units of 0.1024 sec and are used relative to
co _time _base.
6_._3_._6_ _ _ _ _ _S_c_h_e_d_u_l_e_ 6.3.6
This long standard procedure is used by the central logic instead
of procedure activate.
The procedure starts by searching for the next coroutine to be
started. If one is found, schedule calls activate. In this case
the result value is the same as the result value from activate,
and the return value of the parameter is the number of the corou-
tine activated/attempted activated.
If no coroutine is found, the procedure returns with the result
value 0 and the parameter value 0.
\f
C_a_l_l_: schedule (cor);
schedule (return value, long).
If activate has been called, the return value
of procedure activate, otherwise 0.
cor (return value, integer).
If activate has been called, the number of
the coroutine activated, otherwise 0.
P_r_o_g_r_a_m_ _m_o_d_e_: The program mode must be cor _monitor (cf. appendix
C).
Alarm: The procedure gives parameter error if called with expres-
sion or a constant as parameter.
F_u_n_c_t_i_o_n_:
1. If co _8000 _event is negative, the 8000-event queue is scanned.
At a scan of the 8000-event-queue, coroutines queued up on the
implicit-passivate semaphore are transferred to the ready
queue when the 8000-answers waited for are found in the queue.
At the same time, the number of events in the 8000-wait-queue,
which are not answers to coroutines implicitly passivated, are
counted in the variable co _8000 _event.
2. If the ready semaphore is empty, coroutines which have exceed-
ed their maximum waiting time are transferred to the ready
semaphore queue.
If no coroutines are transferred to the ready semaphore queue,
the 8000-event queue will be scanned as described in 1.
3. If the ready semaphore queue is still empty, procedure sched-
ule returns, else the first coroutine on the ready semaphore
queue is activated.
\f
F_
\f
F_ A_._ _ _ _ _ _ _ _ _R_E_F_E_R_E_N_C_E_S_ A.
1 RCSL No 42-i1278:
ALGOL8, User's Guide, Part 2
2 RCSL No 31-D476:
RC8000 MONITOR, Part 1, System Design
3 RCSL No 31-D477:
RC8000 MONITOR, Part 2, Reference Manual
\f
F_ B_._ _ _ _ _ _ _ _ _I_N_T_E_R_N_A_L_ _T_A_B_L_E_S_ B.
This appendix contains the formats of the internal tables.
The addresses of the fields are relative addresses measured in
halfwords relative to the base address of the table.
Section B.1 contains a description of the own core of the corou-
tine system.
Section B.2 contains a description of chain elements.
Section B.3 contains a description of the semaphore table.
Section B.4 contains a description of the coroutine descriptions.
Section B.5 contains a description of the message buffers.
Section B.6 contains procedures for displaying the tables.
B_._1_ _ _ _ _ _ _ _T_h_e_ _O_w_n_ _C_o_r_e_ _o_f_ _t_h_e_ _C_o_r_o_u_t_i_n_e_ _S_y_s_t_e_m_ B.1
External procedure coroutines own core.
rel. addr.
+0 "max _semaphore"
+2 "base address of the semaphore table"
+4 "the address of the last coroutine"
+6 "the address of the coroutine 0"
+8 co _8000 _event
+10 co _time
+12 co _time _base
+14
+16 wait _time
+18 wait _select
+20
+22 co _own _base "base address of this table"
+24 "the length of activity's description per
coroutine" \f
+26 "testzone formals"
+28
+30 select _test
+32
+34
+36 "testrecord"
+38
+40
B_._2_ _ _ _ _ _ _ _C_h_a_i_n_ _E_l_e_m_e_n_t_s_ B.2
Semaphore tables, coroutine descriptions and message buffers con-
tain chain elements. These chain elements consist of the address
of the next element and the address of the previous element.
A chain element looks like this:
rel. addr.
-2 the address of the next element (towards lower
priority)
+0 the address of the previous element (towards
higher priority)
If a chain element has no references it points at itself (i.e. at
the field with the relative address 0).
B_._3_ _ _ _ _ _ _ _S_e_m_a_p_h_o_r_e_ _T_a_b_l_e_ B.3
The table is placed as an array from -9 to max _semaphore of sema-
phore elements each consisting of 8 halfwords.
Each semaphore element consists of a message chain element and a
coroutine chain element.
"Base address of the semaphore table" (see B.1) contains the ad-
dress of the coroutine chain element of semaphore 0.
\f
A semaphore element has the following fields:
rel. addr.
within sem.
-6 the address of the first message (highest priority)
-4 the address of the last message (lowest priority)
-2 the address of the first coroutine (highest priority)
+0 the address of the last coroutine (lowest priority)
NB: When coroutines/messages are queued-up on a semaphore queue
in order of priority, the first address of the previous chain
element is used as priority. This implies that no signals are
sent to the lowest semaphore (the ready semaphore) and that
addresses always exceed 2047, which is in fact the case.
B_._4_ _ _ _ _ _ _ _T_h_e_ _C_o_r_o_u_t_i_n_e_ _D_e_s_c_r_i_p_t_i_o_n_ _T_a_b_l_e_ B.4
The table is placed as an array from 0 to no _of _coroutines of co-
routine description elements each consisting of 16 halfwords. An
element has the following fields:
rel. addr.
-6 the priority of the coroutine
-4 message buffer address if a message has been found
-2 the address of the next coroutine (towards lower prior-
ity)
0 the address of the previous coroutine (towards higher
priority)
+2 wait _select shift (-24)
+4 wait _select extract 24
+6 remaining wait _time in relation to co _time base
+8 coroutine number
The coroutine descriptions can be found either by means of the
semaphore tables or by means of "the address of coroutine 0".
\f
B_._5_ _ _ _ _ _ _ _M_e_s_s_a_g_e_ _B_u_f_f_e_r_s_ B.5
A message buffer has a head of 8 halfwords and a data part of at
least 6 halfwords. A message buffer can only be found by means of
the address, as it must be either queued up on a semaphore or re-
ferred to by a reference variable.
The message buffer has the following format:
rel. addr.
-6 the priority of the message buffer
-4 the length of the message buffer data field in half-
words
-2 the address of the next message buffer (towards lower
priority)
0 the address of the previous message buffer (towards
higher priority)
+2 message key 1 message
+4 message key 2 message
+6 message
M_ . .
. .
P_ . .
B_._6_ _ _ _ _ _ _ _P_r_o_c_e_d_u_r_e_s_ _u_s_e_d_ _t_o_ _D_i_s_p_l_a_y_ _t_h_e_ _T_a_b_l_e_s_ B.6
own integer max _sem, sem _basis, cor _basis, max _cor;
procedure initowns;
begin
integer array own _core(1:4);
system(5, co _own _base, own _core);
max _sem := own _core(1);
sem _basis := own _core(2);
cor _basis := own _core(4);
max _cor := (own _core(3) - cor _basis) shift (-4)
end;
\f
procedure writesem(sem);
integer sem;
begin
write(out, <:sem:>, <<-ddd >, sem,
<* pos *> if sem>0 then <:user:> else
case sem+10 of(
<* -9 *> <:ready:>,
<* -8 *> <:impl. pass.:>,
<* -7 *> <::>,<*not used*>
<* -6 *> <:free:>,
<* -5 *> <:virt. error:>,
<* -4 *> <::>,<*not used*>
<* -3 *> <:delay:>,
<* -2 *> <:wait answ. pool:>,
<* -1 *> <:wait mess.:>,
<* 0 *> <:wait mess. pool:>))
end;
integer procedure where(cor);
value cor;
integer cor;
begin
<* the procedure returns the number of the semaphore on which
the coroutine is queued up.
*>
integer addr;
integer array chain _field(1:4);
initowns;
addr:=cor shift 4 + cor _basis;
for addr:=addr, chain _field(4) while chain _field(1)<2048 do
begin
where:=(addr-sem _basis)//8;
system(5, addr-6, chain _field)
end
end;
\f
procedure printsemtable;
begin
<* for all semaphores the procedure will display the
coroutines/messages in the queue.
*>
integer array sem _descr(1:3), cor _descr(1:8), mess _head(1:9);
integer addr, sem;
procedure printsem(semaddr);
value semaddr;
integer semaddr;
begin
integer addr;
procedure printcor;
begin
system(5, addr-6, cor _descr);
write(out, <:<'nl'> cor:>, <<ddd >, cor _descr(8),
<<-dddd >, <:prio=:>, cor _descr(1),
<:ident:>, <<-ddddddd>, cor _descr(5), cor _descr(6));
if cor _descr(7) > 0 then
writeint(out, <: wait _time:>, << d.d>, cor _descr(7));
addr:=cor _descr(3)
end;
procedure printmess;
begin
integer i, size;
system(5, addr-6, mess _head);
write(out, <:<'nl'> mess prio=:>, <<-dddd >,
mess _head(1), <:size:>, mess _head(2));
size:=if mess _head(2) > 10 then 5 else mess _head(2)//2;
for i:=1 step 1 until size do write(out, mess _head(4+i));
addr:=mess _head(3)
end;
\f
system(5, semaddr-6, sem _descr);
if sem _descr(1)<>semaddr-4 or sem _descr(3)<>semaddr then
begin
write(out, <:<'nl'><'nl'>:>);
writesem(sem);
addr:=sem _descr(3);
while addr<>semaddr do printcor;
addr:=sem _descr(1);
while addr<>semaddr-4 do printmess;
end
end;
initowns;
for sem:=-9 step 1 until max _sem do printsem(sem*8 + sembasis)
end;
procedure printcorsem;
begin
<* for all coroutines the procedure displays the number and
possible name of the semaphore on which the coroutines are
queued up.
*>
integer cor;
initowns;
for cor:= 1 step 1 until max _cor do
begin
write(out, <:<'nl'>cor:>, <<dddd>, cor, <: on :>);
writesem(where(cor))
end
end;
\f
F_ C_._ _ _ _ _ _ _ _ _P_R_O_G_R_A_M_ _M_O_D_E_ C.
The coroutine system defines certain program modes not used by
activity.
The following program modes exist:
mode
value program mode of the coroutine system activity program mode
8 neutral neutral
17 act _monitor monitor
18 act _activity activity
20 act _disable disable
33 cor _monitor monitor
34 cor _activity cor _modes activity
36 cor _disable disable
The mode values stated will be displayed in the alarm caused by a
procedure called in an illegal program mode.
Survey of the use of program modes:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _p_r_o_g_r_a_m_ _m_o_d_e_ _ _ _ _ _ _ _ _ _ _ _ _
p_r_o_c_e_d_u_r_e_ _ _ _ _ _ _ _ _ _ _b_e_f_o_r_e_ _t_h_e_ _c_a_l_l_ _ _ _ _ _a_f_t_e_r_ _t_h_e_ _c_a_l_l_ _
a_l_l_o_c_a_t_e_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _3_3_ _ _ _ _ _ _ _ _ _ _ _ _ _ _u_n_c_h_a_n_g_e_d_ _ _ _ _
c_o_r_o_u_t_i_n_e_s_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _1_7_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _3_3_ _ _ _ _ _ _ _
i_n_i_t_r_e_f_ _ _ _ _ _ _ _ _ _ _ _ _ _ _3_3_,_ _3_4_,_ _3_6_ _ _ _ _ _ _ _ _ _ _u_n_c_h_a_n_g_e_d_ _ _ _ _
s_e_t_ _p_r_i_o_r_i_t_y_ _ _ _ _ _ _ _ _ _ _ _ _ _3_4_ _ _ _ _ _ _ _ _ _ _ _ _ _ _u_n_c_h_a_n_g_e_d_ _ _ _ _
s_i_g_n_a_l_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _3_3_,_ _3_4_,_ _3_6_ _ _ _ _ _ _ _ _ _ _u_n_c_h_a_n_g_e_d_ _ _ _ _
w_a_i_t_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _3_3_,_ _3_4_,_ _3_6_ _ _ _ _ _ _ _ _ _ _u_n_c_h_a_n_g_e_d_ _ _ _ _
c_o_r_ _t_o_ _s_e_m_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _3_3_ _ _ _ _ _ _ _ _ _ _ _ _ _ _u_n_c_h_a_n_g_e_d_ _ _ _ _
s_c_h_e_d_u_l_e_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _3_3_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _3_3_ _ _ _ _ _ _ _
\f
F_ D_._ _ _ _ _ _ _ _ _T_E_S_T_ _R_E_C_O_R_D_S_ D.
The individual test records consist of 16 halfwords and are
created by means of outrec6. The format of the different test re-
cords are shown in fig. 1.
Comments to the table:
re 1: The first 7 words of the message. If the message is
shorter, the rest is undefined.
re 2: If s-data is requested, the value is 5 and the following
record an s-data record, otherwise the value is 4.
re 3: The coroutine from which the procedure is called. If the
procedure is called in the disable mode, the value is the
negative value of coroutine number, and if it is called
in the monitor mode, the value is 0.
re 4: If w-data is requested, the value is 18, and the follow-
ing record is a w-data record, otherwise the value is 16.
re 5: This record is created by means of the procedure
prepare _test. The fields can be changed freely after the
call, only the test number must be outside the interval
0 - 1023.
re 6: The hour contains 8000 _time (measured in 0.1 msec). The
value can be printed out in readable form:
begin
real date, time;
long field hour;
hour:= 16;
date:= systime(4, z.hour/10000, time);
write(out, << dd dd dd>, date, time)
end;
\f
F_
\f
After end of execution the test records can be displayed by means
of print. It can be done by means of the following call, in which
each test record is printed out in a separate line:
print testfile word words.8
\f
F_ E_._ _ _ _ _ _ _ _ _A_L_A_R_M_S_ _F_R_O_M_ _T_H_E_ _C_O_R_O_U_T_I_N_E_ _S_Y_S_T_E_M_ E.
alarm text procedure explanation
c-level coroutines coroutines The procedure has not
allocate been called at the same
block level as activity.
index <j> coroutines coroutines The parameter
max _semaphore has the
illegal value <j>.
allocate The parameter 'sem' has
the illegal value <j>.
index <j> schedule cor _to _sem The parameter 'cor' has
the illegal value <j>.
index <j> signal/wait signal The parameter 'sem' has
wait the illegal value <j>
not ref. signal/wait signal 2nd parameter in the
wait procedure call is not a
reference variable.
p-mode <j> coroutines coroutines The procedure has been
allocate called in a wrong program
mode <j>. Cf. appendix C.
p-mode <j> schedule initref The procedure has been
cor _to _sem called in a wrong program
schedule mode <j>. Cf. appendix C.
set _priority
param schedule initref first parameter in the
call has not been declar-
ed as a reference vari-
able.
cor _to _sem the procedure has been
schedule called either as a formal
procedure or by means of
a formal expression.
\f
alarm text procedure explanation
param signal/wait signal The procedure has not
wait been called in cor _modes.
ref.arr signal/wait wait The reference variable
has the state 'array' at
call.
ref.nil signal/wait signal The reference variable
has the state 'nil' at
call.
\f
i
F_O_R_O_R_D_
Første udgave: RCSL Nr. 42-i2047.
Denne manual omfatter de oplysninger, der tidligere (januar 1981)
har været distribueret som enkeltark RCSL Nr. 42-i1726.
Susanne Berland
A/S REGNECENTRALEN af 1979, juni 1982
\f
ii
\f
iii
I_N_D_H_O_L_D_S_F_O_R_T_E_G_N_E_L_S_E_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _S_I_D_E_
1. INTRODUKTION ........................................... 1
2. INSTALLATIONSPLANLÆGNING ............................... 2
3. RC855 MASKINELT UDSTYR ................................. 3
3.1 Oversigt .......................................... 3
3.2 Dimensioner ....................................... 3
3.3 Miljø ............................................. 4
4. INSTALLERING ........................................... 5
4.1 RC855 Skærmterminal ............................... 5
4.1.1 Kabelforbindelser .......................... 6
4.2 RC-CIRCUIT ........................................ 8
4.3 Printer ........................................... 10
4.3.1 RC862/867 printere ......................... 10
B_I_L_A_G_:
A. REFERENCER ............................................. 11
\f
iv
\f
1_._ _ _ _ _ _ _ _ _I_N_T_R_O_D_U_K_T_I_O_N_ 1.
RC855 er konstrueret med henblik på opbygning af distribuerede
systemer, hvor hver enkelt enhed skiftevis kan bruges til kom-
munikation med en værtsdatamat og som lokal mikrodatamat.
RC855 fås som en terminaldatamat med mulighed for skiftende
funktioner alt efter det indlæste programmel.
RC855 fås også som dedikeret terminal.
Terminaldatamaten og den dedikerede terminal er baseret på samme
skærmterminal. Udstyret installeres ved hjælp af kabler, der til-
sluttes skærmterminalens bagpanel. Nogle af tilslutningerne bru-
ges altid, (tastatur, el, osv.), brugen af andre afhænger derimod
af konfigurationen (printer, værtsdatamat, RC-CIRCUIT, osv.).
Konfigurationsmulighederne er beskrevet i ref. 1.
Der kan tilkobles en eller to diskettestationer og en printer.
Terminalerne kan desuden indgå i en klyngekonfiguration.
En klyngekonfiguration kan bestå af indtil otte terminaler (ter-
minaldatamater og/eller dedikerede terminaler), der forbindes med
RC-CIRCUIT, et almindeligt par-snoet kabel ført gennem vægbokse/
vægstik.
\f
F_ 2_._ _ _ _ _ _ _ _ _I_N_S_T_A_L_L_A_T_I_O_N_S_P_L_A_N_L_Æ_G_N_I_N_G_ 2.
Følgende generelle krav skal tages i betragtning, når man plan-
lægger installering af RC855 udstyr:
- der skal være rigelig plads omkring udstyret.
- temperaturen skal holdes mellem 16-32C og den relative luft-
fugtighed mellem 40-60%; de ideelle betingelser er 21C og 50%
relativ luftfugtighed;
- undgå så vidt muligt statisk elektricitet; eventuelle udladnin-
ger bør ikke overstige 2 kV.
- udstyret kræver følgende elspecifikationer: 220/240 V AC +_10%,
50 Hz +_2 Hz.
- alle stikkontakter skal være forsynet med jordforbindelse.
Yderligere oplysninger om installering af RC datamatudstyr i al-
mindelighed findes under ref. 2.
\f
F_ 3_._ _ _ _ _ _ _ _ _R_C_8_5_5_ _M_A_S_K_I_N_E_L_T_ _U_D_S_T_Y_R_ 3.
3_._1_ _ _ _ _ _ _ _O_v_e_r_s_i_g_t_ 3.1
R_C_ _N_r_._ _ _ _P_r_o_d_u_k_t_n_a_v_n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
RC855 Skærmterminal
TF663S RC855 Modemkabel, kort (5 m)
TF663M RC855 Modemkabel, medium (12 m)
TF663L RC855 Modemkabel, langt (25 m)
TF664 RC-CIRCUIT, vægstik med underlag for flademontering
TF665 RC-CIRCUIT, vægstik med underlag for forsænket mon-
tering
TF656 RC-CIRCUIT, vægstik, separat enhed
TF661 RC-CIRCUIT, forbindelseskabel til terminal (5 m)
RC862 Matrix printer, 120 tegn/s, 80 tegnpos.
RC867 Matrix printer, 120 tegn/s, 136 tegnpos.
RC868 Typehjulsprinter, 55 tegn/s, 132-198 tegnpos.
RC762 Diskettestation, 8" disketter
3_._2_ _ _ _ _ _ _ _D_i_m_e_n_s_i_o_n_e_r_ 3.2
R_C_ _N_r_._ _ _ _ _ _H_ø_j_d_e_ _(_c_m_)_ _ _ _B_r_e_d_d_e_ _(_c_m_)_ _ _ _D_y_b_d_e_ _(_c_m_)_ _ _ _V_æ_g_t_ _(_k_g_)_ _N_o_t_e_
RC855,
- terminal 39-49 47 33 30 1)
- tastatur 8,5 44 25 4
RC862 13,3 36,1 32,8 8,9
RC867 13,3 51.2 32,8 14
RC868 17,2 61,7 42,6 13,5
RC762 14 29 46 13,5
1) Højden kan justeres; dybde afhænger af vipning af monitor.
\f
3_._3_ _ _ _ _ _ _ _M_i_l_j_ø_ 3.3
RC Omgivelses- Relativ Varme- El-
Nr. temperatur luftfugtighed*) afgivelse forbrug
_ _ _ _ _ _ _ _ _ _(__C_)_ _ _ _ _ _ _ _ _ _ _ _(_%_)_ _ _ _ _ _ _ _ _ _ _ _ _(_k_J_/_t_)_ _ _ _ _ _ _ _ _ _ _(_W_)_ _ _ _ _ _ _
RC855 10-35 40-80 288 80
RC862 5-40 20-90 432 120
RC867 5-40 20-90 432 120
RC868 10-40 10-90 540 150
RC762 10-35 20-80 300 83
*) Ikke-kondenserende.
\f
F_ 4_._ _ _ _ _ _ _ _ _I_N_S_T_A_L_L_E_R_I_N_G_ 4.
4_._1_ _ _ _ _ _ _ _R_C_8_5_5_ _S_k_æ_r_m_t_e_r_m_i_n_a_l_ 4.1
Installationen udføres ved hjælp af kabelforbindelser på skærm-
terminalens bagpanel.
Figur 1: Bagpanel.
1) KEYBOARD (tastaturtilslutning)
2) RESET (kontakt)
3) CIRCUIT (klyngetilslutning)
4) LINE II (printertilslutning)
5) LINE I (tilslutning til værtsdatamat)
6) Tilslutning af diskettestation
7) Netledning og sikringsholder
8) Afbryderkontakt
Nedenfor følger en beskrivelse af kabelforbindelserne under hen-
visning til numrene på fig. 1. Hvor det er relevant anføres både
RC's ordrenr. og partnr., sidstnævnte for lettere at kunne iden-
tificere kablerne.
\f
På RC855 skærmterminalen er den traditionelle måde med indstil-
ling af forskellige funktioner ved hjælp af kontakter afløst af
en programstyret inddatering af konfigurationsparametre. Disse
parametre inddateres i henhold til de funktionskrav, der ønskes i
det efterfølgende betjeningsforløb, og det sker som led i start-
forløbet. Jævnfør de aktuelle vejledninger til programmellet for
nærmere oplysninger om konfigurationsparametrene.
4_._1_._1_ _ _ _ _ _K_a_b_e_l_f_o_r_b_i_n_d_e_l_s_e_r_ 4.1.1
T_a_s_t_a_t_u_r_ Anvendelse : altid
Levering : sammen med tastaturet
RC ordrenr.: -
RC partnr. : -
Kabellængde: 1,5 m
C_I_R_C_U_I_T_ Anvendelse : i klyngekonfiguratio-
ner; kablet fører til
RC-CIRCUIT's vægstik
(jf. 4.2)
Levering : bestilles separat
RC ordrenr.: TF661
RC partnr. : CBL926
Kabellængde: 5 m
P_r_i_n_t_e_r_ Anvendelse : ved benyttelse af
printer
Levering : sammen med printer
RC ordrenr.: -
RC partnr. : RC862: CBL909
RC867: CBL909
RC868: CBL977
Kabellængde: normalt 5 m
Bemærk : separat stikkontakt
til printer
\f
V_æ_r_t_s_d_a_t_a_m_a_t_ Anvendelse : til kommunikation med
værtsdatamat
Levering : bestilles separat
RC ordrenr.: TF663S/M/L
RC partnr. : CBL585/604/605
Kabellængde: 5/12/25 m
Bemærk: separat stikkontakt
til modem skal udgå
fra samme strømfor-
delingstavle som
stikkontakten til
skærmterminalen.
Modemudstyret kan
give anledning til
yderligere krav.
D_i_s_k_e_t_t_e_s_t_a_t_i_o_n_ Anvendelse : ved benyttelse af
diskettestation
Levering : sammen med diskette-
station
RC ordrenr.: -
RC partnr. : -
Kabellængde: mellem skærmterminal
og diskettestation:
1 m; mellem diskette-
stationer: 1 m
Bemærk: ved sammenkædning af
to diskettestationer
er station "2" forbun-
det med skærmtermina-
len og station "1" med
station "2".
Separat stikkontakt
til hver diskettesta-
tion.
\f
N_e_t_l_e_d_n_i_n_g_ Anvendelse : altid
Levering : sammen med skærmter-
minalen
RC ordrenr.: stik svarende til
standard i de enkelte
lande specificeres
indirekte ved angi-
velse af det ønskede
nationale tegnsæt.
RC partnr. : DANSK/NORSK: CBL440
DANSK OFFS: CBL440
SVENSK: CBL973
TYSK: CBL973
US-ASCII: CBL973
UK-ASCII: CBL927
Kabellængde: normalt 2,5 m
Bemærk: CBL440 har dansk stik
CBL973 har Schuko
stik;
CBL927 har intet stik
og er kun 2 m langt.
4_._2_ _ _ _ _ _ _ _R_C_-_C_I_R_C_U_I_T_ 4.2
RC-CIRCUIT installationen består af et par-snoet kabel, der føres
gennem vægstik. Indtil 8 tilslutningssteder kan oprettes med et
kabel; den totale kabellængde må højst være 1500 meter.
\f
Kabel: 1x2x0,6 (f.eks. P. Axt type G51)
Kabellængde: maks. 1500 meter
Vægboks/vægstik, sæt,
- til flademontering: TF664
- til forsænket montering: TF665
Vægstik, separat enhed: TF656
Vægstik fås med underlag for flademontering (RC ordrenr. TF664),
eller med underlag for forsænket montering (RC ordrenr. TF665).
Vægboksene kan evt. anskaffes lokalt fra andre leverandører (fla-
demontering: LK-NES type 102H1030; forsænket montering: LK-NES
type 102H1041) i så fald kan vægstikkene leveres som separate
enheder (RC ordrenr.: TF656).
Normalt sørger kunden for installering af RC-CIRCUIT kablet in-
klusive de tomme vægbokse. Installering af vægstik bestilles nor-
malt hos RC (beregnes særskilt).
Bemærk: Når vægstikkene installeres, skal modstanden (betegnet
120E) på bagsiden fjernes fra vægstikket. D_o_g_ _m_e_d_ _u_n_d_-
t_a_g_e_l_s_e_ _a_f_ de to vægstik som udgør de to yderpositioner i
RC-CIRCUIT installationen.
\f
4_._3_ _ _ _ _ _ _ _P_r_i_n_t_e_r_ 4.3
Som ekstraudstyr tilbydes en række forskellige printere. Afhæn-
gigt af printertypen kan det være nødvendigt at indstille interne
kontakter i printeren i overensstemmelse med driftsbetingelserne
(bestemt af terminalsystemet og arbejdsopgaverne). Disse forhold
er beskrevet i den dokumentation, der følger med printeren.
4_._3_._1_ _ _ _ _ _R_C_8_6_2_/_8_6_7_ _p_r_i_n_t_e_r_e_ 4.3.1
RC862/867 printerne leveres som standard med et universelt tegn-
sæt, der omfatter alle de nationale varianter. Den nationale va-
riant, der skal benyttes, vælges ved indstilling af nogle kontak-
ter. Kontakterne er placeret under printerens dæksel, til højre
på betjeningspanelet (jf. dokumentation for printer).
De nationale varianter vælges ved indstilling af kontakterne som
følger:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
kontakt
v_a_r_i_a_n_t_ _ _ _ _ _ _ _ _1_ _ _ _ _ _ _ _2_ _ _ _ _ _ _ _3_ _ _ _ _ _ _4_ _ _ _ _ _ _5_ _ _ _ _ _ _6_ _ _ _ _ _ _7_ _ _ _ _ _ _8_ _ _ _ _
D_A_N_S_K_/_N_O_R_S_K_ _ _ _O_F_F_ _ _ _ _ _O_N_ _ _ _ _ _ _O_N_ _ _
D_A_N_S_K_ _O_F_F_S_ _ _ _ _O_N_ _ _ _ _ _ _O_N_ _ _ _ _ _ _O_N_ _ _ må ikke ændres,
S_V_E_N_S_K_ _ _ _ _ _ _ _ _O_F_F_ _ _ _ _ _O_F_F_ _ _ _ _ _O_N_ _ _ altid:
T_Y_S_K_ _ _ _ _ _ _ _ _ _ _O_N_ _ _ _ _ _ _O_N_ _ _ _ _ _ _O_F_F_ _ OFF ON OFF ON ON
US-ASCII/
F_R_A_N_S_K_ _ _ _ _ _ _ _ _O_F_F_ _ _ _ _ _O_F_F_ _ _ _ _ _O_N_ _ _
U_K_-_A_S_C_I_I_ _ _ _ _ _ _O_F_F_ _ _ _ _ _O_N_ _ _ _ _ _ _O_F_F_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
\f
F_ A_._ _ _ _ _ _ _ _ _R_E_F_E_R_E_N_C_E_R_ A.
1 RCSL Nr. 42-i2048:
Susanne Berland, juni 1982
R_C_8_5_5_ _K_o_n_f_i_g_u_r_a_t_i_o_n_s_v_e_j_l_e_d_n_i_n_g_
R_e_s_u_m__: Denne manual beskriver de grundlæggende
konfigurationsmuligheder for RC855 terminalsystemet.
2 RCSL No 42-i1621:
R_C_ _C_o_m_p_u_t_e_r_ _E_q_u_i_p_m_e_n_t_,_ _I_n_s_t_a_l_l_a_t_i_o_n_ _P_l_a_n_n_i_n_g_
Jørgen Rosendahl, Henning Christensen, February 1981
A_b_s_t_r_a_c_t_: It is the concern of this publication to provide
information on the installation planning of RC computer
equipment. Only hardware installation is covered. General
information is given with respect to computer room, environ-
ment, power supply, precautional arrangements and the con-
nection patterns of the equipment.
\f
F_
\f
«eof»