| 
 | 
 | 
 | 
La Unidad de Disco 1541 es un dispositivo flexible en sí mismo, al contener una CPU, RAM y ROM, es una pequeña computadora que puede ejecutar muchas órdenes.
Si está buscando una referencia más completa con multitud de ejemplos, eche un vistazo al manual original del C1541. Se encuentra disponible en formato texto en: http://project64.c64.org.
Utilice el siguiente programa para enviar una orden al disco.
10 OPEN 1, 8, 15 ; Abre el Canal de Ordenes 20 PRINT#1, Orden$ ; Envía la Orden 30 CLOSE 1 ; Cierra el Canal
Con el siguiente programa puede mostrar el estado actual del disco.
10 OPEN 1, 8, 15 ; Abre el Canal de Errores 20 INPUT#1, NE$, ER$, PT$, SC$ ; Lee el Mensaje 30 CLOSE 1 ; Cierra el Canal 40 PRINT "N. Error: "; NE$ ; Muestra los Resultados 50 PRINT "Error : "; ER$ 60 PRINT "Pista : "; PT$ 70 PRINT "Sector : "; SC$
Power64 emula las siguientes órdenes para las unidades de disco 1541 emuladas:
OPEN 15, 8, 15            ; Abre el Canal de Ordenes
OPEN  5, 8, 5, "ArchivoRelativo,L,";CHR$(40)
                          ; Crea un Archivo Relativo con un tamaño
                          ; de grabación de 40 Bytes
PRINT#15,"P"+CHR$(5)+CHR$(17)+CHR$(0)+CHR$(1)
                          ; Establece la Posición del Archivo en
                          ; el primer Byte del Registro 17
                          ; (La numeración para Registros y
                          ; Posición de Bytes comienza con 1
                          ; (no con 0))
PRINT#5,"Datos"           ; Escribe Datos
PRINT#15,"P"+CHR$(5)+CHR$(9)+CHR$(0)+CHR$(4)
                          ; Establece la Posición del Archivo
                          ; en el cuarto Byte del Registro 9
                          ; (La numeración para Registros y
                          ; Posición de Bytes comienza con 1
                          ; (no con 0))
INPUT#5,X$                ; Lee Datos
CLOSE 5                   ; Cierra el Canal
CLOSE 15                  ; Cierra el Canal de Orden
OPEN 15, 8, 15            ; Abre el Canal de Ordenes
OPEN  5, 8, 5, "#"        ; Abre el Canal 5 hacia el buffer de RAM
PRINT#15,"B-R: 5 0 18 2"  ; Lee la Pista 18 / Sector 2 en el
                            buffer por el canal 5
PRINT#15,"B-P: 5 0"       ; Sitúa el Puntero al Inicio del Bloque
FOR I = 0 TO 253          ; Un Bloque tiene como máximo 254 Bytes
GET#5, A$                 ; Obtiene otro Byte
IF (ST <> 0) THEN ...     ; Comprueba si es el Final del Bloque
   ...                    ; Procesa el Byte
NEXT I
CLOSE 5                   ; Cierra el Canal
CLOSE 15                  ; Cierra el Canal de Orden
OPEN 15, 8, 15            ; Abre el Canal de Orden
OPEN  5, 8, 5, "#"        ; Abre el Canal 5 hacia el buffer de RAM
PRINT#5, X$               ; Escribe una cadena de caracteres
PRINT#5, Y$               ; Escribe otra cadena de caracteres
PRINT#5, Z$               ; Escribe aún otra cadena de caracteres
                            (total: máx. 254 Bytes)
PRINT#15,"B-W: 5 0 18 2"  ; Escribe en la Pista 18 / Sector 2
                            desde el buffer por el canal 5
CLOSE 5                   ; Cierra el Canal
CLOSE 15                  ; Cierra el Canal de Ordenes
OPEN 1, 8, 15                ; Abre el Canal de Ordenes
PRINT#1,"B-A: 0 12 7"        ; Señala el Bloque en la
                             ; Pista 12 y Sector 7
INPUT#1, NE$, ER$, PT$, SC$  ; Obtiene el sector que se ha señalado
CLOSE 1                      ; Cierra el Canal de Orden/Error
PRINT "Pista:;PT$;"Sector";SC$
OPEN 1, 8, 15 ; Abre el Canal de Ordenes PRINT#1,"B-F: 0 12 7" ; Libera el Bloque en la Pista 12 y Sector 7 CLOSE 1 ; Cierra el Canal de Ordenes/Errores
OPEN 1, 8, 15             ; Abre el Canal de Ordenes
PRINT#1, "M-R"+CHR$(52)+CHR$(18)+CHR$(3)
                          ; Especifica 3 Bytes
                          ; comenzando en la dirección $1234
GET#1, A$, B$, C$         ; ¡Obtiene todos los Valores de una vez!
CLOSE 1                   ; Cierra el Canal
OPEN 1, 8, 15        ; Abre el Canal de Ordenes
PRINT#1, "I"         ; ¡Primero Inicializa la Unidad de Disco!
PRINT#1, "M-W"+CHR$(52)+CHR$(18)+CHR$(8)
                     ; Especifica la Dirección $1234 y 8 Bytes
PRINT#1, "POWER64"   ; Escribe 8 Bytes (incluye Retorno de Carro)
CLOSE 1              ; Cierra el Canal
OPEN 1, 8, 15             ; Abre el Canal de Ordenes
PRINT#1, "/:SubDir,"+CHR$(12)+CHR$(0)+CHR$(232)+CHR$(3)+",C"
      ; Crea una Partición: 1000 Bloques desde Pista 12, Sector 0
      ; 1000 = 3*256 + 232 = 25*40
PRINT#1, "/:SubDir"       ; Se Coloca en la Nueva Partición
PRINT#1, "N:POWER64,64"   ; Formatea la Partición
PRINT#1, "/"              ; Vuelve al Directorio Raíz
CLOSE 1                   ; Cierra el Canal
Una partición debe cumplir algunos requerimientos para poder ser un subdirectorio
.) Debe tener al menos un tamaño de 120 bloques
.) Su tamaño debe ser múltiplo de 40 bloques
.) Tiene que empezar en el sector 0 de una pista
|   |           |   | 
| Fuente: http://www.salto.at/Power64/Documentation/Power64-Leame/AB-Ordenes_Disco.html Power64 Homepage: http://www.infinite-loop.at y http://www.salto.at - EMail: © Roland Lieger, Goethegasse 39, A-2340 Mödling, Austria - Europe Últiomo Modificación: 29 de Febrero de 2008 |   |