L'elenco delle device.

Come sapere  in tempo reale quali  sono de device utilizzabili
sul nostro sistema.

                                          di Giorgio Garabello

Tempo addietro,  precisamente nel numero 5  di QL Magazine, vi
abbiamo  proposto in un'articolo una  soluzione per gestire le
directory come se fossero un database.
Piu'  recentemente, e  precisamente nel  numero 8,  vi abbiamo
presentato  in un altro articolo  le basi della programmazione
ricorsiva, classica metodologia di programmazione per scrivere
funzioni di gestione delle directory.
Mancava  un'ultima parte, quella  relativa alla determinazione
delle  device disponibili sul vostro sistema, un metoodo ossia
per verificare quali memorie di  massa  siao  presenti  in  un
determinato momento sul vostro QL.

Ecco a voi una piccola routine SuperBASIC per stampare a video
questo elenco.
Sara'  poi facile per voi trasformare  la scrittura a video in
un  caricamento di tabella  o in quant'altro  vi possa tornare
utile nel vostro programma.

Ecco a voi il listato:

100 REMark list directory devices
110 CLS
120 sysvar = 163840 : REMark locate system variables
130 v$ = VER$
140 IF v$ = 'JSL1' OR v$ = 'HBA' THEN sysvar = VER$(-2)
150 addr = PEEK_L(sysvar+72) : REMark directory drivers list
160 REPeat read_all
170   REMark pointer to length of device name
180   addr1 = addr+36
190   length = PEEK_W(addr1)
200   REMark get all characters of name
210   devicename$ = ''
220   FOR char = 2 TO length+1
230     devicename$ = devicename$&CHR$(PEEK(addr1+char))
240   END FOR char
250   PRINT devicename$
260   REMark next entry in linked list
270   addr = PEEK_L(addr)
280   REMark if pointer = 0 then end of list
290   IF addr = 0 THEN EXIT read_all
300 END REPeat read_all
 
Notate come la routine sia  non  solo  estremamente  solida  e
compatta, ma  sia  anche  indipendente  dal  tipo  di  sistema
operativo utilizzato.
Infatti se guardate la linea   140  potete  vedere  che  viene
controllata la versione del sistema operativo.

L'esecuzione di questo piccolo programma sul mio sistema da il
seguente risultato:

CDR
WIN
N

FLP
RAM
DEV

Notate due cose.

La prima  e'  che  l'identificatore  del  numero  di  stazione
network  QL (N) viene riconosciuto come device; occorre quindi
che sia  il programma applicativo ad  unire numero di stazione
alla device dera e propria.

La seconda  cosa e' quel "buco"  in quarta posizione; purtoppo
non sono in grado  di  spiegarlo,  mi  rivolgo  quindi  a  voi
lettori per risolvere questo piccolo mistero.