summaryrefslogtreecommitdiff
path: root/system/shard-z80-ruc-64180/1.5/doc/SHARD.PRT
blob: a698b27837b14c451fa478590ad78a4a5bef7772 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
#type ("12")##limit (16.0)##block##pageblock# 
#head# 
#center#Dokumentation zum EUMEL-SHard 
 
 
#end# 
#bottom# 
 
 
#center#- % - 
#end# 
************************************************************************ 
*                                                                      * 
*             D o k u m e n t a t i o n    z u m   S H a r d  (8)      * 
*                                                                      * 
*             Stand der Dokumentation:  26.06.87                       * 
*             Stand der Implementation: 26.06.87, Version 1.5          * 
*                                                                      * 
*                                                  Michael Staubermann * 
*                                                  Moränenstraße 29    * 
*                                                  44 Münster-Hiltrup  * 
************************************************************************ 
 
 
 
1.   Allgemeines 
1.1    Neuheiten 
1.2    Logische und physische Kanäle 
 
2.   Block I/O 
2.1    Harddisk (Kanal 0) 
2.2    SCSI-Floppy (Kanal 31) 
2.3    Harddisk-Volume (Kanal 28) 
2.4    160k/640k-Floppys (Kanal 29, 30) 
2.5    Graphikmemory (Kanal 1) 
 
3.   Stream I/O 
3.1    Konsole (Kanal 1) 
3.2    6551-Seriell (Kanal 5) 
3.3    SCCs (Kanal 2, 3) 
3.4    CIO-Drucker (Kanal 4) 
3.5    Motherboard-Drucker (Kanal 6) 
 
4.   Graphik 
4.1    CTRL 
4.2    MOVE 
4.3    DRAW 
4.4    TEST 
4.5    CLR 
4.6    FILL 
4.7    TRANS 
 
5.   Hardware 
5.1    Zugriff auf die Hardware-Uhr 
5.2    Zugriff auf die Analog-Ports 
5.3    Zugriff auf die I/O-Ports 
5.4    ID-Felder 
 
6.   Installation 
6.1    Vortest/Speichertest 
6.2    Konsole 
6.3    SCSI-Floppy 
6.4    Harddisk Volume 
6.5    Logische Kanäle zuordnen 
6.6    Installation auf Harddisk 
6.7    Installation auf Floppy 
 
#page# 
#ub#1  Allgemeines#ue# 
 
#ub#1.1  Neuheiten#ue# 
 
Neu in Version 1.2: 40% höherer CPU-Durchsatz. 
 
Neu in Version 1.4: Texthardcopy mit SHIFT CTRL F12. 
 
Neu in Version 1.5: Beide Printer-Spooler löschbar mit control (-10,...). 
Korrektur in   1.5: Kanal 4 - Printer darf auch während des Betriebs aus-
                    und eingeschaltet werden (läuft automatisch wieder an). 
 
 
#ub#1.2  Logische und physische Kanäle#ue# 
 
Die Unterscheidung zwischen logischen und physischen Kanälen bringt Vortei-
le: 
 
- Der Systemstart muß nicht mehr an der Konsole erfolgen (jetzt z.B. an
  einem externen Terminal). 
- Systemfehler/Hardwarefehler und Info werden damit auch an einem anderen
  physischen Kanal ausgegeben. 
- Das Hintergrundmedium muß nicht mehr unbedingt die Harddisk sein. Eine
  SCSI-Floppy (720k) wäre denkbar, oder ein anderes Harddisk-Volume. 
- Das Archivmedium muß nicht mehr unbedingt die SCSI-Floppy sein. Ein Hard-
  diskvolume oder eine 640k-Floppy wären denkbar. 
- Für einen anderen SHard geschriebene Software (z.B. alter Druckertrei-
  ber/Graphiktreiber) muß nicht geändert werden. 
 
#page#
#ub#2.  Block I/O#ue# 
 
#ub#2.1  Harddisk (Kanal 0)#ue# 
 
Keine Recalibrates (wg. Timeout/DMA-Fehler) mehr! 
Das beste Sektor-Interleave ist 5. 
 
 
#ub#2.2  SCSI-Floppy (Kanal 31)#ue# 
 
- Falls keine Floppy im Schacht liegt, werden keine Retries mehr gemacht.
  Bei Write-Protect auch nicht. 
- Harddisk und Floppy arbeiten jetzt auch bei intensiver Benutzung gut
  nebeneinander. 
- Mit 'size (schluessel)' kann vom EUMEL aus das Format eingestellt werden.
  Interpretiert wird 0 und 2 als 720k-Format und 1 als 360k-Format, sowie
  der analytische Schlüssel (lt. Portierungshandbuch). 
- 'format (schluessel)' formatiert eine Floppy im 720k-Format. Der Control-
  ler wird allerdings wie bei 'size (schluessel)' vorher initialisiert, da
  EUMEL das nicht macht. 
- Falls gewünscht kann auch SCSI-Floppy #1 über Kanal 31 angesprochen wer-
  den. Die entsprechende Frage wird im Installationsprogramm gestellt. 
 
 
#ub#2.3  Harddisk-Volume (Kanal 28)#ue# 
 
Mit diesem Kanal ist es möglich, ein anderes Harddisk-Volume, dessen Anfang
und Größe auf der Platte mit dem Installationsprogramm ausgewählt wurde,
anzusprechen. Ein CP/M-Volume kann z.B. auch durch EUMEL genutzt werden
oder das Harddisk-Volume wird als Archiv-Kanal genutzt. 
 
 
#ub#2.4  160k/640k Floppys (Kanal 29, 30)#ue# 
 
- Kanal 29 spricht Disk #1 in Slot 6 an, 
- Kanal 30 spricht Disk #0 in Slot 6 an. 
- Da sich beide Disks einen Controller und Datenbereich (4k-Cache) teilen,
  kann Block I/O nicht auf beiden Kanen parallel ablaufen. Blockweise Ab-
  wechslung ist allerdings möglich (Wird durch Semaphor geregelt). 
- Formatieren ist auf diesen Kanälen nicht möglich. 
- Das Format (160k/640k) wird mit 'size (schluessel)' im EUMEL eingestellt.
  Außer dem analytischen Schlüssel wird noch 0 und 2 für 2 * 80 Tracks
  (640k) und 1 für 1 * 40 Tracks (160k) interpretiert. 
- Ein (CP/M-) Interleave von 3 Sektoren ist eingestellt. 
- Daten werden jeweils Trackweise in einen Puffer gelesen und in 512-Byte
  Blöcken an EUMEL übergeben. Bei 'blockout' wird der Block (512-Bytes)
  sofort auf die Floppy geschrieben. 
- Writeprotection wird erkannt. 
- Media-Mangel wird nicht erkannt, sondern als Lesefehler interpretiert bei
  dem Retries versucht werden. (SHard führt von sich aus 1 Recalibrate aus,
  den Rest muß EUMEL machen). 
 
 
#ub#2.5  Graphikmemory (Kanal 1)#ue# 
 
- Dieser flüchtige Speicher hat eine Größe von 32KB (64 Blöcke) 
- 4 Graphikseiten zu jeweils 8KB sind linear angeordnet. 
- Seiten 0 und 1 können als Grahikbitmap angezeigt werden 
- Seiten 2 und 3 können dienen als Hilfsspeicherseiten 
 
#page#
#ub#3. Stream I/O#ue# 
 
#ub#3.1  Konsole (Kanal 1)#ue# 
 
- Die Blinkfrequenz des Cursors kann nicht mehr mit 'control' eingestellt
  werden, sondern vor dem Systemstart mit dem Installationsprogramm. 
- Zusätzlich kann die Tonhöhe des Steuercodes ""7"" bestimmt werden (Im
  Installationsprogramm). 
- Der Zeichensatz wird nicht mehr mit 'control' eingestellt. Da jetzt Steu-
  ercodes benutzt werden, kann der Zeichensatz in der Typtabelle festgelegt
  werden. 
- Zeichencodes 128..255 werden ohne Umsetzung auf den Bildschirm geschrie-
  ben. 
- Folgenden Steuercodes sind definiert: 
   0 - Keine Aktion 
   1 - Cursor Home 
   2 - Cursor right 
   3 - Cursor up 
   4 - Clear to end of Page 
   5 - Clear to end of Line 
   6 - Cursor Positionierung (Row, Column) (ohne Offset!) 
   7 - Bell 
   8 - Cursor left 
   9 - Clear Screen 
  10 - Cursor down 
  11 - Insert Line 
  12 - Delete Line 
  13 - Carriage Return 
  14 - End Mark 
  15 - Begin Mark 
  16 - Deutscher Zeichensatz (German ASCII) 
  17 - ASCII Zeichensatz 
  18 - APL Zeichensatz 
  19 - Universal Zeichensatz (German ASCII + APL) 
  20 - Mode einschalten: Inverse Zeichen blinken nicht 
  21 - Mode einschalten: Inverse Zeichen blinken 
 
- Es werden keine Eingabeumcodierungen gemacht, dies soll in der Typtabelle
  geschehen. 
- Falls EUMEL keine Eingabezeichen mehr puffern kann, werden diese im Ta-
  staturpuffer gespeichert. Damit ist es möglich bis zu 270 Tastendrücke im
  voraus zu tippen. Werden noch mehr Tasten gedrückt, ertönt ein Signal, da
  weitere Tastendrücke verlorengehen. EUMEL wird beim nächsten Inputinter-
  rupt ein Overrun-Error gemeldet. 
 
- Einige Funktionstasten haben eine besondere Bedeutung: 
  F2 = SV-Call: Diese Taste wird auch dann weitergeleitet, wenn EUMEL keine
                weiteren Zeichen puffern kann, damit Tasks, die nicht auf
                Eingabe warten, abgebrochen werden können. 
  SHIFT CTRL F12 = Texthardcopy: Durch Drücken dieser Tasten wird der In-
                halt des Textbildschirms auf einem Drucker an der paralle-
                len Basisschnittstelle ausgedruckt. Achtung: Dies funktio-
                niert nur, wenn der Spooler leer ist. Falls ein Druckauf-
                trag läuft, sollte keine Hardcopy gemacht werden (Falls der
                Spooler nämlich kurzfristig leer ist, wird die Hardcopy
                gedruckt den Druckauftrag ruinieren.) 
  SHIFT CTRL F13 = Weiter: Durch Drücken dieser Tasten wird der Tastatur-
                puffer ohne Rücksicht darauf, ob EUMEL noch Zeichen puffern
                kann, zeichenweise entleert. (Wird wohl kaum benutzt werden
                müßen). 
  SHIFT CTRL F14 = Shutup: Durch Drücken dieser Tasten wird das System
                kontrolliert heruntergefahren. 
  SHIFT CTRL F15 = Reset:  Falls verdrahtet löst die Software einen Hard-
                warereset aus. 
 
 
#ub#3.2  6551-Seriell (Kanal 5)#ue# 
 
Dieser Kanal wurde erweitert: 
- Außer Baudrate können jetzt auch Stopbits, Datenbits, Parity und Fluß-
  kontrolle eingestellt werden (CTS, DSR/DTR, XON/XOFF). 
- Ein Empfangspuffer von 2300 Zeichen wurde eingebaut und der Ausgabepuffer
  auf 1k erweitert. 
- Ein- und Ausgabe läuft jetzt Interruptgetrieben, kann also auch während
  einer Floppyoperation stattfinden. 
- Übertragungsfehler (Parity, Framing, Overrun) werden beim Inputinterrupt
  an EUMEL gemeldet. Die Fehler werden in dem Moment, in dem sie bemerkt
  werden gemeldet, d.h. i.d.R. nicht passend zum gleichzeitig übermittelten
  Zeichen. 
- Ein Break-Kommando wird interpretiert und ggf. an EUMEL gemeldet. Folgt
  auf das Break-Kommando ('00' + Framing Error) ein 'Kommandozeichen', dann
  wird dieses Remote-Kommando ausgeführt, anderenfalls wird das auf 'Break'
  folgende Zeichen in den Empfangspuffer geschrieben und 'Break' an EUMEL
  gemeldet. 
- Folgende Break-Komandos werden interpretiert: 
  <BREAK> <CTRL B> : SV-Call ohne Rücksicht auf Verluste an EUMEL leiten. 
  <BREAK> W        : Wie SHIFT CTRL F13 bei Keyboard. 
  <BREAK> S        : Shutup, System kontrolliert herunterfahren. 
  <BREAK> R        : Software löst, falls verdrahtet, einen Hardarereset
                     aus. 
 
 
#ub#3.3  SCCs (Kanal 2, 3)#ue# 
 
- Außer der Baudrate kann man jetzt auch Stopbits, Datenbits, Parity und
  Flußkontrolle (RTS+DTR /CTS) einstellen. XON/XOFF wird nicht empfohlen. 
- Übertragungsfehler (Overrun, Parity und Break) werden EUMEL gemeldet. 
- Beide Kanäle besitzen einen Ausgabepuffer von jeweils 2KB. 
 
 
#ub#3.4  CIO-Drucker (Kanal 4)#ue# 
 
- Der Drucker wird mit Strobe/-ACK - Protokoll angeschloßen. 
- Dieser Kanal besitzt einen Ausgabepuffer von 4KB (Interruptgetrieben). 
- Der Druckerpuffer kann mit 'control (-10, 0, 0, r)' an Kanal 4 gelöscht
  werden. 
 
 
#ub#3.5  Motherboard-Drucker (Kanal 6)#ue# 
 
- Der Drucker wird mit Strobe/-ACK - Protokoll angeschloßen. 
- Dieser Kanal besitzt einen 4KB Ausgabepuffer (Polling). 
- Der Druckerpuffer kann mit 'control (-10, 0, 0, r)' an Kanal 6 gelöscht
  werden. 
 
#page#
#ub#4.  Graphik#ue# 
 
#ub#4.1  CTRL#ue# 
 
control (-8, flags, linienmuster, r) 
Setzt verschiedene Graphikmodi. 
 
Die Bits im Parameter 'flags' sind folgendermaßen zugeordnet: 
 
Bit 0 : 
     0 = Textmodus einschalten, Graphikmodus ausschalten 
     1 = Graphikmodus einschalten, Textmodus ausschalten 
 
Bit 1 : 
     0 = Seite 0 als sichtbare Seite wählen 
     1 = Seite 1 als sichtbare Seite wählen 
 
Bit 2 : 
     0 = Seite 0 als bearbeitete Seite wählen 
     1 = Seite 1 als bearbeitete Seite wählen 
 
Bit 3, 4 : Verknüpfung Patternbit: 0           1 
    0           OR              setzen     unverändert 
    1         NAND             löschen     unverändert 
    2          XOR         invertieren     unverändert 
    3         COPY             löschen     setzen 
 
Bit 5 : 
     0 = Der gesamte Bildschirm zeigt die Graphikseite ('full screen') 
     1 = In den letzten 32 Graphikzeilen erscheint die Textseite ('mixed') 
 
Bit 6 : 
     0 = Das im zweiten Parameter übergebene Wort wird als 16-Bit 
         Linienmuster eingestellt. Modus siehe Bit 3/4. 
     1 = Das alte (bzw. voreingestellte) Linienmuster wird benutzt 
 
Bit 7 : 
     0 = Als Punkthelligkeit wird 'dunkel' (bzw. Violett) eingestellt 
     1 = Als Punkthelligkeit word 'hell' (bzw. Gelb) eingestellt 
 
Bit 8..11 : 
     0 = Default-Strichdicke (1) 
     1..15 = Strichdicke (Es werden 2*s-1 Linien parallel gezeichnet.) 
 
Der zweite Parameter enthält das 16-Bit Linienmuster. Dieses wird beim
Zeichnen einer Linie zyklisch Bitweise abgetastet. Je nach Status des Bits
im Linienmuster wird eine Punktaktion ausgeführt, deren Wirkung in 'flags'
mit den Bits 3 und 4 spezifiziert wird. 
 
 
#ub#4.2  MOVE#ue# 
 
control (-5, x pos, y pos, r) 
Setzt den (unsichtbaren) Graphikcursor auf xpos/ypos. 
 
Der nächste 'draw' zeichnet eine Linie beginnend bei xpos/ypos. 
 
 
#ub#4.3  DRAW#ue# 
 
control (-6, x pos, y pos, r) 
Zeichnet eine Linie zur angegebenen Position xpos/ypos. 
 
Die eingestellten Parameter Helligkeit, Linientyp, Bitverknüpfung und Dicke
werden beachtet. Der nächste 'draw' zeichnet eine Linie beginnend bei
xpos/ypos. 
 
 
#ub#4.4  TEST#ue# 
 
control (-7, x pos, y pos, result) 
Testet den Status eines bestimmten Pixels. 
 
Die Pixelposition wird mit xpos/ypos beschrieben. 
Als 'result' wird zurückgeliefert: 
    255, falls xpos/ypos außerhalb des sichtbaren Fensters liegt. 
    Bit 0 = 1: Pixel sichtbar 
    Bit 0 = 0: Pixel unsichtbar 
    Bit 7 = 1: Pixelfarbe ist hell (gelb) 
    Bit 7 = 0: Pixelfarbe ist dunkel (violett) 
 
 
#ub#4.5  CLR#ue# 
 
control (-3, seite, muster, r) 
Füllt die angegebene Seite mit dem angegebenen Muster. 
 
Bit 7 des Musters bestimmt die Farbe (0 = dunkel, 1 = hell). Das Muster
wird zyklisch Spalten- und Zeilenweise wiederholt. muster=128 löscht z.B.
die Graphikseite. 
 
 
#ub#4.6  FILL#ue# 
 
control (-4, muster nummer, 0, return) 
Füllt eine beliebig durchgehend begrenzte Fläche mit dem angegebenen Mu-
ster. 
 
Das Muster ist eine 8 x 8 Matrix, die sich auf allen (pos MOD 8)-Pixel-
adressen wiederholt. Im NAND-Modus wird mit dem inversen Muster gefüllt.
Die Fläche muß dann aber mit unsichtbaren Pixeln begrenzt werden. 
 
Folgende Muster sind möglich: 
    0 = 'solid' (alles gefüllt) 
    1 = 'lrs2'  (jeder zweite Punkt, Zeilenweise versetzt) 
    2 = 'row4'  (jede 4. Zeile wird gefüllt) 
    3 = 'row2'  (jede 2. Zeile wird gefüllt) 
    4 = 'col4'  (jede 4. Spalte wird gefüllt) 
    5 = 'col2'  (jede 2. Spalte wird gefüllt) 
    6 = 'grid4' (jede 4. Spalte/Zeile wird gefüllt) 
    7 = 'grid2' (jede 2. Spalte/Zeile wird gefüllt) 
    8 = 'ls4'   (Schraffur links unten --> rechts oben, jede 4.) 
    9 = 'rs4'   (Schraffur rechts unten --> links oben, jede 4.) 
   10 = 'lrs4'  (Schräges Gitter wie 8 und 9 zusammen) 
   11 = 'point2'(In jeder 2. Zeile jeder 2. Punkt) 
   12 = 'wall4' (Mauer, ein Ziegelstein 4 Pixel hoch) 
   13 = 'basket'(Korb/Netz) 
   14 = 'wave4' (Wellenlinie 4 Pixel hoch) 
   15 = 'wave8' (Wellenlinie 8 Pixel hoch) 
 
Falls die zu füllende Fläche zu komplex wird, kann es vorkommen, daß der
interne Stack überläuft. In diesem Fall wird nicht die gesamte Fläche ge-
füllt. 
 
 
#ub#4.7  TRANS#ue# 
 
control (-9, from page, to page, r) 
Kopiert den Inhalt der Graphikseite 'from page' in die Seite 'to page'. 
 
Folgende Seitennummern sind möglich: 
    0 : Seite 0 kann mit 'visible page (0)' angezeigt werden 
    1 : Seite 1 kann mit 'visible page (1)' angezeigt werden 
    2 : Seite 2 kann nicht sichtbar werden (Hilfsspeicher-Seite) 
    3 : Ähnlich Seite 2, wird aber bei 'FILL' noch als Arbeitsseite benutzt
    (wird dann überschrieben!) 
 
#page#
#ub#5.  Hardware#ue# 
 
#ub#5.1  Zugriff auf die Hardware-Uhr#ue# 
 
Mit 'TEXT PROC calendar (INT CONST feld)' kann in Söhnen von SYSUR die
Hardware-Uhr gelesen werden. Für 'feld' sind folgende Werte zugeordnet: 
 
 0  Sekunden (0..59) 
 1  Minuten (0..59) 
 2  Stunden (0..23) 
 3  Tag des Monats (1..31) 
 4  Monat (1..12) 
 5  Jahr (87..99) 
 
Ist die Uhr richtig gestellt (das ist aus CP/M mit 'date set' möglich),
liefert jeder Aufruf von 'calendar' eine Zahl, anderenfalls wird immer
'niltext' geliefert und EUMEL fragt nach dem Systemstart nach dem Datum.
Dabei wird die Hardware-Uhr jedoch #ub#nicht#ue# gestellt. 
In diesem Fall ist der Akku wahrscheinlich entladen (Abhilfe: Rechner eini-
ge Stunden laufen lassen) oder die Uhr ist noch nicht gestellt worden (Ab-
hilfe: 'date set' im CP/M). 
 
In Tasks, die keine Söhne von SYSUR sind, kann die Hardware-Uhr mit 
 
 TEXT PROC calendar (INT CONST feld) : 
  INT VAR r ; 
  control (10, feld, 0, r) ; 
  text (r DIV 256 * 10 + (r AND 15)) 
 ENDPROC calendar ; 
 
abgefragt werden. 
 
 
#ub#5.2  Zugriff auf die Analog-Ports#ue# 
 
Die 4 Analog-Ports auf dem Motherboard können mit 
 
  control (-2, port, 0, r) 
 
abgefragt werden. 'port' kann 1..4 sein, in 'r' werden Werte von 1..255
zurückgemeldet. Dieser Wert ist proportional dem Widerstandswert zwischen
+5V und Analogeingang. 
 
Für Hardwarefreaks : 
 
    Port  Connectorpin 
    ------------------ 
      1         6 
      2        10 
      3         7 
      4        11 
     +5V        1 
 
Da der Meßwertaufnehmer ein 'LS123 mit C#d#t#e#=68nF, R#d#t#e#=0.27+R#d#x#e# kOhm ist, gilt:
t#d#w#e#=0.45 * R#d#t#e# * C#d#t#e# = (30.6 * R#d#x#e# + 8.262) [us]. t#d#w#e# wird gemessen. (t#d#w#e# = 11
Zyklen * r + 5 Zyklen bei 1.023 MHz) 
 ==> 30.6 * R#d#x#e# + 8.262 = (11 * r + 5) / 1.023 [us] 
<==> R#d#x#e# = ((11 * r - 5) / 1.023 -8.262) / 30.6 [kOhm] 
(Damit ist auch klar, warum der Wert 0 nicht geliefert wird.) 
 
R#d#x#e# [kOhm] = 0.351 * r + 0.43 
r = 2.846 * R#d#x#e# + 1.221 
 
 
#ub#5.3  Zugriff auf die I/O-Ports#ue# 
 
Das Schreiben #ub#und#ue# Lesen der I/O-Ports der CPU ist jetzt nur an privilegier-
ten Kanälen (25..32) möglich. 
 
  control (-1, port, -1, r) 
 
kann der angegebene Port 'port' (0..255) gelesen werden. Das Resultat (By-
te) steht dann in 'r'. Falls der aufrufende Kanal ungültig war, wird -1
geliefert. Mit 
 
  control (-1, port, wert, r) 
 
kann der angegebene Port 'port' (0..255) beschrieben werden. Der Bytewert
steht in 'wert', die Erfolgsmeldung in 'r' (0 = ok). 
 
 
#ub#5.4  ID-Felder#ue# 
 
Mit 'INT PROC id (INT CONST feld nr)' können Systemkonstanten abgefragt
werden. Für 'feld nr' sind folgende Werte zugeordnet: 
 
0  Minimale Hintergrundversion (175) 
1  Urladertyp (1 = Z80) 
2  Urladerversion (101 = Version 1.1) 
3  Reserviert 
4  Lizenznummer des SHards 
5  Installationsnummer 
6  Reserviert 
7  Versionsnummer des SHards: 1000 * Interfaceversion + SHard Version (ent-
   hält z.Zt. 8105, d.h. Interface 8, Version 1.5) 
 
#page#
#ub#6.  Installation#ue# 
 
#ub#6.1  Vortest/Speichertest#ue# 
 
Vortest und Speichertest sollten normalerweise durchgeführt werden. (Beide
Fragen mit 'j' beantworten). Wird kein Vortest gewünscht, wird automatisch
auch kein Speichertest durchgeführt und es besteht keine Möglichkeit, das
Hardwaretest-Menue aufzurufen. 
 
 
#ub#6.2  Konsole#ue# 
 
Die Blinkperiode des Cursor und die Tonhöhe des Steuercodes ""7"" kann
verändert werden (Sekunden bzw. Hertz). Defaults sind 0.8s und 500Hz. 
 
 
#ub#6.3  SCSI-Floppy#ue# 
 
Falls nicht SCSI-Floppy #0 sondern, falls vorhanden, SCSI-Floppy #1 als
Kanal 31 angesprochen werden soll, wird diese Frage mit 'n' beantwortet. 
 
 
#ub#6.4  Harddisk Volume#ue# 
 
Als Kanal 28 kann ein Harddisk-Volume angesprochen werden. Alle verfügbaren
Volumes werden angeboten und ein ausgewähltes wird im SHard als Kanal 28
installiert. Achtung: Sollte dieses Volume gelöscht, vergrößert oder ver-
schoben werden (durch CP/M) dann weiß SHard noch nichts davon. Deshalb
sollte der SHard nach einer solchen Aktion noch einmal installiert werden. 
Aus Sicherheitsgründen wird empfohlen, ein spezielles Volume einzurichten,
über das dann der Datenaustauch CP/M <--> EUMEL läuft. 
 
 
#ub#6.5  Logische Kanäle zuordnen#ue# 
 
Als logische Kanäle stehen Kanal 0..31 zur Verfügung, als physiche Kanäle
0..6 und 28..31. Den logischen Kanälen können fast beliebig physische Kanä-
le zugeordnet werden. 
Ausnahmen: 
- Der log. Kanal 0 (Hintergrund) muß als Blockkanal definiert werden (d.h.
  die physischen Kanäle 0, 28, 29, 30, 31 können zugeordnet werden.) 
- Der log. Kanal 1 (Systemkanal) muß als Stream-I/O-Kanal definiert werden
  (d.h. die physischen Kanäle 1, 2, 3, 5 können zugeordnet werden.) 
- Der log. Kanal 31 (Archiv) sollte definiert werden, dann aber als Block-
  kanal (d.h. die physischen Kanäle 0, 28, 29, 30, 31) können zugeorndet
  werden.) 
- Nicht jeder physische Kanal muß zugeordnet werden. 
- Jeder physische Kanal darf höchstens einmal zugeordnet werden. 
 
Hinweis: 
  EUMEL verwaltet Kanal 1..16 als (unprivilegierte) Stream-Kanäle, 
                  Kanal 17..24 als unprivilegierte Block-Kanäle, 
                  Kanal 25..31 als privillegierte Block-Kanäle. 
 
 
#ub#6.6  Installation auf Harddisk#ue# 
 
Wie früher kann der SHard auf einem Harddisk-Volume installiert werden.
Dazu werden alle vorhandenen EUMEL-Volumes angeboten und das gewünschte
ausgesucht. Falls kein EUMEL-Volume (mehr) vorhanden ist, werden alle ande-
ren Volumes angeboten. Dadurch ist es möglich ein neues EUMEL-Volume einzu-
richten (mit 'dmgr' unter CP/M). Der SHard belegt 2 Tracks (16k) auf der
Harddisk. 
 
 
#ub#6.7  Installation auf Floppy#ue# 
 
Um ganz auf eine Harddisk verzichten zu können oder falls der Harddisk-
SHard zerstört wurde, kann EUMEL jetzt auch über eine Boot-Diskette hochge-
fahren werden. Eine Bootdiskette (160k oder 640k) enthält auf den ersten 4
Tracks den SHard, kann deshalb nicht mehr als CP/M-Datendiskette verwendet
werden. 
Die Floppy kann mit dem Installationsprogramm bootfähig gemacht werden.