home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Assembler / dse-src6.dms / in.adf / DMZ.LZH / PRG13.2 < prev    next >
Encoding:
Text File  |  1999-10-02  |  5.0 KB  |  255 lines

  1. AllocMem:    EQU    -198
  2. FreeMem:    EQU    -210
  3. OpenLibrary:    EQU    -552
  4. MEMF_CHIP:    EQU    $10002
  5. LINES:        EQU    8
  6. WORDS:        EQU    24            ; Max 24
  7. BPLSIZE:    EQU    LINES*2*WORDS+2        ; Storlek på bitplan
  8. DDFSTRT:    EQU    $28
  9. DDFSTOP:    EQU    DDFSTRT+[8*[WORDS-2]]
  10.  
  11. ALLOCM:        MACRO
  12.         MOVE.L    #?1,D0
  13.         MOVE.L    #?2,D1
  14.         JSR    ALLOCMEM(A6)
  15.         ENDM
  16.  
  17. FREEM:        MACRO
  18.         MOVE.L    ?1,D0
  19.         BEQ.S    MEMFREE?0
  20.         MOVE.L    D0,A1
  21.         MOVE.L    #?2,D0
  22.         JSR    FREEMEM(A6)
  23. MEMFREE?0:    ENDM
  24.  
  25. OPENLIB:    MACRO
  26.         LEA.L    ?1(PC),A1
  27.         MOVEQ    #?2,D0
  28.         JSR    OPENLIBRARY(A6)
  29.         ENDM
  30.  
  31. BLTWAIT:    MACRO
  32. BLTBUSY?0:    BTST    #6,$02(A6)
  33.         BNE.S    BLTBUSY?0
  34.         ENDM
  35.  
  36. SYNC:        MACRO
  37. RASTWAIT?0:    MOVE.L    $04(A6),D0
  38.         AND.L    #$1FF00,D0
  39.         LSR.L    #8,D0
  40.         CMP.W    #?1,D0
  41.         BNE.S    RASTWAIT?0
  42.         ENDM
  43.  
  44. UNDEF:        MACRO
  45.         DC.B    %00000000        ; Grafik för odefinierade
  46.         DC.B    %00000000        ; tecken
  47.         DC.B    %00000000
  48.         DC.B    %00000000
  49.         DC.B    %00000000
  50.         DC.B    %00011000
  51.         DC.B    %00011000
  52.         DC.B    0
  53.         ENDM
  54.  
  55. BEGIN:        MOVEM.L    D0-D7/A0-A6,-(SP)
  56.  
  57. INIT:        MOVE.L    $4.W,A6
  58.         AllocM    BPLSIZE,MEMF_CHIP    ; Allokera bitplan
  59.         MOVE.L    D0,BPLPTR
  60.         BEQ.L    INITFAILED
  61.  
  62.         AllocM    COPSIZE,MEMF_CHIP    ; Allokera copper
  63.         MOVE.L    D0,COPPTR
  64.         BEQ.L    INITFAILED
  65.  
  66.         OpenLib    GFXNAME,0        ; Öppna graphics.library
  67.         MOVE.L    D0,GFXBASE
  68.         BEQ.L    INITFAILED
  69.         MOVE.L    D0,A6
  70.         MOVE.L    $26(A6),OLDCOP        ; Spar gammal copper
  71.  
  72.         LEA.L    $DFF000,A6
  73. DISABLE1:    AND.L    #$0001FF00,$04(A6)
  74.         BNE.S    DISABLE1
  75.         MOVE.W    $02(A6),DMAENAR        ; Spar gammal DMA
  76.         BSET    #7,DMAENAR
  77.         MOVE.W    #$7FFF,$96(A6)        ; Slå av all DMA
  78. DISABLE2:    AND.L    #$0001FF00,$04(A6)
  79.         BNE.S    DISABLE2
  80.         MOVE.L    COPPTR(PC),$80(A6)    ; Ställ in copperpekare
  81.  
  82.         MOVE.W    #$8061,$008E(A6)    ; DIWSTRT
  83.         MOVE.W    #$88E1,$0090(A6)    ; DIWSTOP
  84.         MOVE.W    #DDFSTRT,$0092(A6)    ; DDFSTRT
  85.         MOVE.W    #DDFSTOP,$0094(A6)    ; DDFSTOP
  86.         MOVE.W    #$1000,$0100(A6)    ; BPLCON0
  87.         MOVE.W    #$0000,$0102(A6)    ; BPLCON1
  88.         MOVE.W    #$0000,$0104(A6)    ; BPLCON2
  89.         MOVE.W    #$0002,$0108(A6)    ; BPLMOD1
  90.         MOVE.W    #$0000,$010A(A6)    ; BPLMOD2
  91.  
  92.         MOVE.W    #$000,$180(A6)        ; Svart bakgrund
  93.  
  94.         MOVE.L    BPLPTR(PC),D0
  95.         ADDQ.L    #2,D0            ; Spar ett ord i början
  96.         SWAP    D0
  97.         MOVE.W    D0,BPL1PTR+2        ; Ställ in bitplanspekare
  98.         SWAP    D0
  99.         MOVE.W    D0,BPL1PTR+6
  100.  
  101.         LEA.L    COPPER(PC),A0
  102.         MOVE.L    COPPTR(PC),A1
  103.         MOVE.W    #COPSIZE/4-1,D7
  104. COP2CHIP:    MOVE.L    (A0)+,(A1)+        ; Flytta till ChipMem
  105.         DBF    D7,COP2CHIP
  106.  
  107.         MOVE.W    #$83C0,$96(A6)        ; Slå på bpl+blt+cop DMA
  108.  
  109. MAIN:        BTST    #6,$BFE001        ; Vänster musknapp?
  110.         BEQ.L    EXIT
  111.  
  112.         Sync    $88            ; Vänta på raster-rad $88
  113.  
  114.         AND.W    #7,COUNTER        ; Nytt tecken?
  115.         BEQ.S    NEWCHAR
  116. PRINTED:    ADDQ.W    #1,COUNTER
  117.  
  118.         MOVE.L    BPLPTR(PC),D0
  119.         MOVE.L    #$F9F00000,$40(A6)    ; D = A SHR 15
  120.         MOVE.L    #$FFFFFFFF,$44(A6)    ; Mask
  121.         MOVE.L    D0,$54(A6)        ; BLTDPTR = BPLPTR
  122.         ADDQ.L    #2,D0
  123.         MOVE.L    D0,$50(A6)        ; BLTAPTR = BPLPTR+2
  124.         MOVE.L    #$00000000,$64(A6)    ; Ingen modulo
  125.         MOVE.W    #64*LINES+WORDS,$58(A6)    ; Scrolla
  126.         BltWait                ; Vänta på blittern
  127.  
  128.         BRA.S    MAIN
  129.  
  130. NEWCHAR:    MOVE.L    TXTPTR(PC),A0        ; Pekare till text
  131.         ADDQ.L    #1,TXTPTR
  132.         CLR.W    D0
  133.         MOVE.B    (A0),D0
  134.         BPL.S    ASCII            ; Slut på text?
  135.         MOVE.L    #TEXT,TXTPTR        ; Börja om
  136.         BRA.S    NEWCHAR
  137. ASCII:        SUB.B    #32,D0
  138.         ASL.W    #3,D0            ; Multiplicera med 8
  139.         LEA.L    FONT(PC),A0
  140.         MOVE.L    BPLPTR(PC),A1
  141.         ADD.L    #2*WORDS,A1        ; Startposition för
  142.         MOVEQ    #7,D7            ; tecken
  143. PRINTCHAR:    MOVE.B    $00(A0,D0.W),(A1)    ; Skriv ut tecken
  144.         ADDQ.W    #1,D0
  145.         ADD.L    #2*WORDS,A1        ; Nästa rad
  146.         DBF    D7,PRINTCHAR
  147.         BRA.S    PRINTED            ; Klar!
  148.  
  149. EXIT:        LEA.L    $DFF000,A6
  150.         MOVE.L    OLDCOP(PC),$80(A6)    ; Återställ copper
  151.         MOVE.W    #$7FFF,$96(A6)
  152.         MOVE.W    DMAENAR(PC),$96(A6)    ; Återställ DMA
  153. INITFAILED:    MOVE.L    $4.W,A6
  154.         FREEM    COPPTR,COPSIZE        ; Deallokera copper
  155.         FREEM    BPLPTR,BPLSIZE        ; Deallokera bitplan
  156. RETURN:        MOVEM.L    (SP)+,D0-D7/A0-A6
  157.         RTS
  158.  
  159. COPPER:        
  160. BPL1PTR:    DC.W    $00E0,$0000        ; Bitplanspekare
  161.         DC.W    $00E2,$0000
  162.         DC.W    $8007,$FFFE,$0182,$800    ; Textfärg
  163.         DC.W    $8107,$FFFE,$0182,$900
  164.         DC.W    $8207,$FFFE,$0182,$A00
  165.         DC.W    $8307,$FFFE,$0182,$B00
  166.         DC.W    $8407,$FFFE,$0182,$C00
  167.         DC.W    $8507,$FFFE,$0182,$D00
  168.         DC.W    $8607,$FFFE,$0182,$E00
  169.         DC.W    $8707,$FFFE,$0182,$F00
  170. COPEND:        DC.W    $FFFF,$FFFE
  171.  
  172. COPSIZE:    EQU    *-COPPER
  173.  
  174. GFXBASE:    DC.L    0
  175. GFXNAME:    DC.B    'graphics.library',0
  176. EVEN
  177. DMAENAR:    DC.W    0            ; Gammal DMA
  178. OLDCOP:        DC.L    0            ; Gammal copper-pekare
  179. COPPTR:        DC.L     0            ; Vår copper-pekare
  180. BPLPTR:        DC.L    0            ; Vår bitplans-pekare
  181. TXTPTR:        DC.L    TEXT            ; Pekare till text
  182. COUNTER:    DC.W    0            ; Räknare (0-7)
  183.  
  184. FONT:        DC.B    %00000000        ; Grafik för tecken-
  185.         DC.B    %00000000        ; uppsättning
  186.         DC.B    %00000000
  187.         DC.B    %00000000
  188.         DC.B    %00000000
  189.         DC.B    %00000000
  190.         DC.B    %00000000
  191.         DC.B    0
  192.  
  193.         UnDef                ; Odefinierade tecken
  194.         UnDef
  195.         UnDef
  196.         UnDef
  197.         UnDef
  198.         UnDef
  199.         UnDef
  200.         UnDef
  201.         UnDef
  202.         UnDef
  203.         UnDef
  204.         UnDef
  205.         UnDef
  206.         UnDef
  207.         UnDef
  208.         UnDef
  209.         UnDef
  210.         UnDef
  211.         UnDef
  212.         UnDef
  213.         UnDef
  214.         UnDef
  215.         UnDef
  216.         UnDef
  217.         UnDef
  218.         UnDef
  219.         UnDef
  220.         UnDef
  221.         UnDef
  222.         UnDef
  223.         UnDef
  224.         UnDef
  225.  
  226.         DC.B    %01111100        ; Grafik för A
  227.         DC.B    %11000110
  228.         DC.B    %11000110
  229.         DC.B    %11000110
  230.         DC.B    %11111110
  231.         DC.B    %11000110
  232.         DC.B    %11000110
  233.         DC.B    0
  234.  
  235.         DC.B    %11111100        ; Grafik för B
  236.         DC.B    %11000110
  237.         DC.B    %11000110
  238.         DC.B    %11111100
  239.         DC.B    %11000110
  240.         DC.B    %11000110
  241.         DC.B    %11111100
  242.         DC.B    0
  243.  
  244.         DC.B    %01111100        ; Grafik för C
  245.         DC.B    %11000110
  246.         DC.B    %11000000
  247.         DC.B    %11000000
  248.         DC.B    %11000000
  249.         DC.B    %11000110
  250.         DC.B    %01111100
  251.         DC.B    0
  252.  
  253. TEXT:        DC.B    'ABC ',$FF        ; Vår text
  254. EVEN
  255.