home *** CD-ROM | disk | FTP | other *** search
- opt c-,d-,l-,o1+,o2+,p-,x-
-
- * ---------------------------------------------------------------------------
- * ----- NewBoot V1.1 Install -----
- * ----- ~~~~~~~~~~~~~~~~~~~~~~~~~~ -----
- * ----- © by André Wichmann of CLUSTER -----
- * ----- Aragorn 29/09/1990 - 30/09/1990. -----
- * ---------------------------------------------------------------------------
-
- *
- * NTSC version
- *
-
- incdir ram:include/
- include exec/exec_lib.i
- include exec/execbase.i
- include exec/memory.i
- include intuition/intuition_lib.i
- include graphics/graphics_lib.i
- include graphics/rastport.i
-
- SECTION "",CODE_C
-
- _Main lea BootBlock(pc),a0 calc checksum
- move.w #$ff,d0
- moveq #0,d1
- move.l a0,a2
- Loop add.l (a0)+,d1
- bcc.s Carry
- addq.l #1,d1
- Carry dbra d0,Loop
- not.l d1
- add.l 4(a2),d1
- bcc.s Carry2
- addq.l #1,d1
- Carry2 move.l d1,4(a2)
- sub.l a1,a1
- CALLEXEC FindTask
- move.l d0,ReplyPort+16
- lea ReplyPort(pc),a1
- CALLEXEC AddPort
- lea DiskIO(pc),a1
- move.l #ReplyPort,14(a1)
- move.l #0,d0
- clr.l d1
- lea Trdname(pc),a0
- CALLEXEC OpenDevice
- lea DiskIO(pc),a1
- move.w #3,28(a1)
- move.l #BootBlock,40(a1)
- move.l #2*512,36(a1)
- move.l #0*512,44(a1)
- CALLEXEC DoIO
- move.w #4,28(a1)
- CALLEXEC DoIO
- move.w #9,28(a1)
- move.l #0,36(a1)
- CALLEXEC DoIO
- lea ReplyPort(pc),a1
- CALLEXEC RemPort
- lea DiskIO(pc),a1
- CALLEXEC CloseDevice
- moveq #0,d0
- rts
-
- Trdname dc.b "trackdisk.device",0
- even
- DiskIO ds.l 20
- ReplyPort ds.l 8
-
- opt p+
-
- tf_BaseLine equ 26
- tf_CharData equ 34
- tf_Modulo equ 38
-
- * Dos data
-
- BootBlock dc.b "DOS",0 DOS ID
- dc.l $0 Checksum
- dc.l $370 Ptr on rootblock
-
- * DOS stuff
-
- lea dosname(pc),a1 DOS Startup
- move.l 4.w,a6
- jsr -96(a6) FindResident()
- move.l d0,a0
- move.l 22(a0),a0
- clr.l d0 and return
-
- * Own code
-
- movem.l d0-d7/a0-a6,-(sp) save regs
- btst #10,$dff016 right mb ?
- bne.s DoBB
- move.w #$044,$dff180 set color
- move.w #$044,$dff182
- move.w #$044,$dff184
- move.w #$044,$dff186
- bra NoBB
- DoBB move.w #$440,$dff180 set color
- move.w #$440,$dff182
- move.w #$440,$dff184
- move.w #$440,$dff186
-
- * Clear reset
-
- move.l 4.w,a6 get SysBase
- clr.l CoolCapture(a6) clear Reset-vectors
- clr.l ColdCapture(a6)
- clr.l KickMemPtr(a6)
- clr.l KickTagPtr(a6)
-
- * Install New OpenWindow
-
- move.l #NewOpenEnd-NewOpen,d0 Get mem
- clr.l d1
- jsr _LVOAllocMem(a6)
- move.l d0,a5
- lea Intname(pc),a1 open int-lib
- clr.l d0
- jsr _LVOOpenLibrary(a6)
- move.l d0,a0
- lea OldOpen(pc),a1
- move.l _LVOOpenWindow+2(a0),(a1) save old OpenWindow ptr
- move.l a5,_LVOOpenWindow+2(a0) set new OpenWindow ptr
- lea NewOpen(pc),a0 copy new routine
- move.l #NewOpenEnd-NewOpen-1,d0
- CopyNew move.b (a0)+,(a5)+
- dbra d0,CopyNew
-
- * Kill Fastmem optionally
-
- btst #6,$bfe001
- bne.s NoAllocFast
- AllocFast move.l #32768,d7 Start with 60000 bytes
- AllocLoop_1 move.l d7,d0 Alloc mem
- move.l #MEMF_FAST,d1
- jsr _LVOAllocMem(a6)
- tst.l d0
- bne.s AllocLoop_1
- lsr.l #1,d7 half size
- tst.l d7
- bne.s AllocLoop_1
- move.w #$404,$dff180 set color
- move.w #$404,$dff182
- move.w #$404,$dff184
- move.w #$404,$dff186
- NoAllocFast
-
- * DOS stuff
-
- NoBB movem.l (sp)+,d0-d7/a0-a6
- rts
-
- * New _LVOOpenWindow routine
-
- NewOpen lea Windowtitle(pc),a1 set new title
- move.l a1,$1a(a0)
- move.l OldOpen(pc),_LVOOpenWindow+2(a6)
- jsr _LVOOpenWindow(a6)
- movem.l d0-d7/a0-a6,-(sp)
- move.l 4.w,a6
- jsr _LVOForbid(a6)
- lea Topazname(pc),a0 set ptr
- lea Topazstruct(pc),a1
- move.l a0,(a1)
- lea Gfxname(pc),a1 open gfx-lib
- clr.l d0
- jsr _LVOOpenLibrary(a6)
- move.l d0,a5
- move.l #TurboEnd-TurboText+8*256,d0
- move.l #MEMF_CLEAR!MEMF_PUBLIC,d1
- jsr _LVOAllocMem(a6)
- lea TTBase(pc),a0
- move.l d0,(a0)
- lea OldText+2(pc),a0
- move.l _LVOText+2(a5),(a0)
- move.l TTBase(pc),_LVOText+2(a5)
- move.l #92*8,d0 Mem for text-plane (blit)
- move.l #MEMF_CLEAR!MEMF_CHIP!MEMF_PUBLIC,d1
- jsr _LVOAllocMem(a6)
- lea PlaneMem(pc),a0
- move.l d0,(a0)
- move.l a5,a6
- lea TopazStruct(pc),a0
- jsr _LVOOpenFont(a6)
- lea TT_Font(pc),a0
- move.l d0,(a0)
- move.l d0,a0
- lea Basel_store+2(pc),a1
- move.w tf_BaseLine(a0),(a1)
- move.l TTBase(pc),a2
- add.l #CharMem-TurboText,a2
- moveq #31,d0
- Create_0to31 move.b #%00010000,(a2)+
- move.b #%00111000,(a2)+
- move.b #%00111000,(a2)+
- move.b #%01101100,(a2)+
- move.b #%01101100,(a2)+
- move.b #%11111110,(a2)+
- move.b #%11111110,(a2)+
- move.b #%00000000,(a2)+
- dbra d0,Create_0to31
- move.l TT_Font(pc),a5
- clr.l d4
- move.w tf_Modulo(a5),d4
- move.l tf_CharData(a5),a5
- moveq #95,d1
- Convert_Topaz move.l a5,a4
- moveq #7,d0
- Convert_Char move.b (a4),(a2)+
- add.l d4,a4
- dbra d0,Convert_Char
- addq.l #1,a5
- dbra d1,Convert_Topaz
- moveq #31,d0
- Create_128to159 move.b #%00010000,(a2)+
- move.b #%00111000,(a2)+
- move.b #%01101100,(a2)+
- move.b #%11000110,(a2)+
- move.b #%01101100,(a2)+
- move.b #%00111000,(a2)+
- move.b #%00010000,(a2)+
- move.b #%00000000,(a2)+
- dbra d0,Create_128to159
- moveq #95,d1
- Convert_Topaz2 move.l a5,a4
- moveq #7,d0
- Convert_Char2 move.b (a4),(a2)+
- add.l d4,a4
- dbra d0,Convert_Char2
- addq.l #1,a5
- dbra d1,Convert_Topaz2
- lea TurboText(pc),a0
- move.l TTBase(pc),a1 Copy tt to MEMF_PUBLIC
- move.l #TurboEnd-TurboText-1,d0
- Copy_TT move.b (a0)+,(a1)+
- dbra d0,Copy_TT
- jsr _LVOPermit(a6)
- movem.l (sp)+,d0-d7/a0-a6
- rts
-
- OldOpen ds.l 1
- Gfxname dc.b "graphics.library",0
- even
- TopazStruct dc.l 0
- dc.w 8
- dc.b 0,0
- TopazName dc.b "topaz.font",0
- even
-
- * New _LVOText routine
-
- TurboText cmp.w #90,d0
- bhi OldText
- tst.w d0
- beq TTExit
- move.l TT_Font(pc),d1
- cmp.l rp_Font(a1),d1
- bne OldText
- tst.b rp_AlgoStyle(a1)
- bne OldText
- movem.l d2-d6/a2-a5,-(sp)
- move.l PlaneMem(pc),a4
- lea CharMem(pc),a2
- moveq #0,d6
- tst.b -16(a2)
- bne.s GetMem
- bset.b #1,-16(a2)
- bra.s Continue
- GetMem movem.l d0/a0-a1,-(sp)
- move.l a6,d5
- move.l 4.w,a6
- move.l #92*8,d0
- move.l #MEMF_CLEAR!MEMF_CHIP!MEMF_PUBLIC,d1
- jsr _LVOAllocMem(a6)
- move.l d0,a4
- move.l d0,d6
- movem.l (sp)+,d0/a0-a1
- move.l d5,a6
- Continue move.l a4,a5
- move.l d0,d4
- subq.w #1,d0
- Create_Text moveq #0,d2
- move.b (a0)+,d2
- lsl.w #3,d2
- move.l a2,a3
- add.w d2,a3
- move.b (a3)+,(a4)+
- move.b (a3)+,0*92+91(a4)
- move.b (a3)+,1*92+91(a4)
- move.b (a3)+,2*92+91(a4)
- move.b (a3)+,3*92+91(a4)
- move.b (a3)+,4*92+91(a4)
- move.b (a3)+,5*92+91(a4)
- move.b (a3)+,6*92+91(a4)
- dbra d0,Create_Text
- move.l a5,a0
- moveq #0,d0
- moveq #92,d1
- movem.w rp_cp_x(a1),d2-d3
- Basel_store sub.w #$1234,d3
- lsl.w #3,d4
- add.w d4,rp_cp_x(a1)
- moveq #8,d5
- jsr _LVOBltTemplate(a6)
- WaitBlt btst #14,$dff002
- bne.s WaitBlt
- tst.l d6
- beq.s No_Mem
- move.l d6,a1
- move.l #92*8,d0
- move.l a6,a5
- move.l 4.w,a6
- jsr _LVOFreeMem(a6)
- move.l a5,a6
- bra.s Leave
- No_Mem lea BusyFlag(pc),a2
- clr.b (a2)
- Leave movem.l (sp)+,d2-d6/a2-a5
- TTExit rts
-
- OldText jmp $fffffe Dummy
-
- BusyFlag dc.l 0
- PlaneMem dc.l 0
- TT_Font dc.l 0
- TTBase dc.l 0
- CharMem ds.b 2
- even
-
- TurboEnd
-
- WindowTitle dc.b "NewBoot V1.1 by André Wichmann of CLUSTER.",0
- even
-
- NewOpenEnd
-
- Dosname dc.b "dos.library",0
- even
- Intname dc.b "intuition.library",0
- even
-
- cnop 0,32
- dc.b "!!! THIS IS NO VIRUS !!! -AW-"
- ds.b 128
- even
-
-