Descargar Imprimir esta página

AMSTRAD sinclair ZX Spectrum +3 Manual Del Usario página 224

Publicidad

Ejemplo de llamada a DOS CATALOGO
o
rg 7000h
mipila
equ 9FFFh
almpila
equ 9000h
bankm
equ 5B5Ch
puanal
equ 7FFDh
tampeat
equ 8000h
dos_catalogo
equ 011Eh
demo :
di
Id
(alrnpilel.sp
Id
be,puenal
Id
a.Ibankrn)
res
4,8
or
7
Id
(bankml.a
out
(el
.a
Id
sp,mipila
;valor
arbitrario,
inferior
a BFEOh
y
superior a 4000h
;un
sitio para
el
punte ro
de la
pila
da BASIC
;variable
de
sistema
que
contiene
el
último valor enviado a 7FFDh
;direeei6n de la
puerta
de
conm
utaei6 n
de
ROM
y
RAM en el mapa de E/S
;un sitio para
que
DOS
deposite
el
catá
logo
;direcci6 n de la
rut ina de DOS que vamos
a
invocar
;no debemos conmutar ROM
ni
RAM
sin
inhibir
interrupciones
;guardar puntero de pila
de
BAS
IC
;direeei6n de
pu
erta
de eonmutaci6n
de RAM
y
de
ROM
(horizontal )
;variable de sistema
que
contiene el estado
de
conmutación actual
;desplazar de
derecha
a izquierda en
el
conmutado r horizontal
de ROM (de 3 a
2
)
;encajar pág
ina
7
de
RAM
;es muy important
e mant ener
actualizada
esta
variable
de sistema
;realizar la conmutación
;tiene que estar
por
encima
de
4000h
y
por debajo de
BFEOh
;
La rutin a
anterior
ha encajado
la ROM de DOS
y la
página
7 de
RA M
,
y además ha puesto la pila
en un
lugar
;
seguro
para
poder invocar
el
sistema operativo
;
Lo que
sigue
prepara
las cosas para
invocar DOS_ CATALOGO
y
hace la
llamada
.
Aqul
es
donde
usted
pondrla su
;
programa .
Id
hl,tampcat
Id
oe.tampcet-e
1
Id
be.
1024
Id
(hl), O
Idir
Id
b,64
Id
c.t
Id
de .tarn pcat
Id
hl,asteaste
call
dos.Lcataío
qo
push
af
pop
hl
Id
(dosretl. hl
Id
c
.b
Id
b,O
;el sitio
dond e
DO
S nos
entregará el catálogo
;el
máximo es
en realidad
64x
13+ 13 =
645
;para que al menos
la
primera reseña esté 8 cero
;n
úm ero de
reseñas del tam
pón
;íncluir ficheros de sistem a
en el
catálogo
;dirección a
partir
de la
que
rellenaremos con
el
catálogo del
disco
;es el nombre de
fichero
("*. *")
;
hacer la llamada
a
la rut
ina de DOS
;guardar indicadores y el
posible
código
de
error
generado por DOS
;
ponerlo donde BASIC pueda verlo
;trasladar el número de ficheros al byt
e
bajo
da
BC
;esto as lo que nos entregará la fune
i6n
USR
en
BASIC
;
Si
todo ha ido
bien, BC contiene el número de ficheros que hay
en
el
catálogo;
la
zona
que emp
ieza en tampcat
:
contiene el catálogo alfanumérico, ordenado
alfabéticamente;
el indicador
de arrastre de dos
ret estará
a
1.
; Esto
lo
leeremos
en BASIC para ver si la rutina ha terminado
bien.
;
Despu és de
hacer
la llamada
a DOS tenemos que dejar
la
RAM
y la ROM como
estaban
y poner
BASIC
en el estado
en
; que se
encont raba al salir
de
él. Para ello necesitamos las siguientes
instrucciones:
di
push
be
Id
bc.
puerta l
Id
a.íbank rn)
set
4,a
and
F8h
Id
(bankm
),a
out
[el.a
pop
bc
Id
sp.(almpila )
ret
;porque
vam
os
a conmutar
la
RAM Y la ROM
;guardar número
de ficheros
;dirección del conmutador
horizontal
;leer el
estado de
conmutación actual
;desplazar de izquierda
a derecha
en el conmutado r
horizontal de
ROM (de
2 a 3)
;ancaja
r
página
O
de
RAM
;actualizar la variable de sistema
(mu
y
importante)
;realizar
la conmuta ción
;recuperar el
número de ficheros
;restablecer
la pila
de BA
St C
;reto rnar
a BASIC
(el valor
que
t
enemos en BC es
el
que entrag
ará USRI
Capítulo
8.
Guía de programacíón en +3 BASIC
214

Publicidad

loading