Received: from mea.utu.fi by MAMMUTTI.UTU.FI ; 18 Feb 90 16:56:01 EET
Received: by mea.utu.fi (5.51/10.6.master) id AA10536; Sun, 18 Feb 90 16:58:46
 +0200
Message-Id: <9002181458.AA10536@mea.utu.fi>
From: mea@mea.utu.fi (Matti Aarnio)
Subject: reboot a PAL machine into NTSC (fwd)
To: fys-ma@fintuvm.bitnet
Date: Sun, 18 Feb 90 16:58:45 EET
X-Mailer: ELM [version 2.2 PL10]
 
Forwarded message:
 
From I-AMIGA@finhutc.BITNET  Sun Feb 18 13:04:55 1990
Message-Id: <9002181104.AA09742@mea.utu.fi>
Date: Sun, 18 Feb 90 12:52:51 +0200
From: FINKEL@TAURUS.BITNET
Subject: reboot a PAL machine into NTSC
Sender: Info-Amiga List <I-AMIGA@finhutc.BITNET>
To: Matti Aarnio <mea@MEA.UTU.FI>
Reply-To: finkel@math.tau.ac.IL
Comments: If you have trouble reaching this host as math.tau.ac.il Please use
 the old address: user@taurus.bitnet
Comments: <Parser> W: Field "Resent-From:/From:" duplicated. Last occurence was
 retained.
Comments: <Parser> W: Field "FROM:" duplicated. Last occurence was retained.
X-To:         comp-sys-amiga-tech@ucbvax.berkeley.edu, i-amiga@finhutc
 
Hello everyone,
 
This is a program I wrote last night to reboot a PAL machine into
NTSC mode. You must have the new Agnus chip, and Kickstart 1.3 .
The program relies on static location of certain Kickstart 1.3
ROM instructions, so it MUST be modified for Kickstart 1.2 . Are there
any users of the new Agnus chip users with Kickstart 1.2??
 
The program has been tested on a PAL A500 with a super Agnus chip,
a fully populated A590, Kickstart 1.3 ROM, and a Rev 3 motherboard
hacked to contain the super Agnus chip.
 
The program should work as is on 2000's as well, but I didn't
test it. Again, it will *not* work with Kickstart 1.2 .
 
The program can be easily modified to reboot an NTSC machine in PAL
mode, but I remember reading that the american monitors can't work
in PAL mode, while the european monitors can work in both modes.
( This was verified by me ;-) ).
 
I could modify it to be more user-friendly ( find the appropriate
address in the Kickstart ROM at run time, etc. ), but I was too
lazy to do this ;-) ( actually, I had an exam the next morning so I
didn't have too much time improving it ).
 
Since our Usenet connection has been down for the last 3 weeks, any
comments should be mailed to me directly, and not posted.
 
Enjoy!
------------ cut ----------- cut ---------- cut -------------------
 
#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create:
#       NTSCBoot.asm
#       NTSCBoot.uue
# This archive created: Sun Feb 18 12:42:09 1990
export PATH; PATH=/bin:/usr/bin:$PATH
echo shar: "extracting 'NTSCBoot.asm'" '(2487 characters)'
if test -f 'NTSCBoot.asm'
then
    echo shar: "will not over-write existing file 'NTSCBoot.asm'"
else
sed 's/^X//' << \SHAR_EOF > 'NTSCBoot.asm'
X;
X; NTSCBoot.asm
X;
X; Copyright (C) 1990 By Udi Finkelstein.
X; 17 feb 1990
X;
X; Reboot a SuperAgnus equipped PAL machine into NTSC mode.
X;
X; With thanks to Bart Whitebrook from CBM for his article on the new ECS
X; registers in the 3rd european DevCon notes!
X
X; get into supervisor state, since we can only execute RESET there.
X       xref    _LVOSuperState
X       move.l  4,a6
X       jsr     _LVOSuperState(a6)
X
X; ************************************
X; Warning!!! a grand hack ahead!!!!!!!
X; Never do this stuff alone at home!!!
X; ************************************
X
X; Now we are in supervisor mode, and can issue a RESET command.
X; Unfortunately, after RESET there is no RAM in the system!
X; We can issue exacly *one* instruction ( 1 word length ) because
X; the instruction was fetched before RESET was executed. This
X; instruction can be a 'jmp (aX)', to somewhere on the ROM, where the
X; program can continue. After searching the Kickstart 1.3 ROM, I found
X; that at address $ff4120 you can find the code:
X
X; [ Notice - for Kickstart 1.3 ***ONLY***!!! Is there anybody out there
X;   with a Kickstart 1.2/super Agnus combination? you have a problem! ;-) ]
X
X;00FF4120 2741 0038              move.l  d1,$38(a3)
X;00FF4124 4281                   clr.l   d1
X;00FF4126 4ED6                   jmp     (a6)
X
X; We can use this code fragment to set the NTSC bit in the super agnus,
X; and then jump to the reset code. The PAL/NTSC bit is contained in
X; address $DFF1DC   (BEAMCON0 !).
X;
X; 'move.l d1,$38(a3)' writes a longword, therefor $38(a3) must point to
X; $dff1da because it's a read only location, which we can't harm, and
X; $dff1dc contains the PAL/NTSC bit.
X; $38(a3) == $dff1da   -->  a3 == $ddf1a2
X; we must reset d1 ofcourse, or set d1 == #$00000020 to set PAL mode.
X;
X; ofcourse we have to set a6 to $00000002 to run the reset code later.
X;
X
XROMADR =       ($ff4120-$fc0000)
X
X; ROMADR points to $ff4120 after the ROM appears in address $0000.
X
X       lea.l   $dff1a2,a3
X       move.l  #$0,d1
X       move.l  2,a6
X       cnop    0,4
X       lea.l   ROMADR,a5
X       RESET                   ;reset the machine...
X       jmp     (a5)            ;execute our code fragment.
X
X; Well, that's it. I tried writing a more portable code by trying to
X; set/reset the OVL bit in $BFE001 instead of 'jmp (aX)' after RESET,
X; but I wasn't able to get it working, so the only way I found to run
X; a code after RESET is to find a ROM fragment that happenes to match
X; my requirement. You don't have to tell me how bad it is. Hopefully,
X; the 1.4 preferences will have a PAL/NTSC software switch ( Will it?!!)
X
X       END
SHAR_EOF
if test 2487 -ne "`wc -c < 'NTSCBoot.asm'`"
then
    echo shar: "error transmitting 'NTSCBoot.asm'" '(should have been 2487 chara
fi
fi
echo shar: "extracting 'NTSCBoot.uue'" '(133 characters)'
if test -f 'NTSCBoot.uue'
then
    echo shar: "will not over-write existing file 'NTSCBoot.uue'"
else
sed 's/^X//' << \SHAR_EOF > 'NTSCBoot.uue'
X
Xbegin 644 NTSCBoot
XM```#\P`````````!```````````````(```#Z0````@L>``$3J[_:D?Y`-_Q0
X7HG(`+'@``DOY``-!($YP3M5.<0```_((_
X``
Xend
Xsize 68
SHAR_EOF
if test 133 -ne "`wc -c < 'NTSCBoot.uue'`"
then
    echo shar: "error transmitting 'NTSCBoot.uue'" '(should have been 133 charac
fi
fi
exit 0
#       End of shell archive
 
 
