home *** CD-ROM | disk | FTP | other *** search
- AllocMem: EQU -198
- FreeMem: EQU -210
- OpenLibrary: EQU -552
- MEMF_CHIP: EQU $10002
- LINES: EQU 8
- WORDS: EQU 24 ; Max 24
- BPLSIZE: EQU LINES*2*WORDS+2 ; Storlek på bitplan
- DDFSTRT: EQU $28
- DDFSTOP: EQU DDFSTRT+[8*[WORDS-2]]
-
- ALLOCM: MACRO
- MOVE.L #?1,D0
- MOVE.L #?2,D1
- JSR ALLOCMEM(A6)
- ENDM
-
- FREEM: MACRO
- MOVE.L ?1,D0
- BEQ.S MEMFREE?0
- MOVE.L D0,A1
- MOVE.L #?2,D0
- JSR FREEMEM(A6)
- MEMFREE?0: ENDM
-
- OPENLIB: MACRO
- LEA.L ?1(PC),A1
- MOVEQ #?2,D0
- JSR OPENLIBRARY(A6)
- ENDM
-
- BLTWAIT: MACRO
- BLTBUSY?0: BTST #6,$02(A6)
- BNE.S BLTBUSY?0
- ENDM
-
- SYNC: MACRO
- RASTWAIT?0: MOVE.L $04(A6),D0
- AND.L #$1FF00,D0
- LSR.L #8,D0
- CMP.W #?1,D0
- BNE.S RASTWAIT?0
- ENDM
-
- UNDEF: MACRO
- DC.B %00000000 ; Grafik för odefinierade
- DC.B %00000000 ; tecken
- DC.B %00000000
- DC.B %00000000
- DC.B %00000000
- DC.B %00011000
- DC.B %00011000
- DC.B 0
- ENDM
-
- BEGIN: MOVEM.L D0-D7/A0-A6,-(SP)
-
- INIT: MOVE.L $4.W,A6
- AllocM BPLSIZE,MEMF_CHIP ; Allokera bitplan
- MOVE.L D0,BPLPTR
- BEQ.L INITFAILED
-
- AllocM COPSIZE,MEMF_CHIP ; Allokera copper
- MOVE.L D0,COPPTR
- BEQ.L INITFAILED
-
- OpenLib GFXNAME,0 ; Öppna graphics.library
- MOVE.L D0,GFXBASE
- BEQ.L INITFAILED
- MOVE.L D0,A6
- MOVE.L $26(A6),OLDCOP ; Spar gammal copper
-
- LEA.L $DFF000,A6
- DISABLE1: AND.L #$0001FF00,$04(A6)
- BNE.S DISABLE1
- MOVE.W $02(A6),DMAENAR ; Spar gammal DMA
- BSET #7,DMAENAR
- MOVE.W #$7FFF,$96(A6) ; Slå av all DMA
- DISABLE2: AND.L #$0001FF00,$04(A6)
- BNE.S DISABLE2
- MOVE.L COPPTR(PC),$80(A6) ; Ställ in copperpekare
-
- MOVE.W #$8061,$008E(A6) ; DIWSTRT
- MOVE.W #$88E1,$0090(A6) ; DIWSTOP
- MOVE.W #DDFSTRT,$0092(A6) ; DDFSTRT
- MOVE.W #DDFSTOP,$0094(A6) ; DDFSTOP
- MOVE.W #$1000,$0100(A6) ; BPLCON0
- MOVE.W #$0000,$0102(A6) ; BPLCON1
- MOVE.W #$0000,$0104(A6) ; BPLCON2
- MOVE.W #$0002,$0108(A6) ; BPLMOD1
- MOVE.W #$0000,$010A(A6) ; BPLMOD2
-
- MOVE.W #$000,$180(A6) ; Svart bakgrund
-
- MOVE.L BPLPTR(PC),D0
- ADDQ.L #2,D0 ; Spar ett ord i början
- SWAP D0
- MOVE.W D0,BPL1PTR+2 ; Ställ in bitplanspekare
- SWAP D0
- MOVE.W D0,BPL1PTR+6
-
- LEA.L COPPER(PC),A0
- MOVE.L COPPTR(PC),A1
- MOVE.W #COPSIZE/4-1,D7
- COP2CHIP: MOVE.L (A0)+,(A1)+ ; Flytta till ChipMem
- DBF D7,COP2CHIP
-
- MOVE.W #$83C0,$96(A6) ; Slå på bpl+blt+cop DMA
-
- MAIN: BTST #6,$BFE001 ; Vänster musknapp?
- BEQ.L EXIT
-
- Sync $88 ; Vänta på raster-rad $88
-
- AND.W #7,COUNTER ; Nytt tecken?
- BEQ.S NEWCHAR
- PRINTED: ADDQ.W #1,COUNTER
-
- MOVE.L BPLPTR(PC),D0
- MOVE.L #$F9F00000,$40(A6) ; D = A SHR 15
- MOVE.L #$FFFFFFFF,$44(A6) ; Mask
- MOVE.L D0,$54(A6) ; BLTDPTR = BPLPTR
- ADDQ.L #2,D0
- MOVE.L D0,$50(A6) ; BLTAPTR = BPLPTR+2
- MOVE.L #$00000000,$64(A6) ; Ingen modulo
- MOVE.W #64*LINES+WORDS,$58(A6) ; Scrolla
- BltWait ; Vänta på blittern
-
- BRA.S MAIN
-
- NEWCHAR: MOVE.L TXTPTR(PC),A0 ; Pekare till text
- ADDQ.L #1,TXTPTR
- CLR.W D0
- MOVE.B (A0),D0
- BPL.S ASCII ; Slut på text?
- MOVE.L #TEXT,TXTPTR ; Börja om
- BRA.S NEWCHAR
- ASCII: SUB.B #32,D0
- ASL.W #3,D0 ; Multiplicera med 8
- LEA.L FONT(PC),A0
- MOVE.L BPLPTR(PC),A1
- ADD.L #2*WORDS,A1 ; Startposition för
- MOVEQ #7,D7 ; tecken
- PRINTCHAR: MOVE.B $00(A0,D0.W),(A1) ; Skriv ut tecken
- ADDQ.W #1,D0
- ADD.L #2*WORDS,A1 ; Nästa rad
- DBF D7,PRINTCHAR
- BRA.S PRINTED ; Klar!
-
- EXIT: LEA.L $DFF000,A6
- MOVE.L OLDCOP(PC),$80(A6) ; Återställ copper
- MOVE.W #$7FFF,$96(A6)
- MOVE.W DMAENAR(PC),$96(A6) ; Återställ DMA
- INITFAILED: MOVE.L $4.W,A6
- FREEM COPPTR,COPSIZE ; Deallokera copper
- FREEM BPLPTR,BPLSIZE ; Deallokera bitplan
- RETURN: MOVEM.L (SP)+,D0-D7/A0-A6
- RTS
-
- COPPER:
- BPL1PTR: DC.W $00E0,$0000 ; Bitplanspekare
- DC.W $00E2,$0000
- DC.W $8007,$FFFE,$0182,$800 ; Textfärg
- DC.W $8107,$FFFE,$0182,$900
- DC.W $8207,$FFFE,$0182,$A00
- DC.W $8307,$FFFE,$0182,$B00
- DC.W $8407,$FFFE,$0182,$C00
- DC.W $8507,$FFFE,$0182,$D00
- DC.W $8607,$FFFE,$0182,$E00
- DC.W $8707,$FFFE,$0182,$F00
- COPEND: DC.W $FFFF,$FFFE
-
- COPSIZE: EQU *-COPPER
-
- GFXBASE: DC.L 0
- GFXNAME: DC.B 'graphics.library',0
- EVEN
- DMAENAR: DC.W 0 ; Gammal DMA
- OLDCOP: DC.L 0 ; Gammal copper-pekare
- COPPTR: DC.L 0 ; Vår copper-pekare
- BPLPTR: DC.L 0 ; Vår bitplans-pekare
- TXTPTR: DC.L TEXT ; Pekare till text
- COUNTER: DC.W 0 ; Räknare (0-7)
-
- FONT: DC.B %00000000 ; Grafik för tecken-
- DC.B %00000000 ; uppsättning
- DC.B %00000000
- DC.B %00000000
- DC.B %00000000
- DC.B %00000000
- DC.B %00000000
- DC.B 0
-
- UnDef ; Odefinierade tecken
- UnDef
- UnDef
- UnDef
- UnDef
- UnDef
- UnDef
- UnDef
- UnDef
- UnDef
- UnDef
- UnDef
- UnDef
- UnDef
- UnDef
- UnDef
- UnDef
- UnDef
- UnDef
- UnDef
- UnDef
- UnDef
- UnDef
- UnDef
- UnDef
- UnDef
- UnDef
- UnDef
- UnDef
- UnDef
- UnDef
- UnDef
-
- DC.B %01111100 ; Grafik för A
- DC.B %11000110
- DC.B %11000110
- DC.B %11000110
- DC.B %11111110
- DC.B %11000110
- DC.B %11000110
- DC.B 0
-
- DC.B %11111100 ; Grafik för B
- DC.B %11000110
- DC.B %11000110
- DC.B %11111100
- DC.B %11000110
- DC.B %11000110
- DC.B %11111100
- DC.B 0
-
- DC.B %01111100 ; Grafik för C
- DC.B %11000110
- DC.B %11000000
- DC.B %11000000
- DC.B %11000000
- DC.B %11000110
- DC.B %01111100
- DC.B 0
-
- TEXT: DC.B 'ABC ',$FF ; Vår text
- EVEN
-