&CODIGOS
&AUTOR The Lawnmover Man / S.T.
&TITULO Usando TUDE a lo bestia
&PALETA $000,$FFF,$FE3,$F82,$F00,$900,$F0E,$80E,$0F0,$9F0,$080,$3FE,$28F,$96F,$44F,$00A

&FIN
T04
                          Usando TUDE a lo bestia!!!
                          -=-=-=-=-=-=-=-=-=-=-=-=-=

T01        Casi  desde  que  me compré el A1200 he tenido muchísimos problemas
con  demos,  juegos  y  programas que no iban bien en el ordenador debido a
problemas de incompatibilidad por la mala costumbre de muchos programadores
de  hacer  las rutinas en ensamblador a lo bestia y sin tener en cuenta los
modelos  futuros del Amiga.  Como muchos sabrán estos problemas eran debido
sobretodo  a  los  AGA  y  al 68020 del A1200.  Si ya encima le metemos una
Blizzard  030 o similar el grado de incompatibilidad con programas antiguos
se incrementa de forma alarmante. 

        Después de estar mirando y sacando programas DEGRADERS desde AmiNet
creo  que  por  fin  he  encontrado  una forma de cargar casi el 70% de los
programas que no van en el A1200 a pesar de desconectar los AGA.  Para ello
necesitamos  de  una utilidad llamada TUDE que es totalmente FREEWARE y que
podemos  encontrar  en cualquier librería de dominio público, BBS o AmiNet.
Acto seguido necesitamos una imagen de la ROM del Kickstart 1.3.  Para ello
hay  que  hacer un volcado desde la dirección F8000 hasta la FFFFF.  Son en
total  256Kb.   Para  hacer  esto  podeis usar un programa llamado GrabKick
también  de  dominio  público  o  compilad  el source que viene al final de
artículo en cualquier ensamblador y ejecutarlo en el Amiga 500. 

        Ahora que ya tenemos todo hecho es hora de crearnos un diskette que
T01hará  de "degradador" del A1200 a un "casi A500".  Para ello formateamos un
diskete de manera "booteable". Para ello usamos la instrucción INSTALL DF0:
del  CLI.  Tras ello creamos un directorio llamado C en el diskete donde ir
el  ejecutable del TUDE, otro llamado S donde irá el Startup-Sequence y por
último  la imagen de la ROM del 1.3 la grabamos en la raíz del disco con el
nombre  KICK34005.A500.  Este nombre es muy importante pues si no es así el
TUDE no reconocerá la ROM y pasará olímpicamente de cargarla.

        Ya tenemos casi todo listo.  Ahora de lo que se trata es de usar un
editor  de  texto donde crearemos el fichero STARTUP-SEQUENCE que irá en el
directorio S del diskette y que incluirá las siguientes líneas:

T03TUDE DEGRADE
TUDE CHIPMEM=1024KB
TUDE KICKSTART1.3T01

        Y ya está todo listo.  Metemos el diskette en la unidad, reseteamos
y  cuando termine de cargar habremos convertido el A1200 en un A500 con 020
y 1MB de CHIP RAM.  Si omitimos segunda línea tendremos toda la memoria que
queramos.   Si  tenemos  FAST  RAM  es recomendable desconectarla si usamos
programas muy antiguos. También es posible usar 512Kb de memoria como en el
A500 sin ampliar. Para ello cambiar la segunda línea por TUDE CHIPMEM=512Kb

        Os  aseguro  que el número de programas que os cargarán ahora y que
antes  no  lo  hacían es alarmante.  He llegado a cargar incluso juegos tan
T01antiguos como el Army Moves o el Bomb Jack que antes no conseguía cargar ni
de pura coña. 

        Espero  que  este  artículo os haya sido provechoso a todos los que
tengais el A1200 y esteis hartos de no poder usar muchos programas antiguos
por  culpa  de  la  mala programación de algunos coders.  Si alguien quiere
ponerse  en  contacto  conmigo para que le pase cualquiera de los programas
que he mencionado antes así como el TUDE puede escribirme a:

        The Lawnmover Man / Suicidal Tendencies
        C/Carlos J.R. Hamilton. Daida C. 308
        38001 Santa Cruz de Tenerife


T08Source para grabar la ROM del A500 en un fichero
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

T01        Tras compilar este source ejecutarlo con:

        RIPROM Kick34005.A500

T11

        SECTION RipKickROM,CODE
*
        INCLUDE	"exec/types.i"
        INCLUDE	"exec/exec.i"
        INCLUDE	"libraries/dos.i"
*
        xref    _AbsExecBase            exec.library base address
        xref    _LVOOpenLibrary         exec.library	subroutine
        xref    _LVOCloseLibrary        exec.library	subroutine
        xref    _LVOOpen                dos.library	subroutine
        xref    _LVOClose               dos.library	subroutine
        xref    _LVOWrite               dos.library	subroutine
*
        movea.l _AbsExecBase,a6	        Move exec.library address
        cmpi.l  #2,d0                   Check for Entered Filename
        blt.s   useit                   None entered, goto useit
        move.b  #0,-1(a0,d0.L)          else, overlay '0a'x with '00'x
        move.l  a0,d4                   and save Filename address
        bra.s   OpenLib                 goto OpenLib
useit   lea     FName,a0                Load address of Default Filename
        move.l  a0,d4                   and save it
OpenLib	lea     Dname,a1                Load dos.library
        moveq.l #0,d0                   version 0
        jsr     _LVOOpenLibrary(a6)     and open it
        movea.l d0,a6                   Move dos.library address
        move.l  d4,d1                   Move address of Filename
        move.l  #MODE_NEWFILE,d2        Mode = OUTPUT
        jsr     _LVOOpen(a6)            Open file
        tst.l   d0                      test open
        beq.s   ClosLib                 Bad open, goto ClosLib
        move.l  d0,d4                   Save File pointer in d4
        move.l  d0,d1                   Move File pointer to d1
        move.l  #$f80000,d2             Move KickROM address to d2
        move.l  #262144,d3              Move 256K to d3
        jsr     _LVOWrite(a6)           Write file
        move.l  d4,d1                   Move File pointer to d1
        jsr     _LVOClose(a6)           Close file
ClosLib	move.l  a6,a1                   Load dos.library address
        movea.l _AbsExecBase,a6         Load exec.library address
        jmp     _LVOCloseLibrary(a6)    Jump to CloseLibrary
*                                       CloseLibrary will return to System
FName	dc.b    "RAM:KickStart.ROM",0
Dname	dc.b    "dos.library",0
Version	dc.b    "$VER: RipKickROM 2.1 (4.11.95)",0
	end
