Alive
News Team Current issue History Online Support Download Forum @Pouet

01 - 02 - SE - 03 - 04 - 05 - 06 - 07 - 08 - 09 - 10 - 11 - 12 - 13 - 14

Alive 13
;
; TTTTTT     BBBBB              CCCCC
;   TT       BB  BB            CC
;   TT       BBBBB             CC
;   TT       BB  BB            CC
;   TT H E   BBBBB O R I N G    CCCCC R E W
;
; BBBBB   OOOO   OOOO TTTTTT SSSSS EEEE  CCCC TTTTTT  OOOO  RRRRR
; BB  BB OO  OO OO  OO  TT  SS     EE   CC      TT   OO  OO RR  RR
; BBBBB  OO  OO OO  OO  TT   SSSS  EEE  CC      TT   OO  OO RRRRR
; BB  BB OO  OO OO  OO  TT      SS EE   CC      TT   OO  OO RR  RR
; BBBBB   OOOO   OOOO   TT  SSSSS  EEEE  CCCC   TT    OOOO  RR  RR
;
; T.B.C. Ruling da Scene in 2006

                RSRESET
colptr:         RS.L 1
cols:           RS.L 200

; Yet again we spent months to research how to display characters on screen.
; Finally Alone1 came up with this most 1337 way to put some funky message onto
; everybody's screens. We are thinking to get a patent on this method since it
; seems to be really efficient if you consider the size of the code.

                pea     welcome(PC)        ; load the megamighty message address
                move.w  #9,-(SP)           ; and print it due to magical works
                trap    #1                 ; This command reflects our state of
;                                            mind, trapped in our own world...
                addq.l  #6,SP              ; i don't know what this is for but
;                                            someone told me i'd better use it

; The Gigamighty TOS supplies us with a perfect address to put our stuff, it is
; a System Variable called _membot and I have just discovered it when i found a
; copy of Readers Disgust in a Car Boot Sale a week ago...

                movea.l $0432.w,A6         ; this is where i can put stuff

                lea     cols(A6),A0        ; startadress of colours
                move.l  A0,colptr(A6)      ; remember raster start adress for
;                                            the colour write routine

                move.w  #$0717,D0          ; start colour
                move.w  #198,D1            ; calculate colours for screen height
do_cols:
                add.w   #$01,D0            ; add one onto colour
                move.w  D0,D2              ; copy for output format
                and.w   #$0777,D2          ; mask non used bits so we stay ST
                move.w  D2,(A0)+           ; write colour into raster table
                dbra    D1,do_cols         ; repeat everything for scr-height-1
                clr.w   (A0)               ; last colour is black

; Well the next part took us 5 years to figure out, actually we have no idea
; what it does, since we just copied it from a spanish Atari Magazine, anyway
; it works and that's what counts, no?

                bclr    #5,$FFFFFA09.w     ; hmmm

                move.l  $0120.w,-(SP)      ; save TiB vector
                lea     tib(PC),A0         ; set gigamighty raster routine
                move.l  A0,$0120.w

                clr.b   $FFFFFA1B.w        ; stop TiB
                bset    #0,$FFFFFA07.w     ; activate TiB
                bset    #0,$FFFFFA13.w
                move.b  #1,$FFFFFA21.w     ; Run TiB each line (TiB data)
                move.b  #8,$FFFFFA1B.w     ; Start TiB in event count mode

; Again the next part was really hard work, when we 1st tried stuff all rasters
; where whizzing around the screen and it looked like a terrible mess. Although
; xBore said it would reflect the erratic way of our code quite well, i wasn't
; really convinced. So i started to dig into this topic a bit and found an
; astonishing solution to synchronize with the vertical blank, i guess all these
; PC suckers can still learn a lot from the megamighty Boring Crew...

vbl:
                clr.l   $0466.w            ; Clear vbl counter
wvbl:           tst.l   $0466.w            ; Check if vbl counter was increased
                beq.s   wvbl               ; no? then wait till it was increased
                lea     cols(A6),A0        ; Reset Start Address for Rasters
                move.l  A0,colptr(A6)

                cmpi.b  #$39,$FFFFFC02.w   ; Did someone press Space?
                bne.s   vbl                ; If not Repeat

; Again the next part was ripped from a spanish ST Magazine, so don't expect many
; explanations here

                move    #$2700,SR          ; disallow any IRQs
                bclr    #0,$FFFFFA07.w     ; Disable TiB (rasters off)
                move.l  (SP)+,$0120.w      ; Restore old TiB vector
                move    #$2300,SR          ; allow IRQs
                bset    #5,$FFFFFA09.w     ; restart TiC
                rts                        ; Return from Bootsector
tib:
                move.l  A0,-(SP)           ; Store Registers
                move.l  A1,-(SP)

                movea.l $0432.w,A0         ; start of free memory (_membot)

                movea.l colptr(A0),A1      ; Get pointer to current colour
                move.w  (A1)+,$FFFF8240.w  ; write colour to Hardware
                move.l  A1,colptr(A0)      ; write back colour Pointer
                movea.l (SP)+,A1           ; Restore Registers
                movea.l (SP)+,A0
                bclr    #0,$FFFFFA0F.w     ; Clear IRQ in Service Bit
                rte                        ; Return from Interrupt

; this was the part we had finished 1st, its sitting on my harddisk since the
; last EIL but when i wrote the text to the bootsector it wasn't shown on screen
; so we had to delay the intro a bit.

welcome:        DC.B 27,"E"
;                DC.B 10,10,"Greetings to all EIL 3 visitors",10,10,13
                DC.B 10,10,"Greetings to all OUTLINE 2006 visitors",10,10,13
                DC.B "from the Creme of the Atari-Scene",10,10,13
                DC.B "TTTTTT BBBBBB   CCCCC",10,13
                DC.B "  TT   BB   BB CC",10,13
                DC.B "  TT   BBBBBB  CC",10,13
                DC.B "  TT   BB   BB CC",10,13
                DC.B "  TT   BBBBBB   CCCCC",10,10,13
                DC.B "We rule! Even in Bootsector Coding...",10,10,13
                DC.B "Code:        Alone1",10,13
                DC.B "Gay Colours: xBore",10,13
                DC.B "Silence:     DaFool"
                DC.B 0
                EVEN
                END

Alive 13