¡Jarl, torpedos!
Hago una pregunta con mucho ware, jiji: ¿se puede acceder al Fatware desde el software? Uséase, ¿puedo hacer un pograma en ensamblador, de tal manera que mediante alguna instrucción OUT acceda a la tarjeta CF de un divIDE?
Lo pregunto porque se me ha ocurrido la siguiente paranoia: hacer un pograma en ensamblador que muestre una lista de juegos (la lista no la leería de la CF, sino que estaría embebida en el propio código fuente del pograma), y con los cursores me manejo, y al pulsar ENTER, cargo el TAP de ese juego. Sería algo así como sustituir el propio Fatware por un pograma que estaría en la misma CF.
Y la idea si se aplica al ResiDOS ya sería lo máximo: conseguiríamos visualizar los juegos con todos sus caracteres, y no sólo truncado a 8 caracteres.
¿Se puede?
Acceso a FATWARE por software
- Kyp
- Commodore 128
- Mensajes: 80
- Registrado: 31 Dic 2013, 12:42
- Sistema Favorito: Commodore Amiga
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Vectrex
- Primera consola: Vectrex
- Gracias dadas: 11 veces
- Gracias recibidas: 10 veces
Re: Acceso a FATWARE por software
Si se puede, el hardware del interfaz IDE es independiente del harware de mapeo de la RAM/ROM.
Por ejemplo, esto envía el comando IDENTIFY y lee los 512 bytes de respuesta del dispositivo:
He hecho un poco de copy/paste de mi proyecto inacabado de firmware alternativo para el DivIDE, igual he copiado algo mal o me he dejado algo sin copiar pero para coger la idea creo que te vale. Toda la información la tienes en la web del DivIDE de velesoft.
Por ejemplo, esto envía el comando IDENTIFY y lee los 512 bytes de respuesta del dispositivo:
Código: Seleccionar todo
ioData equ $a3 ; RW Data
ioDevice equ $bb ; RW Drive/LBA bits 24 to 28
ioStatus equ $bf ; R- Status
ioCommand equ $bf ; -W Command
ioControl equ $e3 ; -W memory mapping control
ataDev0 equ $a0 ; device 0 (master)
ataIdentify equ $ec ; Identify device
ataSbReady equ 6
ataSmFault equ $20 ; Device Fault
ataSmError equ $01 ; Error
ataBuffer ds 512
;-------------------------------------------------------------------------------
Identify ; read device identify data
;-------------------------------------------------------------------------------
; input ataBuffer (buffer of 512 bytes to store identify data)
;-------------------------------------------------------------------------------
; output: Z flag clear if error
.busy in a,(ioStatus) ; wait while busy
rlca
jr c,.busy
ld a,ataDev0 ; set device 0
out (ioDevice),a
ld a,ataIdentify ; set command
out (ioCommand),a
nop ; 400 ns delay
.ready in a,(ioStatus) ; wait until ready
bit ataSbReady,a
jr z,.ready
and ataSmFault|ataSmError
ret nz ; ERROR
ld hl,ataBuffer ; hl = data buffer
ld bc,ioData ; b = 0 (repeat 256 times), c = data port
inir ; read 256 bytes
inir ; read 256 bytes
xor a ; SUCCESS
ret
He hecho un poco de copy/paste de mi proyecto inacabado de firmware alternativo para el DivIDE, igual he copiado algo mal o me he dejado algo sin copiar pero para coger la idea creo que te vale. Toda la información la tienes en la web del DivIDE de velesoft.
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 17 invitados