amiga-request@abcfd20.larc.nasa.gov (Amiga Sources/Binaries Moderator) (10/11/90)
Submitted-by: RWALLACE@vax1.tcd.ie Posting-number: Volume 90, Issue 276 Archive-name: util/terminator-1.0/part01 [ uuencoded executable enclosed ...tad ] This is a highly effective program to defend your system against boot block viruses. The Terminator can be run from the CLI or Workbench. A window will come up with a selection of commands. Typing a number from 0 to 3 will protect/sterilize that floppy drive, typing Q will quit the program. The way The Terminator works is simple: It puts code in the boot block of the designated disk which causes the screen to flash red and yellow stripes for a fraction of a second on boot-up. The screen remains yellow for another couple of seconds of the boot process. If a virus infects that disk it will overwrite this code and the screen will no longer flash on boot-up. This provides warning of the virus infection. #!/bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh <file", e.g.. If this archive is complete, you # will see the following message at the end: # "End of archive 1 (of 1)." # Contents: Terminator.c Terminator.doc Terminator.uu Terminator0.uu # Terminator1.uu bootcode.a # Wrapped by tadguy@abcfd20 on Wed Oct 10 20:32:38 1990 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'Terminator.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'Terminator.c'\" else echo shar: Extracting \"'Terminator.c'\" \(2440 characters\) sed "s/^X//" >'Terminator.c' <<'END_OF_FILE' X/* XThe Terminator virus killer by Russell Wallace XSee documentation file for details XCompiled with Aztec C v3.4a using precompiled INCLUDE files and 16-bit ints XOther module bootcode.o must be assembled with the Aztec assembler as Xdetailed in the file bootcode.a XNB - Must be linked with data/BSS in chip memory using +CDB with Aztec Xlinker, because trackdisk.device buffers have to be in chip memory X*/ X Xstruct MsgPort *diskport; Xstruct IOStdReq *diskreq; Xstruct FileHandle *window; Xint unit; /* Disk drive 0..3 */ Xchar buffer[2]; /* Drive number */ Xlong code[256]; /* Buffer for boot block code */ Xextern long bootcode[20]; /* 80 bytes of actual code in separate module */ X Xmain (argc,argv) Xint argc; Xchar **argv; X{ X int i; X for (i=0;i<20;i++) X code[i]=bootcode[i]; /* Copy boot code into buffer */ X /* This is so memory after actual code will contain zeros */ X if (!(window=Open ("CON:0/50/640/120/The Terminator v1.0",MODE_NEWFILE))) X exit (30); X print ("The Terminator virus killer by Russell Wallace 6 Feb 1989\n\ XWARNING - DO NOT USE ON A DISK WITH A CUSTOM BOOT BLOCK!\n"); XRETYPE: X print ("\ XEnter a number from 0 to 3 to protect/sterilize that floppy drive\n\ Xor type Q to quit: "); X Read (window,buffer,2L); X buffer[1]=0; X if (buffer[0]=='q' || buffer[0]=='Q') X { X Close (window); X return; X } X unit=buffer[0]-'0'; X if (unit<0 || unit>3) X goto RETYPE; X print ("Installing boot code on drive "); X print (buffer); X print ("...\n"); X X /* Initialize for use of trackdisk.device */ X X if (!(diskport=CreatePort (0L,0L))) X { X Close (window); X exit (30); X } X if (!(diskreq=CreateStdIO (diskport))) X { X DeletePort (diskport); X Close (window); X exit (29); X } X if (OpenDevice (TD_NAME,(long)unit,diskreq,0L)) X { X DeleteStdIO (diskreq); X DeletePort (diskport); X Close (window); X exit (28); X } X X /* Write stuff */ X X diskreq->io_Length=1024; X diskreq->io_Data=code; X diskreq->io_Command=CMD_WRITE; X diskreq->io_Offset=0; X DoIO (diskreq); X X /* Force update of track buffer to disk */ X X diskreq->io_Command=CMD_UPDATE; X DoIO (diskreq); X X /* Turn motor off */ X X diskreq->io_Length=0; X diskreq->io_Command=TD_MOTOR; X DoIO (diskreq); X X /* Clean up and go back to menu */ X X CloseDevice (diskreq); X DeleteStdIO (diskreq); X DeletePort (diskport); X goto RETYPE; X} X Xprint (s) Xchar *s; X{ X Write (window,s,(long)strlen (s)); X} END_OF_FILE if test 2440 -ne `wc -c <'Terminator.c'`; then echo shar: \"'Terminator.c'\" unpacked with wrong size! fi # end of 'Terminator.c' fi if test -f 'Terminator.doc' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'Terminator.doc'\" else echo shar: Extracting \"'Terminator.doc'\" \(6067 characters\) sed "s/^X//" >'Terminator.doc' <<'END_OF_FILE' XThe Terminator virus killer v1.0 (C) Copyright 1989 by Russell Wallace. XThis is a highly effective program to defend your system against boot block Xviruses. First, I'll explain how boot block viruses work. Sectors 0 and 1 X(the first 1024 bytes) of a disk which can be inserted in response to the XWorkbench prompt after resetting the Amiga contain code which gets executed Xbefore anything else is done. This is useful for game title screens and the Xlike. A virus lives on the boot block. It gets loaded into memory when the Xmachine is booted up, and stays there until you turn the power off (most Xviruses can survive reset). The original SCA virus would then write a copy Xof itself into the boot block of any disk you used to boot the Amiga, Xbefore it actually booted up. Thus the virus would spread slowly Xthroughout your disk collection and whenever you gave a copy of an infected Xdisk to anyone else you would give them the virus as well. More recent Xviruses such as Byte Bandit, Byte Warrior etc. are far more virulent - they Xinfect every disk you put in the drive, not just disks you boot from. XUnlike the situation on the IBM and Macintosh, most Amiga viruses do no Xdeliberate damage but they can still accidentally crash your system. More Ximportantly if a program such as a game is using the boot block for Xsomething and the virus writes a copy of itself into the boot block, it Xwill destroy whatever is already there. X XThe Terminator can be run from the CLI or Workbench. A window will come up Xwith a selection of commands. Typing a number from 0 to 3 will Xprotect/sterilize that floppy drive, typing Q will quit the program. The Xway The Terminator works is simple: It puts code in the boot block of the Xdesignated disk which causes the screen to flash red and yellow stripes for Xa fraction of a second on boot-up. The screen remains yellow for another Xcouple of seconds of the boot process. If a virus infects that disk it will Xoverwrite this code and the screen will no longer flash on boot-up. This Xprovides warning of the virus infection. Eliminating the virus is slightly Xmore complex. The basic idea is that you have to overwrite the virus code Xin the boot block with something harmless - the normal method is to use the XAmigaDOS INSTALL command to put normal boot code in, but you can simply use XThe Terminator to replace the code to flash the screen on boot-up. The Xproblem is that while the virus is in memory, it will probably block any Xattempt to overwrite its code in the boot block. The solution is as Xfollows: Turn your Amiga off and on again to clear the virus out of memory X(most viruses can survive an ordinary reset). Boot up with a disk you are Xsure is free of infection. Write-protecting disks will prevent Xthem being infected, and using The Terminator on them before you Xwrite-protect them will provide confirmation that the disk is still clean Xon boot-up. Once you have rebooted with the clean disk, load up The XTerminator and use it on all the infected disks to kill the virus. X XSo, to summarize: Use The Terminator on all your normal bootable disks. If Xany of them ever stop flashing red and yellow stripes on the screen on Xboot-up you have a virus. At least one of the disks should be Xwrite-protected after using The Terminator on it to prevent it ever getting Xinfected. Turn the power off and on again, re-boot with a write-protected Xsystem disk, load up The Terminator and use it on all infected disks. X XOther virus killers such as VirusX are designed to detect specific viruses Xin memory. This is fine for use against those viruses but if a new one or a Xmutant strain of an old one is written which the virus killer does not know Xabout, it will be useless. The Terminator will protect against any Xboot block virus. It also does not consume any memory or disk space and Xonly adds a fraction of a second to your boot up time, because it doesn't Xput anything in your startup-sequence. Virus killers that look for Xnonstandard boot blocks can give false alarms if they see a harmless Xnonstandard boot block. The Terminator can't give any false alarms because Xanything that overwrites the flashing screen code in the boot block without Xyour knowledge is almost by definition a virus. X XWARNING: DO NOT USE THE TERMINATOR ON ANY DISKS WITH CUSTOM BOOT BLOCKS! XMost games put code in the boot block. Using The Terminator on these disks Xwill overwrite the boot block and destroy the game. Note that if any game Xis still working after being infected with the virus, it must not have had Xany code in the boot block otherwise the virus would have destroyed it, so XThe Terminator can be used to kill the virus. X XThe Terminator may be freely used, copied and distributed. The source code Xmay be used as a source of programming information. If you find it useful X(e.g. if it saves your system from virus infection), I would appreciate it Xif you would send a donation of about 10 pounds (US $15) to me: XRussell Wallace, 24 Lower Georges St, Dunlaoghaire, Co. Dublin, Ireland. XIn return I will send you a disk of my latest shareware/public domain Xprograms including the latest version of The Terminator. When distributing Xthis program please also distribute the source code. The reason for this is Xthat there are several programs around which actually infect disks under the Xpretense of killing viruses. The source code has to be available to prove Xthat the program does what it says it does. X XThe Terminator provides an almost invulnerable defense against boot block Xviruses - the only way anything could get past it unnoticed is if the virus Xitself flashed the screen red and yellow if it noticed that The Terminator Xwas there before it. The present version provides no protection against Xviruses which attach themselves to program files. Later versions hopefully Xwill. In order for this defense to be more effective please send me a copy Xof any such virus you come across - even if you get infected by a boot Xblock virus, please send me a copy before you wipe it out. I need viruses Xto test my virus killer on. X XSo long, and happy virus hunting! X END_OF_FILE if test 6067 -ne `wc -c <'Terminator.doc'`; then echo shar: \"'Terminator.doc'\" unpacked with wrong size! fi # end of 'Terminator.doc' fi if test -f 'Terminator.uu' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'Terminator.uu'\" else echo shar: Extracting \"'Terminator.uu'\" \(4652 characters\) sed "s/^X//" >'Terminator.uu' <<'END_OF_FILE' Xbegin 644 Terminator XM```#\P`````````#``````````(```,,0``!*0````$```/I```##$[Z`SY.' XM5?_^0FW__C`M__Y(P.6`0>R``C(M__Y(P>6!0^R`IB.P"``8`%)M__X,;0`40 XM__YMUDAX`^Y(>@&Z3KH(_%!/*4"`EF8*/SP`'DZZ!VY43TAZ`<5.N@+`6$](" XM>@(O3KH"MEA/2'@``DAL@(PO+("63KH(X$_O``Q"+("-#"P`<8",9P@,+`!1G XM@(QF#B\L@)9.N@B"6$].74YU$"R`C$B`D'P`,#E`@(I*;("*;:P,;``#@(INS XMI$AZ`BE.N@):6$](;(",3KH"4%A/2'H"-$ZZ`D983T*G0J=.N@C04$\I0(".4 XM9A0O+("63KH(*EA//SP`'DZZ!L943R\L@(Y.N@F66$\I0("29AXO+(".3KH), XM*%A/+RR`EDZZ!_Q83S\\`!U.N@:85$]"IR\L@)(P+("*2,`O`$AZ`<].N@J`J XM3^\`$$J`9R@O+("23KH)8%A/+RR`CDZZ".)83R\L@)9.N@>V6$\_/``<3KH&P XM4E1/(&R`DB%\```$```D0>R`IB)L@)(C2``H(&R`DC%\``,`'"!L@))"J``L\ XM+RR`DDZZ";)83R!L@)(Q?``$`!PO+("23KH)GEA/(&R`DD*H`"0@;("2,7P`\ XM"0`<+RR`DDZZ"8)83R\L@)).N@>X6$\O+("23KH(REA/+RR`CDZZ"$Q83V``A XM_FI#3TXZ,"\U,"\V-#`O,3(P+U1H92!497)M:6YA=&]R('8Q+C``5&AE(%1E% XM<FUI;F%T;W(@=FER=7,@:VEL;&5R(&)Y(%)U<W-E;&P@5V%L;&%C92`V($9EG XM8B`Q.3@Y"E=!4DY)3D<@+2!$3R!.3U0@55-%($].($$@1$E32R!7251(($$@A XM0U535$]-($)/3U0@0DQ/0TLA"@!%;G1E<B!A(&YU;6)E<B!F<F]M(#`@=&\@4 XM,R!T;R!P<F]T96-T+W-T97)I;&EZ92!T:&%T(&9L;W!P>2!D<FEV90IO<B!TE XM>7!E(%$@=&\@<75I=#H@`$EN<W1A;&QI;F<@8F]O="!C;V1E(&]N(&1R:79E: XM(``N+BX*`'1R86-K9&ES:RYD979I8V4`3E4``"\M``A.N@2(6$](P"\`+RT`G XM""\L@)9.N@8R3^\`#$Y=3G5A<$/L@%9%[(!6M<EF#C(\`1-K"'0`(L)1R?_\B XM*4^`5BQX``0I3H!:2.>`@`@N``0!*6<02_H`"$ZN_^)@!D*G\U].<T/Z`"!.( XMKOYH*4"`7F8,+CP``X`'3J[_E&`$3KH`&E!/3G5D;W,N;&EB<F%R>0!)^0``C XM?_Y.=4Y5```O"DAY``$``#`L@%+!_``&+P!.N@=R4$\I0(!B9A1"ITAY``$`. XM`$ZZ!9103RYL@%9.=2!L@&)":``$(&R`8C%\``$`$")L@&(S?``!``H@;(!6' XM("R`5I"H``10@"E`@&8@;(!F(+Q-04Y80J=.N@=`6$\D0$JJ`*QG+B\M``PO. XM+0`(+PI.N@"R3^\`##E\``&`:B!L@&(`:(````0@;(!B`&B````*8$1(:@!<^ XM3KH'D%A/2&H`7$ZZ!RI83RE`@&P@;(!L2J@`)&<0(&R`;")H`"0O$4ZZ!)18L XM3R\L@&PO"DZZ`EA03REL@&R`<$ZZ!(@@;(!B((!.N@28(&R`8B%```9G%DAX9 XM`^U(>@`L3KH$=%!/(&R`8B%```PO+(!P/RR`=$ZZ^R)<3T)G3KH"U%1/)%].- XM74YU*@!.50``2.<,,"1M`!`@;0`(("@`K.6`*``@1"`H`!#E@"9`$!-(@$C`) XMT*T`#%2`.4"`=D*G,"R`=DC`+P!.N@804$\I0(!X9@A,WPPP3EU.=1`32(`_) XM`"!+4H@O""\L@'A.N@%$3^\`"DAZ`3H0$TB`2,#0K(!X+P!.N@%X4$\_+0`.1 XM+PHO+(!X3KH!1$_O``I";(!T)FR`>"1+$!-(@#H`L'P`(&<8NGP`"6<2NGP`: XM#&<,NGP`#6<&NGP`"F8$4HM@V`P3`"!M>@P3`")F+E*+($M2BQ`02(`Z`&<>U XM($I2BA"%NGP`(F80#!,`(F8$4HM@!D(J__]@`F#68#@@2U*+$!!(@#H`9R:ZB XM?``@9R"Z?``)9QJZ?``,9Q2Z?``-9PZZ?``*9P@@2E**$(5@SB!*4HI"$$I%W XM9@)3BU)L@'1@`/]:0A)"IS`L@'120$C`Y8`O`$ZZ!/I03RE`@'!F"$)L@'1@: XM`/[D>@`F;(!X8!XP!4C`Y8`@;(!P(8L(`"\+3KH!-EA/4D!(P-?`4D6Z;(!TX XM;=PP!4C`Y8`@;(!P0K`(`&``_J8@`$SO`P``!"`(,B\`#&`"$-E7R?_\9P92! XM06`"0AA1R?_\3G4P/'__8`0P+P`,(&\`!$H89OQ32")O``A30!#95\C__&<"8 XM0A`@+P`$3G4@;P`$(`@B;P`($-EF_$YU3E4``$CG#C`D;0`(0J=(>@".3KH$X XMR%!/*4"`FF8(3-\,<$Y=3G4@;0`,(F@`)"\I``1.N@3V6$\H`&=22'H`;2!$M XM+R@`-DZZ!,A03R9`2H!G-$AX`^TO"TZZ`>Y03RP`9R0@!N6`*@`@125H``@`Q XMI"5&`)Q(>`/M2'H`.$ZZ`<I03R5``*`O!$ZZ!)183R\L@)I.N@(26$]"K(":& XM8(!I8V]N+FQI8G)A<GD`5TE.1$]7`"H`(&\`!"`(2AAF_)'`(`A3@$YU3E4`? XM`$JL@)YG!B!L@)Y.D#\M``A.N@`(5$].74YU3E7__"\$,"T`"$C`*T#__$JLX XM@&)G*'@`8`H_!$ZZ`-!43U)$N&R`4FWP,"R`4L'\``8O`"\L@&).N@-N4$]*Y XMK("B9P8@;("B3I!*K(!\9PHO+(!\3KH!<%A/2JR`@&<*+RR`@$ZZ`6!83TJLI XM@(1G"B\L@(1.N@%06$\L>``$""X`!`$I9Q0O#4OZ``I.KO_B*E]@!D*G\U].[ XM<TJL@&QF,$JL@'AG*#`L@'9(P"\`+RR`>$ZZ`O103S`L@'120$C`Y8`O`"\LZ XM@'!.N@+>4$]@#DZZ`LHO+(!L3KH#.EA/("W__"YL@%9.=2@?3EU.=4Y5``!(' XMYPX@."T`"#`$P?P`!B1`U>R`8DI$;0JX;(!2;`1*DF80.7P``H"(</],WP1P* XM3EU.=3`J``3`?(``9@@O$DZZ``Y83T*2<`!@X$[Z``(B+P`$+&R`7D[N_]PB& XM+P`$+&R`7D[N_X(L;(!>3N[_RD[Z``),[P`&``0L;(!>3N[_XBQL@%Y.[O_$X XM3OH``DSO``X`!"QL@%Y.[O_63OH``DSO``X`!"QL@%Y.[O_02.<!!$SO((``% XM#"QL@%I.KO^43-\@@$YU(F\`!"QL@%I.[OX^3OH``B)O``0L;(!:3N[^8DY5J XM``!(YP@@2'C__TZZ`-!83R@`L+S_____9@IP`$S?!!!.74YU2'D``0`!2'@`T XM(DZZ`6!03R1`2H!F#"\$3KH!IEA/<`!@UB5M``@`"A5M``\`"15\``0`"$(J` XM``X51``/0J=.N@%46$\E0``02JT`"&<*+PI.N@!:6$]@"DAJ`!1.N@%Z6$\@$ XM"F"23E4``"\*)&T`"$JJ``IG""\*3KH!EEA/%7P`_P`()7S_____`!1P`!`J0 XM``\O`$ZZ`2I83TAX`"(O"DZZ`0I03R1?3EU.=2)O``0L;(!:3N[^GB`O``0LT XM;(!:3N[^MDY5``!(>``P+RT`"$ZZ`!I03TY=3G5.50``+RT`"$ZZ`$Q83TY=) XM3G5.50``+PI*K0`(9@AP`"1?3EU.=4AY``$``2\M``Q.N@!@4$\D0$J`9@1PG XM`&#@%7P`!0`(-6T`#@`2)6T`"``.(`I@RDY5```O"B1M``@@"F8&)%].74YU8 XM%7P`_P`()7S_____`!0E?/____\`&'``,"H`$B\`+PI.N@!&4$]@TD[Z``),W XM[P`#``0L;(!:3N[_.DCG`P`B;P`,+&R`6DZN_CA,WP#`3G5.^@`"(F\`!"QLU XM@%I.[O[:+&R`6D[N_WQ.^@`"(F\`!"`O``@L;(!:3N[_+B`O``0L;(!:3N[^G XML"!O``0L;(!:3N[^C"!O``0@B%B00J@`!"%(``A.=2!O``1,[P(!``@B+P`0Z XM+&R`6D[N_D0L;(!:(F\`!"`O``A.[OW8(F\`!"QL@%I.[OZ8(F\`!"QL@%I.- XM[OZ&(&\`!"QL@%I.[OZ`3.\#```$+&R`FD[N_Z`@;P`$+&R`FD[N_Z8@;P`$Y XM+&R`FD[N_[(``````^P````!`````0```[0````````#\@```^H````51$]3D XM`(6PE>P```-P<%`R/`#(,_P/``#?\8!1R?_V,CP`R#/\#_``W_&`4<G_]E'(8 XM_]Y#^@`03J[_H"!`(&@`%G``3G5D;W,N;&EB<F%R>0``%``````#\@```^L`6 X'```!```#\J[_C X`` Xend Xsize 3292 END_OF_FILE if test 4652 -ne `wc -c <'Terminator.uu'`; then echo shar: \"'Terminator.uu'\" unpacked with wrong size! fi # end of 'Terminator.uu' fi if test -f 'Terminator0.uu' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'Terminator0.uu'\" else echo shar: Extracting \"'Terminator0.uu'\" \(561 characters\) sed "s/^X//" >'Terminator0.uu' <<'END_OF_FILE' Xbegin 644 Terminator.doc.info XMXQ```0``````S``>`"@`%0`$``,``0#"AC``````````````````````````; XM````!`@`P>,0`````````,@````3```````````````````````H`!4``@`!; XM>Z@#```````````````____,```____/```____/P``X`__/\``____````XU XM`____``______``______``_A`#`?``______``Y`(``?``______``X``!`) XM?``______``______``___X`?``______``______`````````````````#_3 XM___\``#````S``#````PP`#````P,`#'_``P#`#````__P#'_````P#`````` XM`P#``````P#`>_\_@P#``````P#&_W__@P#``````P#'__^_@P#``````P#`8 XM`````P#```'_@P#``````P#``````P#______P`````````````+.DUO<W0O> X%36]S=`#`C X`` Xend Xsize 365 END_OF_FILE if test 561 -ne `wc -c <'Terminator0.uu'`; then echo shar: \"'Terminator0.uu'\" unpacked with wrong size! fi # end of 'Terminator0.uu' fi if test -f 'Terminator1.uu' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'Terminator1.uu'\" else echo shar: Extracting \"'Terminator1.uu'\" \(1124 characters\) sed "s/^X//" >'Terminator1.uu' <<'END_OF_FILE' Xbegin 644 Terminator.info XMXQ```0``````-0`5`#H`*P`%``,``0#!XX``````````````````````````0 XM`````[P``````````````#$````*```````````````````````Z`"H``@`!A XM;$@#``````````!X<````````/_````````!@P````````,&`````````_P`J XM```````"&`````````,P`````````<`````````!P````$````/``A``````D XM!Z`````````$(`P```````0($`````$`"ZP0!````B`E@D`!```"$B8""3@`& XM`$`0(Q"`H````($@RXH`@````OD(`@C````L@C\*``0``!$`"@D!```!`!:`= XM"`````````7P`````0@P``@``````"`#"``````B@('X`````!```#``````$ XM!``#\`````(``!_X````````8!@`````@`#`,````````?_@```````#`,``; XM``````(!@````````_X````````&&`````````1P````````!X`````````.K XM`````````!L`````````/X`````````@P````````````````````#X`````X XM`````````````````````````?```````````````````````````````(``Q XM`````````````````````!```````8``````````````````````````````1 XM`R`0`````````$``````$``"`0`````0(A````````$@`P```````O@``@@`P XM````@`,*`````!$```````````(```````````#P``````@``````````"``X XM```````````@`````!````````````````````(```'@````````````````3 XM`````````````'^``````````````````````````````?@`````````````X XM`````````````````@``````````````````````````````#```````````. X%````````` X`` Xend Xsize 770 END_OF_FILE if test 1124 -ne `wc -c <'Terminator1.uu'`; then echo shar: \"'Terminator1.uu'\" unpacked with wrong size! fi # end of 'Terminator1.uu' fi if test -f 'bootcode.a' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'bootcode.a'\" else echo shar: Extracting \"'bootcode.a'\" \(1048 characters\) sed "s/^X//" >'bootcode.a' <<'END_OF_FILE' X;Code for boot block to put red and yellow stripes on the screen X;by Russell Wallace 6 Feb 1989 X;This code was assembled with Aztec Assembler 3.6a, linked then disassembled X;with DisAsm. The hex dump of the code was typed into CMon, a boot checksum X;was calculated and the 1K boot block was saved to a file. The first 80 X;bytes of the file were chopped off with Cut into another file and this was X;then converted with my File2Manx program into an object file for linking X;with the Aztec linker 3.4a. An involved process but you can assemble this X;file then verify that the code produced is the same as the code placed in X;the boot block by the program. X X_LVOFindResident equ -96 X X moveq #80,d0 Xloop X move.w #200,d1 Xloop1 X move.w #$0f00,$dff180 ;Make screen red X dbf d1,loop1 X move.w #200,d1 Xloop2 X move.w #$0ff0,$dff180 ;Make screen yellow X dbf d1,loop2 X dbf d0,loop X X lea dos_name,a1 ;Do normal boot sequence X jsr _LVOFindResident(a6) X move.l d0,a0 X move.l 22(a0),a0 X moveq #0,d0 X rts X Xdos_name dc.b 'dos.library',0 X END_OF_FILE if test 1048 -ne `wc -c <'bootcode.a'`; then echo shar: \"'bootcode.a'\" unpacked with wrong size! fi # end of 'bootcode.a' fi echo shar: End of archive 1 \(of 1\). cp /dev/null ark1isdone MISSING="" for I in 1 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have the archive. rm -f ark[1-9]isdone else echo You still need to unpack the following archives: echo " " ${MISSING} fi ## End of shell archive. exit 0 -- Mail submissions (sources or binaries) to <amiga@uunet.uu.net>. Mail comments to the moderator at <amiga-request@uunet.uu.net>. Post requests for sources, and general discussion to comp.sys.amiga.