The following warnings occurred:
Warning [2] Undefined array key 0 - Line: 1677 - File: showthread.php PHP 8.2.31 (Linux)
File Line Function
/inc/class_error.php 157 errorHandler->error
/showthread.php 1677 errorHandler->error_callback
/showthread.php 916 buildtree




Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Radastan mode in ZX Basic
#3
Code:
sub UnoSetSpeed(mode) '0=3.5 Mhz, 1=7 MHz, 2=14 MHz, [3=28 MHz] out 36411,mode end sub

Code:
sub RadastanSprite(x as ubyte, y as ubyte,address as uinteger) ' RUTINA DE IMPRESION DE UN SPRITE 8x8 PIXELS ' EN CUALQUIER POSICION DE BYTES (cada byte dos pixels horizontales) ' ENTRADAS: ' D será la posición del cursor vertical en pixels ' E será la posición del cursor horizontal en parejas de pixels ' HL es la posición de memoria donde tenemos el sprite ' SALIDAS: se escribe en el mapa de pantalla ' ADVERTENCIAS: no comprueba límites de pantalla asm ld E,(IX+5) ;' get x value ld D,(IX+7) ;' get y value LD L,(IX+8) ;' data address LD H,(IX+9) ld a, d ;' recuperamos el valor vertical rrca rrca ;' rotamos para dejar su valor en múltiplos de 64 (linea, de dos en dos pixels) and 192 ;' borramos el resto de bits por si las moscas or e ;' sumamos el valor horizontal ld e, a ;' e preparado ld a, d ;' cargamos el valor vertical rrca rrca ;' rotamos para quedarnos con los bits altos and 63 ;' borramos el resto de bits or 64 ;' nos posicionamos a partir de 16384 (16384=64+0 en dos bytes) ld d, a ;' d preparado, ya tenemos la posición en pantalla ld b, 8 ;' Indicamos que vamos a pintar 8 líneas RadSptDrw: ;' dibujamos 8 pixels (4 bytes) ld c, 4 ;' Indicamos que vamos a pintar 4 pares de pixels ldi ldi ldi ldi ld a, e add a, 60 ;' incrementamos una línea y retornamos los pixels dibujados ld e, a jr nc, sigue inc d ;' incrementamos D si sale acarrero al incrementar E en 64 bytes sigue: djnz RadSptDrw end asm end sub

Code:
sub StartRadastanMode() out 48955,64 'ULAplus reg. $40, bits 0 and 1 set to 1 out 65339,3 if in(65339)<>3 OUT 64571,64 OUT 64827,3 end if end sub

Code:
sub RadastanSprite10(x as ubyte, y as ubyte,address as uinteger) ' { ' // ------------------------------------------- ' // RUTINA DE IMPRESION DE UN SPRITE 10x10 PIXELS ' // EN CUALQUIER POSICION DE BYTES (cada byte dos pixels horizontales) ' // ENTRADAS: ' // D será la posición del cursor vertical en pixels ' // E será la posición del cursor horizontal en parejas de pixels ' // HL es la posición de memoria donde tenemos el sprite ' // SALIDAS: se escribe en el mapa de pantalla ' // ADVERTENCIAS: no comprueba límites de pantalla ' // ------------------------------------------- asm ld E,(IX+5) ;' get x value ld D,(IX+7) ;' get y value LD L,(IX+8) ;' data address LD H,(IX+9) ld a, d ;' recuperamos el valor vertical rrca rrca ;' rotamos para dejar su valor en múltiplos de 64 (linea, de dos en dos pixels) and 192 ;' borramos el resto de bits por si las moscas or e ;' sumamos el valor horizontal ld e, a ;' e preparado ld a, d ;' cargamos el valor vertical rrca rrca ;' rotamos para quedarnos con los bits altos and 63 ;' borramos el resto de bits or 64 ;' nos posicionamos a partir de 16384 (16384=64+0 en dos bytes) ld d, a ;' d preparado, ya tenemos la posición en pantalla ld b,10 ;' Indicamos que vamos a pintar 10 líneas RadastanSprite10draw3: ;' dibujamos 10 pixels (5 bytes) ld c,5 ;' Indicamos que vamos a pintar 5 pares de pixels ldi ldi ldi ldi ldi ld a,e add a,59 ;' incrementamos una línea y retornamos los pixels dibujados ld e,a jr nc, RadastanSprite10sigue3 inc d ;' incrementamos D si sale acarrero al incrementar E en 64 bytes RadastanSprite10sigue3: djnz RadastanSprite10draw3 end asm end sub

Code:
sub rplot(x as ubyte,y as ubyte,color as ubyte) asm ld D,(IX+7) ld E,(IX+5) ;' get x value rr e ;' quitamos el valor de las unidades (los pixels van de dos en dos por byte) ld a,0 jr c, rplotnext ;' si es impar no hacemos nada (se dibuja por defecto a la derecha) ld a,1 rplotnext: LD L,(IX+9) ld h,a ld a, d ;' recuperamos el valor vertical rrca rrca ;' rotamos para dejar su valor en múltiplos de 64 (linea, de dos en dos pixels) and 192 ;' borramos el resto de bits por si las moscas or e ;' sumamos el valor horizontal ld e, a ;' e preparado ld a, d ;' cargamos el valor vertical rrca rrca ;' rotamos para quedarnos con los bits altos and 63 ;' borramos el resto de bits or 64 ;' nos posicionamos a partir de 16384 (16384=64+0 en dos bytes) ld d, a ;' d preparado, ya tenemos la posición en pantalla ld a,(de) rr h jr c, rplotnext2 and 240 or l jr rplotfin rplotnext2: and 15 rl l rl l rl l rl l or l rplotfin: ld (de), a end asm end sub
------------------------------------------------------------
http://lcd-one.da.ru redirector is dead
Visit my http://members.inode.at/838331/index.html home page!
Reply


Messages In This Thread

Forum Jump:


Users browsing this thread: 1 Guest(s)