home *** CD-ROM | disk | FTP | other *** search
- ;========================================================================
- ;= Big Brother V3.12 by Orega Holland (c)1992 =
- ;= Programmer: EA van Breemen =
- ;= Assembler : DevPac 2.14 =
- ;= All copyrights are reserved by Orega Holland. =
- ;= No part of this program may be used for other commercial programs =
- ;= without the prior written permission of the author. The author =
- ;= cannot be held responsible for behaviour of this program due to =
- ;= the use of this program. BigBrother is SHAREWARE. This means it =
- ;= can be copied for non-commercial use and it may not be copied as =
- ;= a part of a commercial package. =
- ;========================================================================
-
- ;========================================================================
- ;= Modifications: =
- ;= 24-1-90: fixed ctrl-Help bug =
- ;= added newcli =
- ;= optimized coding =
- ;= 26-1-90: added newcli gadget =
- ;= modified tekstborder =
- ;= fixed 'system has been modified' tekst bug =
- ;= 27-1-90: fixed AlertWarning =
- ;= adjusted some windowsizes =
- ;= intuified viewbootblocktekst =
- ;= regulated bootio errors =
- ;= added help =
- ;= added preferences =
- ;= 21-10-90 fixed the memory clean message update bug =
- ;= added script options =
- ;= 23-10-90 make auto detaching =
- ;= 24-10-90 fixed another clean message box bug =
- ;= added ReBoot routine =
- ;= 25-10-90 BigBrother is now using the official reboot =
- ;= 27-10-90 Fixed the endcli bug =
- ;= 01-12-90 Fixed multiple selection bug. BB replies to all =
- ;= messages first before next Wait =
- ;= Version 2.11 Final release. =
- ;= 16-10-91 Version 3.00 =
- ;= 23-10-91 Version 3.01 =
- ;= Gadgets 2.0 look =
- ;= 24-10-91 All Arp stuff removed! (everyone may make mistakes) = =
- ;= Nocare patch installed. =
- ;= Mouse accelerator added. =
- ;= V3.02 =
- ;= 04-11-91 V3.05 Now using Signals for faster response =
- ;= Added check.task =
- ;= 05-11-91 Preferences installed =
- ;= Function macros can be disabled (for WP etc.) =
- ;= Code optimized (pc-rel) =
- ;= V3.07 =
- ;= 07-11-91 Beta release of BigBrother. V3.09 =
- ;= 07-12-91 Kickstart 2.0 RomBase bug removed =
- ;= 2.0 Font bug removed. V3.11 = =
- ;= 01-02-92 Fixed big_prefs update bug =
- ;= added version string =
- ;========================================================================
-
-
- XLIB macro
- xref _LVO\1
- endm
-
-
- MEMORY equ $1
- VIEW equ $2
- CLEAR equ $3
- INSTALL equ $4
- DRIVE equ $5
- WATCH equ $6
- NEWSHELL equ $7
- PREFS equ $8
- REBOOT equ $9
- NOCARE equ $a
- MOUSEACC equ $b
- FUNCTIONKEYS equ $c
- SAVE equ $d
- USE equ $e
- CANCEL equ $f
-
- READ equ $2
- WRITE equ $3
-
- DIE equ 0
- STAY equ 1
-
-
- IECLASS_RAWKEY equ $01
- IECLASS_RAWMOUSE equ $02
- ie_X equ $A
- ie_Y equ $C
- IEQUALIFIER_CONTROL equ $08
-
- HELP_KEY equ $5f
- FUNC_F1 equ $50
- FUNC_F2 equ $51
- FUNC_F3 equ $52
- FUNC_F4 equ $53
- FUNC_F5 equ $54
- FUNC_F6 equ $55
- FUNC_F7 equ $56
- FUNC_F8 equ $57
- FUNC_F9 equ $58
- FUNC_F10 equ $59
-
-
-
- IND_ADDHANDLER equ $09
- IND_REMHANDLER equ $a
- NT_MESSAGE equ $05
- NT_MSGPORT equ $04
- NT_TASK equ $01
- PA_SIGNAL equ $00
- TC_SIZE equ $5C
- TC_SPLOWER equ $3A
- TC_SPREG equ $36
- TC_SPUPPER equ $3E
- MEMF_CHIP equ $2
- MEMF_CLEAR equ $10000
- MEMF_PUBLIC equ $1
- io_Message equ $00
- io_Data equ $28
- io_Command equ $1c
- Ln_Type equ $08
- Ln_Name equ $0a
- Ln_Pri equ $09
- mp_Size equ $22
- mp_Node equ $00
- mp_SigBit equ $0f
- mp_Flags equ $0e
- mp_SigTask equ $10
- mn_Node equ $00
- mn_Length equ $12
- mn_ReplyPort equ $0e
-
- gg_GadgetID equ $26
-
- im_Class equ $14
- im_Code equ $18
- im_Address equ $1c
-
- GadgetID equ $26
-
- wd_UserPort equ $56
- wd_RPort equ $32
-
- WindowPtr equ $b8
-
- nw_Flags equ $0e
- nw_Type equ $2e
-
- is_Code equ $12
- is_Data equ $0e
- is_Node equ $00
-
- GADGETUP equ $40
- GADGHNONE equ $03
- GADGHIMAGE equ $02
- GADGHCOMP equ 0
- SELECTED equ $80
- CLOSEWINDOW equ $200
- RAWKEY equ $400
- WINDOWDRAG equ $02
- WINDOWDEPTH equ $04
- WINDOWCLOSE equ $08
- ACTIVATE equ $1000
- NOCAREREFRESH equ $20000
- RELVERIFY equ $01
- BOOLGADGET equ $01
- TOGGLESELECT equ $100
- RP_JAM1 equ $00
- RP_JAM2 equ $01
- TOPAZ_EIGHTY equ $8
-
- TD_CHANGESTATE equ 14
-
- NULL equ $00
-
- NOCARE_PATCH equ $01
- MOUSE_PATCH equ $02
- FUNCTION_PATCH equ $04
- REFRESHBIT0 equ $06
- WBENCHSCREEN equ $01
-
- ROM_BASE equ $f80000 ; Start of Kickstart 2.0
-
- MAGIC_ROMEND EQU $01000000 ;End of Kickstart ROM
- MAGIC_SIZEOFFSET EQU -$14 ;Offset from end of ROM to Kickstart size
- V36_EXEC EQU 36 ;Exec with the ColdReboot() function
- TEMP_ColdReboot EQU -726 ;Offset of the V36 ColdReboot function
- LIB_VERSION EQU $14
-
-
- XLIB OpenLibrary
- XLIB CloseLibrary
- XLIB OpenDevice
- XLIB CloseDevice
- XLIB OpenWindow
- XLIB CloseWindow
- XLIB CreateProc
- XLIB UnLoadSeg
- XLIB AddTask
- XLIB Permit
- XLIB Forbid
- XLIB DoIO
- XLIB Delay
- XLIB GetMsg
- XLIB ReplyMsg
- XLIB AllocSignal
- XLIB FreeSignal
- XLIB Signal
- XLIB FindTask
- XLIB AddPort
- XLIB RemPort
- XLIB FindName
- XLIB DeviceProc
- XLIB RefreshGadgets
- XLIB Wait
- XLIB Move
- XLIB Text
- XLIB SetAPen
- XLIB AllocMem
- XLIB FreeMem
- XLIB SetWindowTitles
- XLIB FindResident
- XLIB RemTask
- XLIB DisplayBeep
- XLIB Disable
- XLIB Enable
- XLIB DrawBorder
- XLIB PrintIText
- XLIB WBenchToFront
- XLIB DisplayAlert
- XLIB SizeWindow
- XLIB WaitPort
- XLIB Open
- XLIB Close
- XLIB Read
- XLIB Lock
- XLIB UnLock
- XLIB Execute
- XLIB WaitPort
- XLIB Supervisor
- XLIB Write
- XLIB Output
- XLIB SetFunction
-
- STACK_SIZE equ 4096
-
-
-
- ;===================================
- ;= Startup code for auto detaching =
- ;= BigBrother V2.11 =
- ;===================================
-
-
- section "Startup",code
-
-
- start bra.s 1$
- dc.b '$VER: BigBrother V3.12 (1-2-1992)',$a,$d,0
- even
- 1$ move.l ($4).L,a6
- sub.l a1,a1
- jsr _LVOFindTask(a6)
- move.l d0,a4
- tst.l $ac(a4) ; Are we from the WBench ????
- bne.s from_cli
- lea.l $5c(a4),a0
- jsr _LVOWaitPort(a6)
- jsr _LVOGetMsg(a6) ; Get message
- from_cli:
- move.l ($4).L,a6
- lea.l DosName,a1
- clr.l d0
- jsr _LVOOpenLibrary(a6)
- move.l d0,a5
- beq uit
- move.l #BIG_NAME,a1
- jsr _LVOFindTask(a6)
- tst.l d0
- bne already_active
- move.l a5,a6
- jsr _LVOOutput(a6)
- move.l d0,d1
- move.l #Title,d2
- move.l #Title_Size,d3
- jsr _LVOWrite(a6)
- move.l #NIL_NAME,d1
- move.l #1006,d2
- jsr _LVOOpen(a6)
- move.l d0,pcb_Input
- move.l d0,pcb_Output
-
- move.l #mymain,d3
- sub.l #4,d3
- lsr.l #2,d3 ; make BPTR !!!!!!
- move.l #BIG_NAME,d1
- move.l #2,d2 ; pri 2
- move.l #4096,d4
- jsr _LVOCreateProc(a5)
-
- lea.l start(pc),a0
- move.l #0,-4(a0) ; Erase pointer to next segment
- bra.s cc1
-
- already_active:
- move.l a5,a6
- jsr _LVOOutput(a6)
- move.l d0,d1
- move.l #Active_Title,d2
- move.l #Active_Size,d3
- jsr _LVOWrite(a6)
-
- cc1 move.l a5,a1
- move.l ($4).L,a6
- jsr _LVOCloseLibrary(a6)
- uit rts
-
-
- ;======================================
- ;= The Message Create Port function =
- ;= a0 contains pointer to name =
- ;= d0 contains priority =
- ;= on exit: =
- ;= d0 contains pointer to messageport =
- ;= or 0 if failed =
- ;= All registers are affected =
- ;======================================
-
-
- CreatePort:
- move.l a0,a5
- move.l d0,d6
- bsr.s GetSignal
- cmp.l #-1,d0
- bne.s cr_1
- create_out:
- moveq #0,d0
- rts
- cr_1 move.l d0,d4
- move.l #mp_Size,d0
- move.l #MEMF_CLEAR|MEMF_PUBLIC,d1
- jsr _LVOAllocMem(a6)
- move.l d0,d5
- bne.s 2$
- move.l d4,d0
- jsr _LVOFreeSignal(a6)
- bra.s create_out
- 2$ move.l d5,a0
- move.b d4,mp_SigBit(a0)
- move.b d6,mp_Node+Ln_Pri(a0)
- move.b #NT_MSGPORT,mp_Node+Ln_Type(a0)
- move.l a5,mp_Node+Ln_Name(a0)
- move.b #PA_SIGNAL,mp_Flags(a0)
- sub.l a1,a1
- jsr _LVOFindTask(a6)
- move.l d0,mp_SigTask(a0)
- move.l a0,a1
- jsr _LVOAddPort(a6)
- move.l d5,d0
- rts
-
-
- ;=================================
- ;= Get a signal for current task =
- ;= Assumes it will succeed. =
- ;= mask will be in d1 =
- ;=================================
-
- GetSignal:
- move.l $4,a6
- moveq #-1,d0
- jsr _LVOAllocSignal(a6)
- moveq #1,d1
- lsl.l d0,d1
- rts
-
-
- ;========================================
- ;= Section containing the resident code =
- ;========================================
-
- Section "Main",code
-
- ;=======================================
- ;= Initialisation code for Big Brother =
- ;=======================================
- mymain move.l ($4).L,a6
- lea.l DosName(pc),a1
- clr.l d0
- jsr _LVOOpenLibrary(a6)
- move.l d0,DOSBase
- beq nodos
- bsr loadprefs
- move.l ($4).L,a6
- clr.l d0
- lea.l IntuitionName(pc),a1
- jsr _LVOOpenLibrary(a6)
- move.l d0,IntuitionBase
- beq nointuition
- clr.l d0
- lea.l GraphicsName(pc),a1
- jsr _LVOOpenLibrary(a6)
- move.l d0,GfxBase
- beq nographics
-
- bsr initall ; Open inputdevice etc.
- bra check ; Jump to checkroutine
-
-
- ;==================================
- ;= loadprefs: tries to load prefs =
- ;==================================
- loadprefs:
- move.l DOSBase(pc),a6
- move.l #prefs_file,d1
- move.l #-2,d2
- jsr _LVOLock(a6)
- move.l d0,lock
- beq no_prefs
- move.l #prefs_file,d1
- move.l #1005,d2
- jsr _LVOOpen(a6)
- move.l d0,filehandle
- move.l d0,d1
- move.l #DoIOVector,d2
- moveq #9,d3
- jsr _LVORead(a6)
- move.l d0,d5
- move.l filehandle,d1
- jsr _LVOClose(a6)
- move.l lock,d1
- jsr _LVOUnLock(a6)
- cmp.l #9,d5
- bne.s no_prefs ; Read Error has occured !
- bsr reflect ; Update gadget flags
- rts
- no_prefs:
- bsr Saddam
- move.b #MOUSE_PATCH|FUNCTION_PATCH|NOCARE_PATCH,patchstatus
- save_prefs:
- move.l DOSBase(pc),a6
- move.l #prefs_file,d1
- move.l #1006,d2
- jsr _LVOOpen(a6)
- move.l d0,filehandle
- move.l d0,d1
- move.l #DoIOVector,d2
- moveq #9,d3
- jsr _LVOWrite(a6)
- move.l filehandle,d1
- jsr _LVOClose(a6)
- rts
-
-
- ;=============================================
- ;= Routine to install a input device handler =
- ;=============================================
-
-
- initall: ; Open inputdevice
- move.b #0,signal
- move.l #0,oldopenwindow
- move.b #0,drive ; df0: is default
- move.b #STAY,status
- bsr nocare ; install nocare patch
-
-
- lea.l MyPortName(pc),a0
- moveq #0,d0
- jsr CreatePort
- move.l d0,InputDevPort
-
- sub.l a1,a1
- jsr _LVOFindTask(a6)
- move.l d0,a3
- move.l d0,bigtask ; Store big task
- move.l #-1,WindowPtr(a3) ; I don't want requesters
-
- lea.l InputRequestBlock(pc),a0
- move.b #NT_MESSAGE,io_Message+mn_Node+Ln_Type(a0)
- move.w #$30,io_Message+mn_Length(a0)
- move.l InputDevPort(pc),io_Message+mn_ReplyPort(a0)
-
- lea.l HandlerStuff(pc),a1
- move.l #myhandler,is_Code(a1)
- move.b #127,is_Node+Ln_Pri(a1)
- move.l #0,is_Data(a1)
-
- lea.l InputRequestBlock(pc),a1
- lea.l InputDeviceName(pc),a0
- clr.l d0
- clr.l d1
- jsr _LVOOpenDevice(a6)
-
- lea.l InputRequestBlock(pc),a0
- move.w #IND_ADDHANDLER,io_Command(a0)
- move.l #HandlerStuff,io_Data(a0)
- move.l a0,a1
- jsr _LVODoIO(a6) ; Install handler
-
- jsr GetSignal ; Allocate Signal for activation
- move.l d1,virusmask
-
- jsr GetSignal ; Allocate Signal for activation
- move.l d1,keymask
-
- move.l #TC_SIZE,d0
- move.l #MEMF_CLEAR|MEMF_PUBLIC,d1
- jsr _LVOAllocMem(a6)
- move.l d0,checktask
-
- move.l d0,a0
- lea.l stack(pc),a1
- move.l a1,TC_SPLOWER(a0)
- move.l a1,d1
- add.l #1024,d1
- move.l d1,TC_SPUPPER(a0)
- move.l d1,TC_SPREG(a0)
- move.b #NT_TASK,Ln_Type(a0)
- move.b #-1,Ln_Pri(a0)
- move.l #CHECK_NAME,Ln_Name(a0)
-
- move.l a0,a1
- move.l #NewCheck,a2
- move.l #0,a3
- jsr _LVOAddTask(a6)
-
- rts
-
- ;================================
- ;= Code for Nocare window patch =
- ;================================
-
- nocare:
- move.l oldopenwindow,d0
- bne 1$ ; Patch already installed
- move.l ($4).L,a6
- move.l IntuitionBase(pc),a1
- move.w #_LVOOpenWindow,a0
- lea.l newopenwindow(pc),a2
- move.l a2,d0
- jsr _LVOSetFunction(a6)
- move.l d0,oldopenwindow
- 1$ rts
-
- nocare_off: ; Disable
- move.l ($4).L,a6
- move.l IntuitionBase(pc),a1
- move.w #_LVOOpenWindow,a0
- move.l oldopenwindow,d0
- beq 1$ ; not yet installed
- jsr _LVOSetFunction(a6)
- move.l #0,oldopenwindow
- 1$ rts
-
- ;=======================
- ;= Actual Nocare patch =
- ;=======================
- newopenwindow:
- cmp.w #WBENCHSCREEN,nw_Type(a0)
- bne.s dontchange
- move.l nw_Flags(a0),d0
- bclr #REFRESHBIT0,d0
- move.l d0,nw_Flags(a0)
- dontchange:
- move.l oldopenwindow(pc),a1
- jmp (a1) ; Jump to original code.
-
-
-
- ;=======================
- ;= Code for Check Task =
- ;=======================
-
- NewCheck:
- bsr.s chlus ; Check routine
- cmp.b #DIE,status
- beq.s killme
- bra.s NewCheck
- killme move.l #0,a1
- move.l $4,a6
- jsr _LVORemTask(a6)
- rts ; Should never get here...
-
-
- chlus move.l ($4).L,a0
- move.l a0,a6
- clr.l d2
- tst.l 42(a0)
- beq.s 1$
- ori.l #1,d2
- 1$ tst.l 46(a0)
- beq.s 2$
- ori.l #1,d2
- 2$ tst.l 546(a0)
- beq.s 3$
- ori.l #2,d2
- 3$ tst.l 550(a0)
- beq.s 4$
- ori.l #2,d2
- 4$ lea.l 350(a0),a0
- lea.l devicename(pc),a1
- move.l ($4).L,a6
- jsr _LVOFindName(a6)
- move.l d0,a0
- move.l -28(a0),d1
- cmp.l #ROM_BASE,d1
- bhs.s 5$
- ori.l #8,d2
- 5$ move.l ($4).L,a0
- move.l -454(a0),d1
- cmp.l DoIOVector,d1
- beq.s 6$
- ori.l #4,d2
- 6$ lea.l TaskName(pc),a1
- jsr _LVOFindTask(a6)
- tst.l d0
- beq.s 7$
- ori.l #16,d2
- 7$ andi.l #31,d2
- move.l d2,memorymask
- moveq #0,d0
- lea.l expert(pc),a0
- move.b 0(a0,d2),d0
- cmp.b #0,d0
- beq.s novirus
- cmp.b #2,d0
- beq.s novirus
- move.b d0,signal
- move.l ($4).L,a6
- move.l virusmask,d0
- move.l bigtask,a1
- jsr _LVOSignal(a6) ; Signal Big Brother
- novirus
- rts
-
-
- ;======================================================
- ;= The Input Device Handler for checking the Help Key =
- ;======================================================
-
- myhandler ; The input_handler
- cmp.b #IECLASS_RAWMOUSE,4(a0)
- bsr mouseacc
- cmp.b #IECLASS_RAWKEY,4(a0)
- beq.s akey
- noop move.l a0,d0 ; Return head of list
- rts
- akey move.w 8(a0),d0
- and.w #IEQUALIFIER_CONTROL,d0 ; Mask Control bit
- beq.s noop ; None of my keys
- cmp.w #HELP_KEY,6(a0)
- bne.s 1$ ; Check next key
- move.w #HELP_KEY,keyfound
- bra needed
- 1$ btst #2,patchstatus(pc)
- beq.s noop ; Function keys are disabled
- cmp.w #FUNC_F1,6(a0)
- bne.s 2$
- move.w #FUNC_F1,keyfound
- bra needed
- 2$ cmp.w #FUNC_F2,6(a0)
- bne.s 3$
- move.w #FUNC_F2,keyfound
- bra needed
- 3$ cmp.w #FUNC_F3,6(a0)
- bne.s 4$
- move.w #FUNC_F3,keyfound
- bra needed
- 4$ cmp.w #FUNC_F4,6(a0)
- bne.s 5$
- move.w #FUNC_F4,keyfound
- bra needed
- 5$ cmp.w #FUNC_F5,6(a0)
- bne.s 6$
- move.w #FUNC_F5,keyfound
- bra needed
- 6$ cmp.w #FUNC_F6,6(a0)
- bne.s 7$
- move.w #FUNC_F6,keyfound
- bra needed
- 7$ cmp.w #FUNC_F7,6(a0)
- bne.s 8$
- move.w #FUNC_F7,keyfound
- bra needed
- 8$ cmp.w #FUNC_F8,6(a0)
- bne.s 9$
- move.w #FUNC_F8,keyfound
- bra needed
- 9$ cmp.w #FUNC_F9,6(a0)
- bne.s 10$
- move.w #FUNC_F9,keyfound
- bra needed
- 10$ cmp.w #FUNC_F10,6(a0)
- bne noop
- move.w #FUNC_F10,keyfound
- needed movem.l d0-d6/a0-a6,-(sp)
- move.l ($4).L,a6
- move.l keymask,d0
- move.l bigtask,a1
- jsr _LVOSignal(a6) ; Signal Big Brother
- movem.l (sp)+,d0-d6/a0-a6
- move.l (a0),a0
- cmp.l #0,a0
- beq.s out
- bra myhandler ; Process more events !
- out clr.l d0 ; End of chain
- rts
-
- ;==============================
- ;= A simple mouse accelerator =
- ;==============================
-
- mouseacc:
- btst.b #1,patchstatus(pc)
- bne.s 3$
- rts
- 3$ cmp.w #1,acc
- bne.s 1$
- rts
- 1$ movem.l d2-d6,-(a7)
- move.w acc,d3
- move.w #1,d2
- move.w ie_X(a0),d1
- bpl.s 2$
- neg.w d1
- move.w #-1,d2
- 2$ cmp.w #0,d1
- bls sk1
- sub.w #1,d1
- mulu.w d3,d1
- add.w #1,d1
- mulu.w d2,d1
- move.w d1,ie_X(a0)
-
- sk1 move.w #1,d2
- move.w ie_Y(a0),d1
- bpl.s 3$
- neg.w d1
- move.w #-1,d2
- 3$ cmp.w #0,d1
- bls sk2
- sub.w #1,d1
- mulu.w d3,d1
- add.w #1,d1
- mulu.w d2,d1
- move.w d1,ie_Y(a0)
- sk2 movem.l (a7)+,d2-d6
- rts
-
-
-
- ;====================================
- ;= Code for checking the Amiga =
- ;====================================
-
- check move.l ($4).L,a6
- move.l virusmask,d0
- or.l keymask,d0
- jsr _LVOWait(a6) ; Wait for signal
- move.l d0,d1
- and.l virusmask,d0
- beq.s no_virus_signal
- clr.l d0 ; must be a virus
- move.b signal,d0
- beq.s check
- cmp.b #2,d0
- beq.s check
- bra.s activate ; Open window etc., a virus !!!
- no_virus_signal:
- move.w keyfound(pc),d0
- cmp.w #FUNC_F1,d0
- bne.s 1$
- bsr newcli
- 1$ cmp.w #HELP_KEY,d0
- beq.s activate
- bsr do_function_keys
- bra.s check
-
- ;=========================================================
- ;= Routine for the window processing in case of an event =
- ;=========================================================
-
- activate
- move.l IntuitionBase(pc),a6
- jsr _LVOWBenchToFront(a6)
- move.l #NewWindowStructure1,a0
- jsr _LVOOpenWindow(a6)
- move.l d0,window
- move.l d0,a0
- move.l wd_RPort(a0),rp
- move.l rp,a0
- move.l #Border2,a1
- moveq #0,d0
- moveq #0,d1
- jsr _LVODrawBorder(a6)
- bsr printstatus
- waitloop:
- move.l window(pc),a0
- move.l wd_UserPort(a0),a0
- move.l a0,userport
- moveq #0,d1
- move.b mp_SigBit(a0),d1
- moveq #1,d0
- asl.l d1,d0
- move.l ($4).L,a6
- jsr _LVOWait(a6) ; Wait for an event
- look move.l ($4).L,a6
- move.l userport,a0 ; Get UserPort
- jsr _LVOGetMsg(a6) ; Get Message from IDCMP Port
- tst.l d0
- beq waitloop ; No more messages left
- move.l d0,a1
- move.l im_Class(a1),d4
- move.w im_Code(a1),d5
- move.l im_Address(a1),a2
- jsr _LVOReplyMsg(a6) ; Reply the message
-
- cmp.l #RAWKEY,d4
- bne.s 1$
- cmp.w #HELP_KEY,d5
- bne.s 1$
- bsr showhelp
- bra look
- 1$ cmp.l #CLOSEWINDOW,d4
- beq.s closealldown
- cmp.l #GADGETUP,d4
- bne.s look
-
- bsr.s process_gadgets ; Someone has pressed a gadget
- cmp.w #WATCH,d0
- bne.s look
-
- watchmode:
- move.l IntuitionBase(pc),a6
- move.l window(pc),a0
- jsr _LVOCloseWindow(a6)
- move.b #0,signal
- bra check
-
- closealldown:
- bsr yesno3 ; Want to quit???
- tst.l d0
- beq look ; no way
- move.l IntuitionBase(pc),a6
- move.l window(pc),a0
- jsr _LVOCloseWindow(a6)
- move.b #0,signal
- jmp exit
-
- Saddam move.l ($4).L,a6
- move.l -454(a6),DoIOVector
- lea.l 350(a6),a0
- lea.l devicename(pc),a1
- move.l ($4).L,a6
- jsr _LVOFindName(a6)
- move.l d0,a0
- move.l -28(a0),TrackDiskIO
- rts
-
-
-
- ;==================================
- ;= Routine for processing Gadgets =
- ;==================================
-
- process_gadgets:
- move.w gg_GadgetID(a2),d0
- cmp.w #WATCH,d0
- bne.s 1$
- rts
- 1$ cmp.w #DRIVE,d0
- beq.s nextdrive
- cmp.w #CLEAR,d0
- beq clearmemory
- cmp.w #VIEW,d0
- beq viewbootblock
- cmp.w #INSTALL,d0
- beq installdisk
- cmp.w #MEMORY,d0
- beq viewmemory
- cmp.w #NEWSHELL,d0
- beq newcli
- cmp.w #PREFS,d0
- beq preferences
- cmp.w #REBOOT,d0
- beq reboot
- clr.l d0 ; Clear d0 if GadgetID <> WATCH
- rts
-
- ;==============================
- ;= Finds next available drive =
- ;==============================
-
- nextdrive:
- move.b drive,d0
- addq #1,d0
- cmp.b #4,d0 ; drive number too high ???
- bne.s 1$
- moveq #0,d0 ; just select df0:
- 1$ cmp.b #0,d0
- bne.s 2$
- move.l df0,ITextText1
- 2$ cmp.b #1,d0
- bne.s 3$
- move.l df1,ITextText1
- 3$ cmp.b #2,d0
- bne.s 4$
- move.l df2,ITextText1
- 4$ cmp.b #3,d0
- bne.s 5$
- move.l df3,ITextText1
- 5$ move.b d0,drive
- move.l #ITextText1,d1
- move.l DOSBase(pc),a6
- jsr _LVODeviceProc(a6) ; Does drive exists ?
- tst.l d0
- bne.s 6$ ; Yeah
- bra.s nextdrive ; Try next drive
- 6$ move.l #Gadget1,a0
- move.l window(pc),a1
- move.l #0,a2
- move.l IntuitionBase(pc),a6
- jsr _LVORefreshGadgets(a6)
- clr.l d0
- rts
-
- ;================================
- ;= Clears memory area from viri =
- ;================================
-
- clearmemory:
- bsr yesno ; Are you sure????
- tst.l d0
- beq clearexit ; Noop
- move.l ($4).L,a6
- jsr _LVODisable(a6)
- lea.l TaskName(pc),a1
- jsr _LVOFindTask(a6)
- tst.l d0
- beq.s 1$ ; No rad
- move.l d0,a1
- jsr _LVORemTask(a6) ; Kill it!!!
- 1$ move.l ($4).L,a6
- clr.l 42(a6)
- clr.l 46(a6)
- clr.l 546(a6)
- clr.l 550(a6)
- clr.l 554(a6)
- cmp.l #0,TrackDiskIO
- beq 2$
- lea.l 350(a6),a0
- lea.l devicename(pc),a1
- move.l ($4).L,a6
- jsr _LVOFindName(a6)
- move.l d0,a0
- move.l TrackDiskIO(pc),-28(a0) ; Restore TrackDiskIO
- 2$ move.l DoIOVector(pc),-454(a6)
- clr.l d1
- lea.l 34(a6),a0
- move.w #$16,d0
- loop add.w (a0)+,d1
- dbf d0,loop
- not.w d1
- move.w d1,82(a6)
- jsr _LVOEnable(a6)
- move.l IntuitionBase(pc),a6
- move.l #0,a0
- jsr _LVODisplayBeep(a6)
- move.l ($4).L,a6
- move.b #0,signal
- bsr chlus ; Check memory
- bsr printstatus ; Show current memory status
- clearexit:
- clr.l d0 ; No WATCH Gadget
- rts
-
- ;====================================
- ;= Are you sure to clear memory???? =
- ;====================================
-
- yesno:
- move.l IntuitionBase(pc),a6
- moveq #0,d0
- lea.l Alertstring(pc),a0
- move.l #50,d1
- jsr _LVODisplayAlert(a6)
- rts
-
- ;====================================
- ;= Are you sure to reboot???? =
- ;====================================
-
- yesno2:
- move.l IntuitionBase(pc),a6
- moveq #0,d0
- lea.l Alertstring2(pc),a0
- move.l #50,d1
- jsr _LVODisplayAlert(a6)
- rts
-
- ;====================================
- ;= Are you sure you want to quit??? =
- ;====================================
-
- yesno3:
- move.l IntuitionBase(pc),a6
- moveq #0,d0
- lea.l Alertstring3(pc),a0
- move.l #50,d1
- jsr _LVODisplayAlert(a6)
- rts
-
-
-
-
-
- ;==================================================
- ;= Routine shows a bootblock in ascii in a window =
- ;==================================================
-
- viewbootblock:
- move.w #534,hsize ; Adjust windowwidth
- move.w #150,hsize+2 ; Adjust height
- lea.l InitTitle(pc),a0
- move.l a0,title2
- move.l IntuitionBase(pc),a6
- lea.l NewWindowStructure2(pc),a0
- jsr _LVOOpenWindow(a6)
- move.l d0,window2
- move.l d0,a0
- move.l wd_RPort(a0),rp2
-
- move.l ($4).L,a6
- move.l #1024,d0
- moveq #2,d1 ; Chip memory needed
- jsr _LVOAllocMem(a6) ; Allocate buffer for bootblock
- move.l d0,buffer
-
- bsr readbootblock
- move.b io_error,d0
- cmp.b #29,d0
- bne 1$ ; Disk is available
-
- move.l window2(pc),a0
- move.l #-234,d0
- move.l #-100,d1
- move.l IntuitionBase(pc),a6
- jsr _LVOSizeWindow(a6) ; Make window smaller
- move.l #disk_changed,Mt5
- move.l #disk_changed,Mt6
- move.l rp2,a0
- clr.l d0
- clr.l d1
- lea.l MyTekst5(pc),a1
- jsr _LVOPrintIText(a6) ; No disk !
- bra 2$ ; skip printbuffer
-
-
- 1$ bsr printbuffer
-
- 2$ move.l buffer(pc),a1
- move.l #1024,d0
- move.l ($4).L,a6
- jsr _LVOFreeMem(a6) ; Free buffer for bootblock
-
- move.l window2(pc),a0
- bsr waitforclose ; Wait for closegadget
-
- move.l IntuitionBase(pc),a6
- move.l window2(pc),a0
- jsr _LVOCloseWindow(a6)
- clr.l d0 ; No WATCH Gadget
- rts
-
- ;====================================
- ;= Routine for installing your disk =
- ;====================================
-
- installdisk:
- move.w #300,hsize
- move.w #50,hsize+2 ; Adjust height
- lea.l InstallTitle(pc),a0
- move.l a0,title2
- move.l IntuitionBase(pc),a6
- lea.l NewWindowStructure2(pc),a0
- jsr _LVOOpenWindow(a6)
- move.l d0,window2
- move.l d0,a0
- move.l wd_RPort(a0),rp2
-
- move.l ($4).L,a6
- move.l #1024,d0
- move.l #2+1<<16,d1 ; Cleared Chip memory needed
- jsr _LVOAllocMem(a6) ; Allocate buffer for bootblock
- move.l d0,buffer
- beq skip_install ; Prevent a guru
-
- lea.l bootcode(pc),a0
- move.l d0,a1
- move.l #bootendcode-bootcode-1,d1
- 1$ move.b (a0)+,(a1)+ ; Copy bootblock into buffer
- dbra d1,1$
- lea.l StandardBootBlock(pc),a0
- move.l #Standardend-StandardBootBlock-1,d1
- 2$ move.b (a0)+,(a1)+
- dbra d1,2$
-
- bsr sum
- bsr writebuffer
-
- move.l buffer(pc),a1
- move.l #1024,d0
- move.l ($4).L,a6
- jsr _LVOFreeMem(a6) ; Free buffer for bootblock
-
- tst.b io_error
- bne.s 3$ ; An error has occured
- move.l #install_message,Mt5
- move.l #install_message,Mt6
- bra.s install_m
- 3$ move.b io_error,d0
- cmp.b #28,d0 ; disk protected???
- bne.s 4$
- move.l #disk_protected,Mt5
- move.l #disk_protected,Mt6
- bra install_m
- 4$ cmp.b #29,d0 ; disk changed ????
- bne 5$
- move.l #disk_changed,Mt5
- move.l #disk_changed,Mt6
- bra.s install_m
- 5$ move.l #install_fail,Mt5 ; Unknown failure
- move.l #install_fail,Mt6
- install_m
- move.l rp2(pc),a0
- clr.l d0
- clr.l d1
- lea.l MyTekst5(pc),a1
- move.l IntuitionBase(pc),a6
- jsr _LVOPrintIText(a6)
-
-
- move.l window2(pc),a0
- bsr waitforclose ; Wait for closegadget
-
- skip_install:
- move.l IntuitionBase(pc),a6
- move.l window2(pc),a0
- jsr _LVOCloseWindow(a6)
- clr.l d0 ; No WATCH Gadget
- rts
-
- ;=============================================
- ;= Routine for displaying a part of ExecBase =
- ;=============================================
-
-
- viewmemory:
- move.w #318,hsize
- move.w #100,hsize+2 ; Adjust height
- lea.l ViewTitle(pc),a0
- move.l a0,title2
- move.l IntuitionBase(pc),a6
- lea.l NewWindowStructure2(pc),a0
- jsr _LVOOpenWindow(a6)
- move.l d0,window2
- move.l d0,a0
- move.l wd_RPort(a0),rp2
-
- move.l ($4).L,a6
- move.l #5*80,d0
- move.l #1<<16,d1
- jsr _LVOAllocMem(a6) ; Allocate buffer
- move.l d0,buffer
- move.l d0,-(a7)
-
- move.l d0,MTE8
- move.l d0,MTE8b
- add.l #80,d0
- move.l d0,MTE9
- move.l d0,MTE9b
- add.l #80,d0
- move.l d0,MTE10
- move.l d0,MTE10b
- add.l #80,d0
- move.l d0,MTE11
- move.l d0,MTE11b
- add.l #80,d0
- move.l d0,MTE12
- move.l d0,MTE12b
-
-
-
- ;======== ColdCapture ==============
-
- lea.l coldcapture(pc),a0
- move.l buffer(pc),a1
- bsr stringcopy
-
- move.l ($4).L,a6
- move.l 42(a6),a0
- bsr makestring
-
-
- ;======= CoolCapture =============
-
- add.l #80,buffer
- lea.l coolcapture(pc),a0
- move.l buffer(pc),a1
- bsr stringcopy
-
- move.l ($4).L,a6
- move.l 46(a6),a0
- bsr makestring
-
-
- ;======== KickMemPtr ===============
-
- add.l #80,buffer
- lea.l kickmemptr(pc),a0
- move.l buffer(pc),a1
- bsr stringcopy
-
- move.l ($4).L,a6
- move.l 546(a6),a0
- bsr makestring
-
-
- ;========== KickTagPtr ================
-
- add.l #80,buffer
- lea.l kicktagptr(pc),a0
- move.l buffer(pc),a1
- bsr stringcopy
-
- move.l ($4).L,a6
- move.l 550(a6),a0
- bsr makestring
-
- ;==== DoIO =========================
-
- add.l #80,buffer
- lea.l doio_vector(pc),a0
- move.l buffer(pc),a1
- bsr stringcopy
-
- move.l ($4).L,a6
- move.l -454(a6),a0
- bsr makestring
-
- ;===== Rad ============================
-
- move.l ($4).L,a6
- lea.l TaskName(pc),a1
- jsr _LVOFindTask(a6)
- tst.l d0
- beq.s no_rad ; No rad
- move.l #found_rad,MTE13
- move.l #found_rad,MTE13b
- bra.s rad_cont
- no_rad move.l #no_found_rad,MTE13
- move.l #no_found_rad,MTE13b
- rad_cont:
-
- move.l rp2,a0
- clr.l d0
- clr.l d1
- lea.l IText8(pc),a1
- move.l IntuitionBase(pc),a6
- jsr _LVOPrintIText(a6)
-
- move.l ($4).L,a6
- move.l #5*80,d0
- move.l (a7)+,a1
- jsr _LVOFreeMem(a6) ; Free buffer
-
- move.l window2(pc),a0
- bsr waitforclose
-
- move.l IntuitionBase(pc),a6
- move.l window2(pc),a0
- jsr _LVOCloseWindow(a6)
-
- clr.l d0 ; No WATCH Gadget
- rts
-
- ;==============
- ;= Makestring =
- ;==============
-
- makestring:
- move.l ($4).L,a6
- lea.l number(pc),a1
- bsr.s convert
-
- lea.l number(pc),a1
- move.l buffer(pc),a0
- bsr.s stringadd
- rts
-
- ;========================
- ;= Copy string a0 -> a1 =
- ;========================
-
- stringcopy:
- 1$ move.b (a0)+,(a1)+
- bne.s 1$
- rts
-
- ;==============================
- ;= Add string a1 to string a0 =
- ;==============================
-
- stringadd:
- move.l a2,-(a7)
- 1$ cmp.b #0,(a0)+ ; Find end of string a0
- bne.s 1$
- subq #1,a0
- move.l a0,a2
- move.l a1,a0
- move.l a2,a1
- bsr.s stringcopy ; Paste a1 to a0
- move.l (a7)+,a2
- rts
-
- ;==========================================
- ;= Convert value in a0 to buffer a1 (Hex) =
- ;==========================================
-
- convert:
- movem.l d2-d3/a2,-(a7)
- lea.l convtable(pc),a2
- move.l a0,d1
- moveq #7,d3
- 1$ move.l d1,d2
- and.l #$f,d2
- move.l d2,d0
- move.b 0(a2,d0),-(a7)
- lsr.l #4,d1
- dbra d3,1$
- moveq #7,d3
- 2$ move.b (a7)+,(a1)+
- dbra d3,2$
- movem.l (a7)+,d2-d3/a2
- rts
-
-
-
-
- ;=========================================
- ;= Calculates lenght of string in buffer =
- ;= Returns lenght in d0 =
- ;=========================================
-
- length:
- clr.l d0
- move.l a5,-(a7)
- move.l buffer,a5
- 1$ addq #1,d0
- cmp.b #0,(a5)+
- bne.s 1$
- subq #1,d0
- move.l (a7)+,a5
- rts
- ;=======================================
- ;= Waits for closegadget to be pressed =
- ;=======================================
-
- waitforclose:
- move.l ($4).L,a6
- move.l a5,-(a7)
- move.l a0,a5
- 1$ move.l a5,a0
- move.l wd_UserPort(a0),a0
- move.l a0,-(a7)
- moveq #0,d1
- move.b mp_SigBit(a0),d1
- moveq #1,d0
- asl.l d1,d0
- jsr _LVOWait(a6) ; Wait for an event
- move.l (a7)+,a0 ; Get UserPort
- jsr _LVOGetMsg(a6) ; Get Message from IDCMP Port
- move.l d0,a1
- move.l im_Class(a1),d4
- jsr _LVOReplyMsg(a6) ; Reply the message
-
- cmp.l #CLOSEWINDOW,d4
- bne.s 1$
- move.l (a7)+,a5
- rts
-
-
- ;========================================
- ;= Prints current virusstatus in window =
- ;========================================
-
- printstatus:
- move.l window(pc),a0
- move.l wd_RPort(a0),a1
- move.l a1,rp ; Store RastPort
-
- moveq #0,d1
- move.b signal(pc),d1
- beq.s 1$ ; No extra message needed (=Clean)
- cmp.b #2,d1
- beq.s 1$ ; The same...
- move.l #message,Mt3 ; System has been modified!
- move.l #message,Mt4
- bra 12$
-
- 1$ move.l rp(pc),a0 ; Clear message box
- clr. d0
- clr.l d1
- lea.l MyTekst3a(pc),a1
- move.l IntuitionBase(pc),a6
- jsr _LVOPrintIText(a6)
-
- move.l #L9,Mt3 ; Clear previous(?) message!
- move.l #L9,Mt4
-
-
- 12$ move.l rp(pc),a0
- clr. d0
- clr.l d1
- move.l #MyTekst3,a1
- move.l IntuitionBase(pc),a6
- jsr _LVOPrintIText(a6)
-
- move.b signal,d1
- cmp.b #0,d1
- bne.s 2$
- lea.l L0(pc),a0
- bra.s 10$
- 2$ cmp.b #1,d1
- bne.s 3$
- lea.l L1(pc),a0
- bra.s 10$
- 3$ cmp.b #2,d1
- bne.s 4$
- lea.l L2(pc),a0
- bra.s 10$
- 4$ cmp.b #3,d1
- bne.s 5$
- lea.l L3(pc),a0
- bra.s 10$
- 5$ cmp.b #4,d1
- bne.s 6$
- lea.l L4(pc),a0
- bra.s 10$
- 6$ cmp.b #5,d1
- bne.s 7$
- lea.l L5(pc),a0
- bra.s 10$
- 7$ cmp.b #6,d1
- bne.s 8$
- lea.l L6(pc),a0
- bra.s 10$
- 8$ cmp.b #7,d1
- bne.s 9$
- lea.l L7(pc),a0
- bra.s 10$
- 9$ cmp.b #8,d1
- bne.s 11$
- lea.l L8(pc),a0
- 10$ move.l a0,Mt1
- move.l a0,Mt2
- move.l rp,a0
- lea.l MyTekst(pc),a1
- clr.l d0
- clr.l d1
- move.l IntuitionBase(pc),a6
- jsr _LVOPrintIText(a6)
- 11$ rts
-
-
- ;======================================
- ;= Prints buffer in ascii on a window =
- ;======================================
-
- printbuffer:
- move.l buffer(pc),a3
- move.l a3,a4
- move.l #1023,d1
- clr.l d0
- cloop move.b (a3)+,d0
- cmp.b #31,d0
- bls.s outrange
- cmp.b #127,d0
- bhs.s outrange
- move.b d0,(a4)+
- dbra d1,cloop
- bra.s printit
- outrange:
- move.b #'.',(a4)+
- dbra d1,cloop
- printit:
- move.l window2(pc),a0
- move.l wd_RPort(a0),rp2
- moveq #0,d3
- move.l buffer(pc),a3
- ploop move.l d3,d1
- mulu #8,d1
- add.l #20,d1
- move.w d1,y1
- subq #1,d1
- move.w d1,y2
-
-
- lea.l dummy(pc),a2
- move.l d3,d1
- mulu #64,d1
- move.l a3,a0
- add.l d1,a0
- moveq #63,d0
- 1$ move.b (a0)+,(a2)+ ; copy string to dummy
- dbra d0,1$
- move.b #0,(a2) ; end string with 0
-
- clr.l d0
- clr.l d1
- move.l rp2(pc),a0
- lea.l IText14(pc),a1
- move.l IntuitionBase(pc),a6
- jsr _LVOPrintIText(a6)
-
- addq #1,d3
- cmp.l #15,d3
- bls.s ploop
- rts
-
- ;============================
- ;= Read bootblock in buffer =
- ;============================
-
- readbootblock:
- move.w #READ,commando
- bsr.s bootio
- rts
-
- ;=============================
- ;= Write buffer to bootblock =
- ;=============================
-
- writebuffer:
- move.w #WRITE,commando
- bsr.s bootio
- rts
-
-
- ;==========================================
- ;= Multi function boot read/write routine =
- ;= =
- ;= io_error contains error on exit =
- ;= =
- ;==========================================
-
- bootio:
- move.l ($4).L,a6
- move.l DoIOVector(pc),a5 ; ?????????????????????????
- sub.l a1,a1
- jsr _LVOFindTask(a6)
- move.l d0,readreply+$10
- lea.l readreply(pc),a1
- jsr _LVOAddPort(a6)
- lea.l diskio(pc),a1
- moveq #0,d0
- move.b drive,d0
- clr.l d1
- lea.l devicename(pc),a0
- jsr _LVOOpenDevice(a6)
- tst.l d0
- beq.s tskip
- lea.l readreply(pc),a1
- jsr _LVORemPort(a6)
- bra trackerror
- tskip lea.l diskio(pc),a1
- move.l buffer,40(a1)
- move.l #readreply,14(a1)
- move.w #TD_CHANGESTATE,28(a1)
- jsr (a5) ; Jump into Rom !!!!
- move.l diskio+32,d6
- beq.s tskip2
- move.b #29,io_error
- bra terror ; No disk!
-
- tskip2 move.w commando,d5
- cmp.w #READ,d5
- bne.s 1$ ; Don't CMD_CLEAR for a write
- lea.l diskio(pc),a1 ; We will read a bootblock
- move.l buffer(pc),40(a1)
- move.l #readreply,14(a1) ; so, force a reading
- move.w #5,28(a1)
- jsr (a5) ; CMD_Clear (Clear trackbuffer)
-
- 1$ lea.l diskio(pc),a1
- move.l #readreply,14(a1)
- move.w commando,28(a1)
- move.l buffer(pc),40(a1)
- move.l #1024,36(a1)
- move.l #0,44(a1)
- move.l ($4).L,a6
- jsr (a5)
- move.b diskio+31,io_error ; Error number
-
- move.w commando,d5
- cmp.w #WRITE,d5
- bne.s 2$
-
- lea.l diskio(pc),a1
- move.l buffer(pc),40(a1)
- move.l #readreply,14(a1)
- move.w #4,28(a1) ; CMD_UPDATE
- move.l ($4).L,a6
- jsr (a5) ; Write all buffers out
- move.b diskio+31,io_error ; Get error number
-
- 2$ tst.b io_error
- beq.s tgood
- terror lea.l errormessage(pc),a1
- move.l window2(pc),a0
- move.l #0,a2
- move.l IntuitionBase(pc),a6
- jsr _LVOSetWindowTitles(a6)
- move.l ($4).L,a6
-
- tgood lea.l diskio(pc),a1
- move.w #9,28(a1) ; TD_MOTOR
- move.l #0,36(a1)
- jsr (a5)
-
- lea.l readreply(pc),a1
- jsr _LVORemPort(a6)
- lea.l diskio(pc),a1
- jsr _LVOCloseDevice(a6)
-
- trackerror:
- rts
-
- ;================================
- ;= The maincode of my Bootblock =
- ;================================
-
- bootcode:
- dc.b 'DOS',0
- dc.l 0
- root dc.l 880
- main move.l ($4).L,a6
- lea.l Dosname(pc),a1
- jsr _LVOFindResident(a6)
- move.l d0,a0
- move.l 22(a0),a0
- clr.l d0
- rts
- Dosname dc.b 'dos.library',0
- bootendcode:
-
- ;=========================================================
- ;= Routine which calculates the checksum of my bootblock =
- ;=========================================================
- even
-
- sum clr.l d0
- move.l buffer(pc),a0
- move.l #255,d1
- sumloop add.l (a0)+,d0
- bcc.s sumcont
- addq #1,d0
- sumcont dbra d1,sumloop
- moveq #-1,d1
- sub.l d0,d1
- move.l buffer,a2
- move.l d1,4(a2)
- rts
-
- ;=====================================
- ;= This routine will spawn a new cli =
- ;=====================================
-
- newcli:
- lea.l commandstring(pc),a0
- bra cont
-
- do_function_keys:
- cmp.w #FUNC_F2,d0
- bne 1$
- lea.l script2(pc),a0
- bra cont
- 1$ cmp.w #FUNC_F3,d0
- bne 2$
- lea.l script3(pc),a0
- bra cont
- 2$ cmp.w #FUNC_F4,d0
- bne 3$
- lea.l script4(pc),a0
- bra cont
- 3$ cmp.w #FUNC_F5,d0
- bne 4$
- lea.l script5(pc),a0
- bra cont
- 4$ cmp.w #FUNC_F6,d0
- bne 5$
- lea.l script6(pc),a0
- bra cont
- 5$ cmp.w #FUNC_F7,d0
- bne 6$
- lea.l script7(pc),a0
- bra cont
- 6$ cmp.w #FUNC_F8,d0
- bne 7$
- lea.l script8(pc),a0
- bra cont
- 7$ cmp.w #FUNC_F9,d0
- bne 8$
- lea.l script9(pc),a0
- bra cont
- 8$ cmp.w #FUNC_F10,d0
- bne ret
- lea.l script10(pc),a0
- cont move.l a0,d1
- move.l pcb_Input,d2
- move.l pcb_Output,d3
- move.l DOSBase(pc),a6
- jsr _LVOExecute(a6)
-
- ret move.b #0,keyfound
- clr.l d0
- rts
-
-
-
- ;====================================
- ;= Help routine: shows credits+help =
- ;====================================
-
- showhelp:
- move.w #450,hsize
- move.w #130,hsize+2 ; Adjust height
- move.l #HelpTitle,title2
- move.l IntuitionBase(pc),a6
- lea.l NewWindowStructure2,a0
- jsr _LVOOpenWindow(a6)
- move.l d0,window2
- move.l d0,a0
- move.l wd_RPort(a0),a0
- lea.l Text15(pc),a1
- clr.l d0
- clr.l d1
- jsr _LVOPrintIText(a6)
-
- move.l window2(pc),a0
- bsr waitforclose
-
- move.l IntuitionBase(pc),a6
- move.l window2(pc),a0
- jsr _LVOCloseWindow(a6)
-
- clr.l d0
- rts
-
- ;===========================
- ;= The preference routines =
- ;===========================
-
- preferences
- movem.l d0-d6/a0-a6,-(a7)
- move.l IntuitionBase(pc),a6
- lea.l NewWindowStructure3(pc),a0
- jsr _LVOOpenWindow(a6)
- move.l d0,window3
- beq pout
- move.l d0,a0
- move.l wd_RPort(a0),a0
- lea.l Text24(pc),a1
- clr.l d0
- clr.l d1
- jsr _LVOPrintIText(a6)
-
- move.b patchstatus,tempstatus
- bsr reflect
-
- plook move.l window3(pc),a0
- move.l ($4).L,a6
- move.l wd_UserPort(a0),a0
- move.l a0,-(a7)
- moveq #0,d1
- move.b mp_SigBit(a0),d1
- moveq #1,d0
- asl.l d1,d0
- jsr _LVOWait(a6) ; Wait for an event
- move.l (a7)+,a0 ; Get UserPort
- jsr _LVOGetMsg(a6) ; Get Message from IDCMP Port
- move.l d0,a1
- move.l im_Class(a1),d4
- move.l im_Address(a1),d5
- jsr _LVOReplyMsg(a6) ; Reply the message
-
- cmp.l #CLOSEWINDOW,d4
- beq.s p_cancel
- cmp.l #GADGETUP,d4
- bne plook
- move.l d5,a1
- move.w GadgetID(a1),d0
-
-
-
- cmp.w #USE,d0
- beq p_use
- cmp.w #CANCEL,d0
- beq p_cancel
- cmp.w #SAVE,d0
- beq p_save
- cmp.w #NOCARE,d0
- beq p_nocare
- cmp.w #MOUSEACC,d0
- beq p_mouse
- cmp.w #FUNCTIONKEYS,d0
- bne plook
- p_functionkeys:
- eor.b #FUNCTION_PATCH,tempstatus
- bra plook
- p_use:
- move.b tempstatus,patchstatus
- bra pexit
- p_cancel
- bra pexit
- p_save
- move.b tempstatus,patchstatus
- bsr Saddam
- bsr save_prefs
- bra pexit
- p_nocare
- eor.b #NOCARE_PATCH,tempstatus
- bra plook
- p_mouse
- eor.b #MOUSE_PATCH,tempstatus
- bra plook
-
- pexit move.l IntuitionBase(pc),a6
- move.l window3(pc),a0
- jsr _LVOCloseWindow(a6)
- bsr reflect
- btst.b #0,patchstatus(pc)
- bne.s 1$
- bsr nocare_off
- bra.s 2$
- 1$ bsr nocare
- 2$ movem.l (a7)+,d0-d6/a0-a6
- pout clr.l d0
- rts
-
-
-
- reflect:
- clr.w d1
- move.b patchstatus(pc),d0
- move.b d0,d1
- and.b #1,d1
- lsl.w #7,d1
- and.w #$ff7f,tog1
- or.w d1,tog1
- clr.w d1
- move.b d0,d1
- and.b #2,d1
- lsl.w #6,d1
- and.w #$ff7f,tog2
- or.w d1,tog2
- clr.w d1
- move.b d0,d1
- and.b #4,d1
- lsl.w #5,d1
- and.w #$ff7f,tog3
- or.w d1,tog3
- rts
-
-
-
-
- ;======================
- ;= The reboot routine =
- ;======================
-
- reboot bsr yesno2 ; Want to reboot???
- tst.l d0
- bne.s 1$ ; noop
- rts
- 1$ move.l ($4).L,a6
- move.l #-1,$4
- cmp.w #V36_EXEC,LIB_VERSION(a6)
- blt.s old_exec
- jmp TEMP_ColdReboot(a6) ;Let Exec do it...
- ;NOTE: Control flow never returns to here
-
-
- old_exec:
- lea.l GoAway(pc),a5 ;address of code to execute
- jsr _LVOSupervisor(a6) ;trap to code at (a5)...
- ;NOTE: Control flow never returns to here
-
-
- ;-------------- MagicResetCode ---------DO NOT CHANGE-----------------------
-
- CNOP 0,4 ;IMPORTANT! Longword align!
- GoAway: lea.l (MAGIC_ROMEND).L,a0 ;(end of ROM)
- sub.l MAGIC_SIZEOFFSET(a0),a0 ;(end of ROM)-(ROM size)=PC
- move.l 4(a0),a0 ;Get Initial Program Counter
- subq.l #2,a0 ;now points to second RESET
- reset ;first RESET instruction
- jmp (a0) ;CPU Prefetch executes this
- ;NOTE: the RESET and JMP instructions must share a longword!
-
- ;---------------------------------------DO NOT CHANGE-----------------------
-
-
-
- ;=======================
- ;= The Cleanup Routine =
- ;=======================
-
- exit move.l $4,a6
- move.b #DIE,status
- bsr nocare_off ; Remove Nocare patch
- move.l $4,a6
- lea.l InputRequestBlock(pc),a0
- move.w #IND_REMHANDLER,io_Command(a0)
- move.l #HandlerStuff,io_Data(a0)
- move.l a0,a1
- jsr _LVODoIO(a6) ; Remove handler
- lea.l InputRequestBlock(pc),a0
- jsr _LVOCloseDevice(a6)
-
- move.l InputDevPort,a1
- jsr _LVORemPort(a6)
-
- move.l InputDevPort,a1
- move.l #mp_Size,d0
- jsr _LVOFreeMem(a6)
-
- find move.l DOSBase,a6 ; Give Check Task time to die
- move.l #25,d1 ; as I have a pri of 2
- jsr _LVODelay(a6)
- move.l $4,a6
- lea.l CHECK_NAME(pc),a1
- jsr _LVOFindTask(a6)
- tst.l d0
- bne.s find ; Wait until Check Task is dead
-
- move.l checktask(pc),a1
- move.l #TC_SIZE,d1
- jsr _LVOFreeMem(a6) ; Free Memory of check task
-
- move.l ($4).L,a6
- move.l GfxBase,a1
- jsr _LVOCloseLibrary(a6)
- nographics:
- move.l IntuitionBase(pc),a1
- jsr _LVOCloseLibrary(a6)
- nointuition:
- move.l DOSBase(pc),a1
- jsr _LVOCloseLibrary(a6)
- nodos jsr _LVODisable(a6) ; Disable interupts (avoid AllocMem's)
- move.l DOSBase(pc),a6 ; Assume Dos hasn't moved (???)
- move.l #mymain,d1
- sub.l #4,d1
- lsr.l #2,d1 ; make BPTR !!!!!!
- jsr _LVOUnLoadSeg(a6) ; Unload this code
- move.l $4,a6
- move.l #0,a1
- jsr _LVORemTask(a6) ; Kill myself
- rts
-
-
- ;================
- ;= Data section =
- ;================
-
- Section "Main",data
-
- Title dc.b 'BigBrother V3.12 by EA van Breemen',10,13
- dc.b 169,'1992 Orega Holland.',10,13,0
- Title_Size equ *-Title
- even
-
- Active_Title:
- dc.b 'BigBrother is already active.',10,13,0
- Active_Size equ *-Active_Title
- even
-
- NewWindowStructure1:
- dc.w 62,30
- dc.w 330,130
- dc.b 1,3
- dc.l GADGETUP+CLOSEWINDOW+RAWKEY
- dc.l WINDOWDRAG+WINDOWDEPTH+WINDOWCLOSE+ACTIVATE+NOCAREREFRESH
- dc.l Gadget1
- dc.l NULL
- dc.l CopyrightName
- dc.l NULL
- dc.l NULL
- dc.w 5,5
- dc.w -1,-1
- dc.w WBENCHSCREEN
- NewWindowStructure2:
- dc.w 0,0
- hsize dc.w 550,160
- dc.b 1,3
- dc.l CLOSEWINDOW
- dc.l ACTIVATE+NOCAREREFRESH+WINDOWCLOSE
- dc.l NULL
- dc.l NULL
- title2 dc.l InitTitle
- dc.l NULL
- dc.l NULL
- dc.w 5,5
- dc.w -1,-1
- dc.w WBENCHSCREEN
-
- NewWindowStructure3:
- dc.w 0,0
- dc.w 400,150
- dc.b 1,3
- dc.l CLOSEWINDOW+GADGETUP
- dc.l ACTIVATE+NOCAREREFRESH+WINDOWCLOSE
- dc.l Gadget10
- dc.l NULL
- dc.l PrefsTitle
- dc.l NULL
- dc.l NULL
- dc.w 5,5
- dc.w -1,-1
- dc.w WBENCHSCREEN
-
- CopyrightName:
- dc.b 'Big Brother V3.12',0
- dc.b ' ',169,'1989/1990',0
- cnop 0,2
- InitTitle:
- dc.b 'BootBlock:',0
- even
- ViewTitle:
- dc.b 'Contents of ExecBase:',0
- even
- InstallTitle:
- dc.b 'Installing BootBlock',0
- even
- HelpTitle:
- dc.b 'Help',0
- even
- PrefsTitle:
- dc.b 'Preferences',0
- even
- install_message:
- dc.b 'Disk has been installed',0
- even
- install_fail:
- dc.b 'Install has failed',0
- even
- disk_protected:
- dc.b 'Disk is write-protected!',0
- even
- disk_changed:
- dc.b 'Disk has been removed!',0
- even
- StandardBootBlock:
- dc.b 'Standard BootBlock by Orega Holland.'
- dc.b ' Copyright 1989,1990. Installed by Big Brother V3.12'
- Standardend:
- even
- prefs_file:
- dc.b 's:big_prefs',0
- even
- topaz80:
- dc.l topazname
- dc.w TOPAZ_EIGHTY
- dc.b 0,0
- topazname:
- dc.b 'topaz.font',0
- even
-
- Gadget1:
- dc.l Gadget2
- dc.w 29,22
- dc.w 80,15
- dc.w GADGHIMAGE
- dc.w RELVERIFY
- dc.w BOOLGADGET
- dc.l Border1
- dc.l RenderBorder1
- dc.l IText1
- dc.l NULL
- dc.l NULL
- dc.w DRIVE
- dc.l NULL
- Border1:
- dc.w 0,0
- dc.b 2,0,RP_JAM2
- dc.b 3
- dc.l BorderVectors1
- dc.l Border1a
- Border1a:
- dc.w 0,0
- dc.b 1,0,RP_JAM2
- dc.b 3
- dc.l BorderVectors1a
- dc.l NULL
- RenderBorder1:
- dc.w 0,0
- dc.b 1,0,RP_JAM2
- dc.b 3
- dc.l BorderVectors1
- dc.l RenderBorder1a
- RenderBorder1a:
- dc.w 0,0
- dc.b 2,0,RP_JAM2
- dc.b 3
- dc.l BorderVectors1a
- dc.l NULL
-
- BorderVectors1:
- dc.w 0,15
- dc.w 0,0
- dc.w 80,0
- BorderVectors1a:
- dc.w 80,0
- dc.w 80,15
- dc.w 0,15
-
-
- ;======== Custom Drawing =======================
-
- Border2:
- dc.w 30,96
- dc.b 2,0,RP_JAM2
- dc.b 3
- dc.l BorderVectors2
- dc.l Border3
- Border3:
- dc.w 30,96
- dc.b 1,0,RP_JAM2
- dc.b 3
- dc.l BorderVectors2a
- dc.l NULL
- BorderVectors2: ; Tekstbox of mainwindow
- dc.w 0,26
- dc.w 0,0
- dc.w 280,0
- BorderVectors2a:
- dc.w 280,0
- dc.w 280,26
- dc.w 0,26
- MyTekst:
- dc.b 1,0,RP_JAM2,0
- dc.w 45,110
- dc.l topaz80
- Mt1 dc.l NULL
- dc.l MyTekst2
- MyTekst2:
- dc.b 2,0,RP_JAM1,0
- dc.w 44,109
- dc.l topaz80
- Mt2 dc.l NULL
- dc.l NULL
- MyTekst3:
- dc.b 1,0,RP_JAM2,0
- dc.w 45,100
- dc.l topaz80
- Mt3 dc.l NULL
- dc.l MyTekst4
- MyTekst4:
- dc.b 2,0,RP_JAM1,0
- dc.w 44,99
- dc.l topaz80
- Mt4 dc.l NULL
- dc.l NULL
-
-
- ;=====================================================
- ;= IntuiText structures for clearing the message box =
- ;=====================================================
-
- MyTekst3a:
- dc.b 1,0,RP_JAM2,0
- dc.w 45,100
- dc.l topaz80
- dc.l L10
- dc.l MyTekst4a
- MyTekst4a:
- dc.b 1,0,RP_JAM2,0
- dc.w 44,99
- dc.l topaz80
- dc.l L10
- dc.l MyTekst3b
- MyTekst3b:
- dc.b 1,0,RP_JAM2,0
- dc.w 45,110
- dc.l topaz80
- dc.l L10
- dc.l MyTekst4b
- MyTekst4b:
- dc.b 1,0,RP_JAM2,0
- dc.w 44,109
- dc.l topaz80
- dc.l L10
- dc.l NULL
-
-
-
- MyTekst5:
- dc.b 1,0,RP_JAM2,0
- dc.w 40,25
- dc.l topaz80
- Mt5 dc.l NULL
- dc.l MyTekst6
- MyTekst6:
- dc.b 2,0,RP_JAM1,0
- dc.w 39,24
- dc.l topaz80
- Mt6 dc.l NULL
- dc.l NULL
-
- ;=====================================
-
-
- IText1:
- dc.b 1,0,RP_JAM2,0
- dc.w 21,3
- dc.l topaz80
- dc.l DummyTekst
- dc.l IText1a
- IText1a:
- dc.b 1,0,RP_JAM2,0
- dc.w 22,4
- dc.l topaz80
- dc.l ITextText1
- dc.l IText1b
- IText1b:
- dc.b 2,0,RP_JAM1,0
- dc.w 21,3
- dc.l topaz80
- dc.l ITextText1
- dc.l NULL
-
- ITextText1:
- dc.b 'DF0:',0
- cnop 0,2
- DummyTekst:
- dc.b ' ',0
- cnop 0,2
- Gadget2:
- dc.l Gadget3
- dc.w 128,46
- dc.w 80,15
- dc.w GADGHIMAGE
- dc.w RELVERIFY
- dc.w BOOLGADGET
- dc.l Border1
- dc.l RenderBorder1
- dc.l IText2
- dc.l NULL
- dc.l NULL
- dc.w MEMORY
- dc.l NULL
- IText2:
- dc.b 1,0,RP_JAM2,0
- dc.w 15,4
- dc.l topaz80
- dc.l ITextText2
- dc.l IText2b
- IText2b:
- dc.b 2,0,RP_JAM1,0
- dc.w 14,3
- dc.l topaz80
- dc.l ITextText2
- dc.l NULL
- ITextText2:
- dc.b 'Memory',0
- cnop 0,2
- Gadget3:
- dc.l Gadget4
- dc.w 229,22
- dc.w 80,15
- dc.w GADGHIMAGE
- dc.w RELVERIFY
- dc.w BOOLGADGET
- dc.l Border1
- dc.l RenderBorder1
- dc.l IText3
- dc.l NULL
- dc.l NULL
- dc.w INSTALL
- dc.l NULL
-
- IText3:
- dc.b 1,0,RP_JAM2,0
- dc.w 13,4
- dc.l topaz80
- dc.l ITextText3
- dc.l IText3b
- IText3b:
- dc.b 2,0,RP_JAM1,0
- dc.w 12,3
- dc.l topaz80
- dc.l ITextText3
- dc.l NULL
- ITextText3:
- dc.b 'Install',0
- cnop 0,2
- Gadget4:
- dc.l Gadget5
- dc.w 29,46
- dc.w 80,15
- dc.w GADGHIMAGE
- dc.w RELVERIFY
- dc.w BOOLGADGET
- dc.l Border1
- dc.l RenderBorder1
- dc.l IText4
- dc.l NULL
- dc.l NULL
- dc.w WATCH
- dc.l NULL
-
- IText4:
- dc.b 1,0,RP_JAM2,0
- dc.w 22,4
- dc.l topaz80
- dc.l ITextText4
- dc.l IText4b
- IText4b:
- dc.b 2,0,RP_JAM1,0
- dc.w 21,3
- dc.l topaz80
- dc.l ITextText4
- dc.l NULL
- ITextText4:
- dc.b 'Watch',0
- cnop 0,2
- Gadget5:
- dc.l Gadget6
- dc.w 229,46
- dc.w 80,15
- dc.w GADGHIMAGE
- dc.w RELVERIFY
- dc.w BOOLGADGET
- dc.l Border1
- dc.l RenderBorder1
- dc.l IText5
- dc.l NULL
- dc.l NULL
- dc.w CLEAR
- dc.l NULL
-
- IText5:
- dc.b 1,0,RP_JAM2,0
- dc.w 22,4
- dc.l topaz80
- dc.l ITextText5
- dc.l IText5b
- IText5b:
- dc.b 2,0,RP_JAM1,0
- dc.w 21,3
- dc.l topaz80
- dc.l ITextText5
- dc.l NULL
- ITextText5:
- dc.b 'Clear',0
- cnop 0,2
- Gadget6:
- dc.l Gadget7
- dc.w 128,22
- dc.w 80,15
- dc.w GADGHIMAGE
- dc.w RELVERIFY
- dc.w BOOLGADGET
- dc.l Border1
- dc.l RenderBorder1
- dc.l IText6
- dc.l NULL
- dc.l NULL
- dc.w VIEW
- dc.l NULL
-
- IText6:
- dc.b 1,0,RP_JAM2,0
- dc.w 22,4
- dc.l topaz80
- dc.l ITextText6
- dc.l IText6b
- IText6b:
- dc.b 2,0,RP_JAM1,0
- dc.w 21,3
- dc.l topaz80
- dc.l ITextText6
- dc.l NULL
- ITextText6:
- dc.b 'View',0
- even
-
- Gadget7:
- dc.l Gadget8
- dc.w 29,70
- dc.w 80,15
- dc.w GADGHIMAGE
- dc.w RELVERIFY
- dc.w BOOLGADGET
- dc.l Border1
- dc.l RenderBorder1
- dc.l IText7
- dc.l NULL
- dc.l NULL
- dc.w NEWSHELL
- dc.l NULL
- IText7:
- dc.b 1,0,RP_JAM2,0
- dc.w 10,4
- dc.l topaz80
- dc.l ITextText7
- dc.l IText7b
- IText7b:
- dc.b 2,0,RP_JAM1,0
- dc.w 9,3
- dc.l topaz80
- dc.l ITextText7
- dc.l NULL
- ITextText7:
- dc.b 'NewShell',0
-
- even
- Gadget8:
- dc.l Gadget9
- dc.w 229,70
- dc.w 80,15
- dc.w GADGHIMAGE
- dc.w RELVERIFY
- dc.w BOOLGADGET
- dc.l Border1
- dc.l RenderBorder1
- dc.l _IText8
- dc.l NULL
- dc.l NULL
- dc.w PREFS
- dc.l NULL
- _IText8:
- dc.b 1,0,RP_JAM2,0
- dc.w 23,4
- dc.l topaz80
- dc.l _ITextText8
- dc.l _IText8b
- _IText8b:
- dc.b 2,0,RP_JAM1,0
- dc.w 22,3
- dc.l topaz80
- dc.l _ITextText8
- dc.l NULL
- _ITextText8:
- dc.b 'Prefs',0
-
- even
-
- Gadget9:
- dc.l NULL
- dc.w 128,70
- dc.w 80,15
- dc.w GADGHIMAGE
- dc.w RELVERIFY
- dc.w BOOLGADGET
- dc.l Border1
- dc.l RenderBorder1
- dc.l _IT9
- dc.l NULL
- dc.l NULL
- dc.w REBOOT
- dc.l NULL
- _IT9:
- dc.b 1,0,RP_JAM2,0
- dc.w 15,4
- dc.l topaz80
- dc.l _ITT9
- dc.l _IT9b
- _IT9b:
- dc.b 2,0,RP_JAM1,0
- dc.w 14,3
- dc.l topaz80
- dc.l _ITT9
- dc.l NULL
- _ITT9:
- dc.b 'ReBoot',0
-
- even
-
- ;===========================
- ;= Gadgets for preferences =
- ;===========================
-
- Gadget10:
- dc.l Gadget11
- dc.w 220,30
- dc.w 15,9
- tog1 dc.w GADGHCOMP+SELECTED
- dc.w RELVERIFY+TOGGLESELECT
- dc.w BOOLGADGET
- dc.l RenderBorder4
- dc.l NULL
- dc.l NULL
- dc.l NULL
- dc.l NULL
- dc.w NOCARE
- dc.l NULL
-
- even
-
- Gadget11:
- dc.l Gadget12
- dc.w 220,50
- dc.w 15,9
- tog2 dc.w GADGHCOMP+SELECTED
- dc.w RELVERIFY+TOGGLESELECT
- dc.w BOOLGADGET
- dc.l RenderBorder4
- dc.l NULL
- dc.l NULL
- dc.l NULL
- dc.l NULL
- dc.w MOUSEACC
- dc.l NULL
-
- even
-
- Gadget12:
- dc.l Gadget13
- dc.w 220,70
- dc.w 15,9
- tog3 dc.w GADGHCOMP+SELECTED
- dc.w RELVERIFY+TOGGLESELECT
- dc.w BOOLGADGET
- dc.l RenderBorder4
- dc.l NULL
- dc.l NULL
- dc.l NULL
- dc.l NULL
- dc.w FUNCTIONKEYS
- dc.l NULL
-
- Gadget13:
- dc.l Gadget14
- dc.w 30,120
- dc.w 80,15
- dc.w GADGHIMAGE
- dc.w RELVERIFY
- dc.w BOOLGADGET
- dc.l Border1
- dc.l RenderBorder1
- dc.l PText13
- dc.l NULL
- dc.l NULL
- dc.w CANCEL
- dc.l NULL
- PText13:
- dc.b 1,0,RP_JAM2,0
- dc.w 15,4
- dc.l topaz80
- dc.l PTextText13
- dc.l PText13b
- PText13b:
- dc.b 2,0,RP_JAM1,0
- dc.w 14,3
- dc.l topaz80
- dc.l PTextText13
- dc.l NULL
- PTextText13:
- dc.b 'Cancel',0
-
- even
-
- Gadget14:
- dc.l Gadget15
- dc.w 130,120
- dc.w 80,15
- dc.w GADGHIMAGE
- dc.w RELVERIFY
- dc.w BOOLGADGET
- dc.l Border1
- dc.l RenderBorder1
- dc.l PText14
- dc.l NULL
- dc.l NULL
- dc.w USE
- dc.l NULL
- PText14:
- dc.b 1,0,RP_JAM2,0
- dc.w 26,4
- dc.l topaz80
- dc.l PTextText14
- dc.l PText14b
- PText14b:
- dc.b 2,0,RP_JAM1,0
- dc.w 25,3
- dc.l topaz80
- dc.l PTextText14
- dc.l NULL
- PTextText14:
- dc.b 'Use',0
-
- even
-
- Gadget15:
- dc.l NULL
- dc.w 230,120
- dc.w 80,15
- dc.w GADGHIMAGE
- dc.w RELVERIFY
- dc.w BOOLGADGET
- dc.l Border1
- dc.l RenderBorder1
- dc.l PText15
- dc.l NULL
- dc.l NULL
- dc.w SAVE
- dc.l NULL
- PText15:
- dc.b 1,0,RP_JAM2,0
- dc.w 22,4
- dc.l topaz80
- dc.l PTextText15
- dc.l PText15b
- PText15b:
- dc.b 2,0,RP_JAM1,0
- dc.w 21,3
- dc.l topaz80
- dc.l PTextText15
- dc.l NULL
- PTextText15:
- dc.b 'Save',0
-
- even
-
- ;======== Tekst structures for viewmemory ============
-
- IText8:
- dc.b 1,0,RP_JAM2,0
- dc.w 11,26
- dc.l topaz80
- MTE8 dc.l NULL
- dc.l IText8b
- IText8b:
- dc.b 2,0,RP_JAM1,0
- dc.w 10,25
- dc.l topaz80
- MTE8b dc.l NULL
- dc.l IText9
-
- IText9:
- dc.b 1,0,RP_JAM2,0
- dc.w 11,36
- dc.l topaz80
- MTE9 dc.l NULL
- dc.l IText9b
- IText9b:
- dc.b 2,0,RP_JAM1,0
- dc.w 10,35
- dc.l topaz80
- MTE9b dc.l NULL
- dc.l IText10
-
- IText10:
- dc.b 1,0,RP_JAM2,0
- dc.w 11,46
- dc.l topaz80
- MTE10 dc.l NULL
- dc.l IText10b
- IText10b:
- dc.b 2,0,RP_JAM1,0
- dc.w 10,45
- dc.l topaz80
- MTE10b dc.l NULL
- dc.l IText11
-
- IText11:
- dc.b 1,0,RP_JAM2,0
- dc.w 11,56
- dc.l topaz80
- MTE11 dc.l NULL
- dc.l IText11b
- IText11b:
- dc.b 2,0,RP_JAM1,0
- dc.w 10,55
- dc.l topaz80
- MTE11b dc.l NULL
- dc.l IText12
-
- IText12:
- dc.b 1,0,RP_JAM2,0
- dc.w 11,66
- dc.l topaz80
- MTE12 dc.l NULL
- dc.l IText12b
- IText12b:
- dc.b 2,0,RP_JAM1,0
- dc.w 10,65
- dc.l topaz80
- MTE12b dc.l NULL
- dc.l IText13
-
- IText13:
- dc.b 1,0,RP_JAM2,0
- dc.w 11,81
- dc.l topaz80
- MTE13 dc.l NULL
- dc.l IText13b
- IText13b:
- dc.b 2,0,RP_JAM1,0
- dc.w 10,80
- dc.l topaz80
- MTE13b dc.l NULL
- dc.l NULL
- IText14:
- dc.b 1,0,RP_JAM2,0
- dc.w 10
- y1 dc.w 0
- dc.l topaz80
- MTE14 dc.l dummy
- dc.l IText14b
- IText14b:
- dc.b 2,0,RP_JAM1,0
- dc.w 9
- y2 dc.w 0
- dc.l topaz80
- MTE14b dc.l dummy
- dc.l NULL
-
- ;== Help strings =====================================
-
- Text15:
- dc.b 1,0,RP_JAM2,0
- dc.w 11,21
- dc.l topaz80
- dc.l T15
- dc.l Text15b
- Text15b:
- dc.b 2,0,RP_JAM1,0
- dc.w 10,20
- dc.l topaz80
- dc.l T15
- dc.l Text16
- T15 dc.b 'This program is programmed by EA van Breemen',0
- even
- Text16:
- dc.b 1,0,RP_JAM2,0
- dc.w 11,31
- dc.l topaz80
- dc.l T16
- dc.l Text16b
- Text16b:
- dc.b 2,0,RP_JAM1,0
- dc.w 10,30
- dc.l topaz80
- dc.l T16
- dc.l Text17
- T16 dc.b 'Copyright by Orega Holland',0
- even
- Text17:
- dc.b 1,0,RP_JAM2,0
- dc.w 11,41
- dc.l topaz80
- dc.l T17
- dc.l Text17b
- Text17b:
- dc.b 2,0,RP_JAM1,0
- dc.w 10,40
- dc.l topaz80
- dc.l T17
- dc.l Text18
- T17 dc.b 169,'1989-1992. Any commercially based reproducing',0
- even
- Text18:
- dc.b 1,0,RP_JAM2,0
- dc.w 11,51
- dc.l topaz80
- dc.l T18
- dc.l Text18b
- Text18b:
- dc.b 2,0,RP_JAM1,0
- dc.w 10,50
- dc.l topaz80
- dc.l T18
- dc.l Text19
- T18 dc.b 'by any means of this shareware product is illegal.',0
- even
- Text19:
- dc.b 1,0,RP_JAM2,0
- dc.w 11,61
- dc.l topaz80
- dc.l T19
- dc.l Text19b
- Text19b:
- dc.b 2,0,RP_JAM1,0
- dc.w 10,60
- dc.l topaz80
- dc.l T19
- dc.l Text20
- T19 dc.b 'If you find this program usefull please send $10',0
- even
- Text20:
- dc.b 1,0,RP_JAM2,0
- dc.w 11,71
- dc.l topaz80
- dc.l T20
- dc.l Text20b
- Text20b:
- dc.b 2,0,RP_JAM1,0
- dc.w 10,70
- dc.l topaz80
- dc.l T20
- dc.l Text21
- T20 dc.b 'to: EA van Breemen, Berliozplein 15, 2651 VG',0
- even
- Text21:
- dc.b 1,0,RP_JAM2,0
- dc.w 11,81
- dc.l topaz80
- dc.l T21
- dc.l Text21b
- Text21b:
- dc.b 2,0,RP_JAM1,0
- dc.w 10,80
- dc.l topaz80
- dc.l T21
- dc.l Text22
- T21 dc.b 'Berkel en Rodenrijs, Holland.',0
- even
- Text22:
- dc.b 1,0,RP_JAM2,0
- dc.w 11,101
- dc.l topaz80
- dc.l T22
- dc.l Text22b
- Text22b:
- dc.b 2,0,RP_JAM1,0
- dc.w 10,100
- dc.l topaz80
- dc.l T22
- dc.l Text23
- T22 dc.b 'Help: Ctrl-F1 ..... NewShell',0
- even
- Text23:
- dc.b 1,0,RP_JAM2,0
- dc.w 11,111
- dc.l topaz80
- dc.l T23
- dc.l Text23b
- Text23b:
- dc.b 2,0,RP_JAM1,0
- dc.w 10,110
- dc.l topaz80
- dc.l T23
- dc.l NULL
- T23 dc.b ' Ctrl-HELP ..... BigBrother',0
- even
-
- Text24:
- dc.b 1,0,RP_JAM2,0
- dc.w 31,31
- dc.l topaz80
- dc.l T24
- dc.l Text24b
- Text24b:
- dc.b 2,0,RP_JAM1,0
- dc.w 30,30
- dc.l topaz80
- dc.l T24
- dc.l Text25
- T24 dc.b 'NoCare patch installed:',0
- even
-
- Text25:
- dc.b 1,0,RP_JAM2,0
- dc.w 31,51
- dc.l topaz80
- dc.l T25
- dc.l Text25b
- Text25b:
- dc.b 2,0,RP_JAM1,0
- dc.w 30,50
- dc.l topaz80
- dc.l T25
- dc.l Text26
- T25 dc.b 'Mouse accelerator:',0
- even
- Text26:
- dc.b 1,0,RP_JAM2,0
- dc.w 31,71
- dc.l topaz80
- dc.l T26
- dc.l Text26b
- Text26b:
- dc.b 2,0,RP_JAM1,0
- dc.w 30,70
- dc.l topaz80
- dc.l T26
- dc.l NULL
- T26 dc.b 'Function keys enabled:',0
- even
-
-
- RenderBorder4:
- dc.w -1,-1
- dc.b 1,0,RP_JAM2
- dc.b 3
- dc.l BorderVectors4
- dc.l RenderBorder4a
- RenderBorder4a:
- dc.w -1,-1
- dc.b 2,0,RP_JAM2
- dc.b 3
- dc.l BorderVectors4a
- dc.l NULL
-
- BorderVectors4:
- dc.w 0,10
- dc.w 0,0
- dc.w 17,0
- BorderVectors4a:
- dc.w 17,0
- dc.w 17,10
- dc.w 0,10
-
-
-
-
- ;=====================================================
-
- expert dc.b 0,1,2,2,3,4,5,6,3,4,7
- dc.b 7,3,4,7,7,8,8,0,1,8,8
- dc.b 5,5,8,8,7,7,8,8,7,7
-
- even
-
- convtable dc.b '0123456789abcdef',0
- even
-
- message dc.b 'This system has been modified.',0
- L0 dc.b 'Memory is clean.',0
- L1 dc.b 'Sca virus.',0
- L2 dc.b 'Unknown virus or not mounted rad.',0
- L3 dc.b 'Non reset virus.',0
- L4 dc.b 'Saddam like virus.',0
- L5 dc.b 'Dasa virus.',0
- L6 dc.b 'Dasa like virus.',0
- L7 dc.b 'ByteBandit or Lamer virus.',0
- L8 dc.b 'Unknown system configuration???',0
- L9 dc.b 'System has not been modified. ',0
- L10 dc.b ' ',0
-
- even
-
- TaskName dc.b 'RAD',0
- even
- devicename dc.b 'trackdisk.device',0
- even
- MyPortName dc.b 'BigBrother Port',0
- even
- errormessage dc.b 'BootBlock Read/Write Error.',0
- even
- found_rad dc.b 'RadTask has been found.',0
- even
- no_found_rad dc.b 'RadTask has not been found.',0
- even
- Alertstring dc.w 170
- dc.b 15
- dc.b '! ! ! ! ! W A R N I N G ! ! ! ! ! ',0
- dc.b 1
- dc.w 176
- dc.b 27
- dc.b 'Are you sure to clear the memory?',0
- dc.b 1
- dc.w 10
- dc.b 39
- dc.b 'Press <LEFT MOUSE BUTTON> for OK ---- Press <RIGHT MOUSE BUTTON> for CANCEL',0
- dc.b 0
- even
- Alertstring2 dc.w 170
- dc.b 15
- dc.b '! ! ! ! ! W A R N I N G ! ! ! ! ! ',0
- dc.b 1
- dc.w 176
- dc.b 27
- dc.b 'Are you sure you want to Reboot? ',0
- dc.b 1
- dc.w 10
- dc.b 39
- dc.b 'Press <LEFT MOUSE BUTTON> for OK ---- Press <RIGHT MOUSE BUTTON> for CANCEL',0
- dc.b 0
- even
-
- Alertstring3 dc.w 170
- dc.b 15
- dc.b '! ! ! ! ! W A R N I N G ! ! ! ! ! ',0
- dc.b 1
- dc.w 176
- dc.b 27
- dc.b 'Are you sure you want to quit ? ',0
- dc.b 1
- dc.w 10
- dc.b 39
- dc.b 'Press <LEFT MOUSE BUTTON> for OK ---- Press <RIGHT MOUSE BUTTON> for CANCEL',0
- dc.b 0
- even
-
-
- ;================
- ;= Library data =
- ;================
-
- DosName dc.b 'dos.library',0
- cnop 0,2
- IntuitionName dc.b 'intuition.library',0
- cnop 0,2
- GraphicsName dc.b 'graphics.library',0
- cnop 0,2
- coldcapture dc.b 'ColdCapture - Offset 42 :$',0
- coolcapture dc.b 'CoolCapture - Offset 46 :$',0
- kickmemptr dc.b 'KickMemPtr - Offset 546 :$',0
- kicktagptr dc.b 'KickTagPtr - Offset 550 :$',0
- doio_vector dc.b 'DoIO Vector - Offset -454 :$',0
-
- number dc.b '00000000',0
- even
-
- BIG_NAME dc.b 'BigBrother Process',0
- CHECK_NAME dc.b 'Check Task',0
- even
- NIL_NAME dc.b 'NIL:',0
- even
-
- acc dc.w 3
-
-
- script2 dc.b 'Execute s:F2',0
- script3 dc.b 'Execute s:F3',0
- script4 dc.b 'Execute s:F4',0
- script5 dc.b 'Execute s:F5',0
- script6 dc.b 'Execute s:F6',0
- script7 dc.b 'Execute s:F7',0
- script8 dc.b 'Execute s:F8',0
- script9 dc.b 'Execute s:F9',0
- script10 dc.b 'Execute s:F10',0
-
-
-
- ;=====================
- ;= Input Device data =
- ;=====================
-
- InputDeviceName dc.b 'input.device',0
- even
-
-
-
- df0 dc.l 'DF0:'
- df1 dc.l 'DF1:'
- df2 dc.l 'DF2:'
- df3 dc.l 'DF3:'
-
- dc.b ' DoIO vector:'
- even
- DoIOVector dc.l $fc06dc ; DoIO Vector for V1.2
- TrackDiskIO dc.l $0
- patchstatus dc.b 1
- even
-
- commandstring dc.b 'newshell "con:0/0/639/100/Big Brother V3.12"',0
- cnop 0,2
-
- even
- section "Main",bss
-
-
- DOSBase ds.l 1
- GfxBase ds.l 1
- IntuitionBase ds.l 1
- window ds.l 1
- window2 ds.l 1
- window3 ds.l 1
- oldopenwindow ds.l 1
- rp ds.l 1
- rp2 ds.l 1
- buffer ds.l 1
- keyfound ds.w 1
- commando ds.w 1
- Mode ds.b 1
- signal ds.b 1
- drive ds.b 1
- io_error ds.b 1
- even
- diskio ds.l 20
- readreply ds.l 8
- memorymask ds.l 1
- filehandle ds.l 1
- lock ds.l 1
- virusmask ds.l 1
- keymask ds.l 1
- bigtask ds.l 1
- InputDevPort ds.l 1
-
- InputRequestBlock ds.b $30
- even
- HandlerStuff ds.b $16
- even
- dummy ds.b 70
- even
- userport ds.l 1
- myseg ds.l 1
- pcb_Input ds.l 1
- pcb_Output ds.l 1
-
- tempstatus ds.b 1
- status ds.b 1
- even
- stack ds.l 256
- checktask ds.l 1
-
-
- ;=========================
- ;= The end of the source =
- ;=========================
-
-
-
-
-
- end
-
-
-
-
-