home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 1 / LSD Compendium Deluxe 1.iso / a / programming / assembly / bigscroll.lha / bigscr.S < prev    next >
Encoding:
Text File  |  1990-09-13  |  4.0 KB  |  195 lines

  1.     section lame,code_c
  2.  
  3. DATA=$30000
  4. ;PLANE $66000-$79000
  5.  
  6. >EXTERN"DF0:BIGFNT",DATA
  7.  
  8. Trap_vec0  = $80
  9. Execbase   = $4
  10. Oldopen    = -$198
  11. Intenar    = $01c
  12. Intena     = $09a
  13. Dmaconr    = $002
  14. Dmacon     = $096
  15. Cop1lch    = $080
  16. Copjmp1    = $088
  17. Vposr      = $004
  18.  
  19.     Move.l    #Start,$80.w    ; Trap vector 0
  20.     Trap    #0        ; Execute trap 0 to give full control of the
  21.     Rts            ; 68000, needs an RTE to return.
  22.  
  23. Start:
  24.     bsr    KillSys
  25.     bsr    main
  26.     bsr    setupsys
  27.  
  28.     Rte        ; Return from exception 
  29.         
  30.  
  31. *****************************************************************************
  32. ;Killsys - Disable operating system and interrupts
  33. *****************************************************************************
  34. Killsys:
  35.     Move.l    $4.w,a6        ; Execbase vector
  36.     Lea    Gfxname(pc),a1    ; Pointer to "graphics.library" into a1
  37.     Jsr    Oldopen(a6)    ; Open this library
  38.     Lea    $dff000,a6    ; Pointer to custom chips
  39.     Move.l    d0,a0        ; Address of the graphics library
  40.     Move.l    38(a0),Sys_copl        ; Remember the System copperlist
  41.     Move    Intenar(a6),Int_set    ; System interrupts
  42.     Move    #$7fff,Intena(a6)    ; Now switch off all interrupts
  43.     Move.l    $6c.w,Vbl_vec        ; System vertical blanking int.
  44.     Move    Dmaconr(a6),Dma_set    ; System DMA
  45.     Move    #$7fff,Dmacon(a6)    ; Clear all DMA
  46.     Move    #$87c0,Dmacon(a6)    ; Now set the required DMA channels
  47.  
  48.     Move.l    #COP,Cop1lch(a6)    ; Init. our own copperlist
  49.     Clr    Copjmp1(a6)
  50.  
  51.     Rts
  52.  
  53. Gfxname:    Dc.b "graphics.library",0
  54.     Even
  55. *****************************************************************************
  56. ;Sysreturn - Re-enable operating system and interrupts
  57. *****************************************************************************
  58. Setupsys:
  59.     Lea    $dff000,a6
  60.     Move    #$7fff,Intena(a6)    ; Clear all interrupts
  61.     Move.l    Vbl_vec,$6c.w    ; Restore VBL interrupt
  62.     Move    Int_set,d0
  63.     Or    #$c000,d0
  64.     Move    d0,Intena(a6)        ; Restore system interrupts
  65.     Move    #$7fff,Dmacon(a6)
  66.     Move    Dma_set,d0
  67.     Or    #$8200,d0
  68.     Move    d0,Dmacon(a6)        ; Restore system DMA
  69.     Move.l    Sys_copl,Cop1lch(a6)    ; Restore system copperlist
  70.     Clr    Copjmp1(a6)
  71.     Rts
  72.  
  73. Vbl_vec:          dc.l 0
  74. Int_set:          dc.l 0
  75. Dma_set:          dc.l 0
  76. Sys_copl:          dc.l 0
  77.  
  78.  
  79.  
  80. MAIN:    
  81.     LEA    $00066000,A1
  82.     MOVE.W    #$4AC4,D0
  83. lbC1A:    CLR.L    (A1)+
  84.     DBRA    D0,lbC1A
  85.     LEA    DATA,A0    ;INVERS
  86.     MOVE.W    #$016F,D0
  87. lbC2A:    NOT.W    (A0)+
  88.     DBRA    D0,lbC2A
  89.  
  90.     LEA    $00DFF000,A6
  91.  
  92.  
  93. ROUT:    Move.l    Vposr(a6),d0
  94.     And.l    #$1ff00,d0
  95.     Cmp.l    #$00100,d0    ; Wait for vertical position 1
  96.     Bne.s    ROUT
  97.  
  98.     BSR    FIAT
  99.  
  100.  
  101.  
  102. ROUT2:    Move.l    Vposr(a6),d0
  103.     And.l    #$1ff00,d0
  104.     Cmp.l    #$0F100,d0    ; Wait for vertical position 1
  105.     Bne.s    ROUT2
  106.  
  107.     ; ROUTINE ;
  108.  
  109.  
  110.     Btst    #6,$bfe001    ; Check the left mouse button
  111.     Bne.s    ROUT
  112.  
  113.     RTS    
  114.  
  115.  
  116.  
  117. FIAT:    SUB.W    #$0066,ZHLER5C        ;speed
  118.     BPL.L    NOTJET
  119.  
  120.     ADD.W    #$00FF,ZHLER5C
  121.  
  122.     MOVE.L    #$09F00000,$0040(A6)
  123.     MOVE.L    #$FFFFFFFF,$0044(A6)
  124.     MOVE.L    #$00000056,$0064(A6)
  125.     MOVE.L    POINTER(PC),A0        
  126.     MOVE.L    #$00066000,D1        ;PLANE
  127.     MOVE.W    PLANE(PC),D1    
  128.     MOVEQ    #$10,D0
  129. lbCA0:    MOVEQ    #0,D2
  130.     MOVE.B    (A0),D2
  131.     ASL.W    #5,D2
  132.     ADD.L    #DATA,D2        
  133.     MOVE.L    D2,$0050(A6)
  134.     MOVE.L    D1,$0054(A6)
  135.     MOVE.W    #$0401,$0058(A6)
  136.     ADD.W    #$002C,D1
  137.     MOVE.L    D2,$0050(A6)
  138.     MOVE.L    D1,$0054(A6)
  139.     MOVE.W    #$0401,$0058(A6)
  140.     ADD.W    #$0554,D1
  141.     ADD.W    #$0011,A0
  142.     DBRA    D0,lbCA0
  143.     ADDQ.W    #2,PLANE            
  144.     CMP.W    #$602C,PLANE        ;PLANE&$FFFF
  145.     BNE.S    lbC100
  146.     MOVE.W    #$6000,PLANE        ;PLANE&$FFFF
  147. lbC100:    ADDQ.W    #1,POINTER+2    
  148.     SUBQ.B    #1,ZHLER5E        
  149.     BNE    lbC1E2
  150. lbC110:    MOVE.L    TEXTPOINTER(PC),A0        
  151.     ADDQ.W    #1,A0
  152.     MOVE.B    (A0),D1
  153.     BNE.S    lbC124
  154.     LEA    TEXT(PC),A0
  155.     MOVE.B    (A0),D1
  156. lbC124:    MOVE.L    A0,TEXTPOINTER        
  157.     MOVE.B    #$11,ZHLER5E        
  158.  
  159. lbC1B6:    CMP.B    #$20,D1
  160.     BNE.S    lbC1C4
  161.     MOVE.B    #10,ZHLER5E        
  162. lbC1C4:    LEA    ABC(PC),A0    
  163.     MOVEQ    #0,D2
  164. lbC1CC:    ADDQ.W    #1,D2
  165.     CMP.B    (A0)+,D1
  166.     BNE.S    lbC1CC
  167.     MULU    #$121,D2
  168.     ADD.L    #DATA+$1FF,D2    
  169.     MOVE.L    D2,POINTER
  170. NOTJET:
  171. lbC1E2:    MOVE.W    ZHLER5C(PC),SET
  172.     RTS
  173.  
  174.     
  175.  
  176. ZHLER5C:    DC.W    $00ff
  177. ZHLER5E:    DC.W    $0101
  178. POINTER:    DC.L    data+$1ff+[$121*28]    ;SPACE
  179. TEXTPOINTER:    DC.L    TEXT
  180. TEXT:        DC.B    "*!abcdefghijklmnopqrstuvwxyz",0
  181.         EVEN
  182. ABC:        DC.B    "abcdefghijklmnopqrstuvwxyz 128!/.:,*%<>",0
  183.  
  184. COP:
  185.         DC.W    $008E,$2081,$0090,$2EC1,$0092,$0028
  186.         DC.W    $0094,$00D0,$0096,$87F0,$0096,$0020
  187.         DC.W    $00E0,$0006,$00E2
  188. PLANE:        DC.W    $6000
  189.         DC.W    $0108,$002C,$010A,$002C,$0102
  190. SET:        DC.W    $0090
  191.         DC.W    $0100,$1200
  192.         DC.W    $0180,$0000,$0182,$0F00
  193.         DC.W    $FFFF,$FFFE
  194.  
  195.