home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 1 / LSD Compendium Deluxe 1.iso / a / programming / assembly / bobscroll.lha / green.S < prev   
Encoding:
Text File  |  1990-09-13  |  6.8 KB  |  300 lines

  1.     section lame,code_c
  2.  
  3. >EXTERN"df0:DOUBLE",FONTY
  4.  
  5. FONTY=$54000
  6. ;PLANE    $68000-$70000
  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. Main:
  80.     Move.l    4(A6),d0
  81.     And.l    #$1ff00,d0
  82.     Cmp.l    #$04100,d0    ; Wait for vertical position 1
  83.     Bne.s    Main
  84.  
  85.     BSR    UPDOWN
  86.     BSR    LEFT
  87.     ; ROUTINE ;
  88.     Btst    #6,$bfe001    ; Check the left mouse button
  89.     Bne.s    Main
  90.  
  91.     Rts
  92.  
  93. BACK=$68000    ;+$2000
  94.  
  95. PLANE1:            dc.L    $6A000
  96. PLANE2:            dc.L    $6D000
  97.  
  98. TEXTPO:            dc.L    TEXT
  99. SINPOI:            dc.L    SINUS
  100.  
  101. TA:            dc.W    $0000
  102. TC:            dc.W    $0020
  103.  
  104.  
  105. TEXT:        dc.B    "TRAX IS PROUD TO PRESENT:    "
  106.         dc.B    "MEGACRACK s  ",0
  107.     EVEN
  108.  
  109.  
  110. UPDOWN:    MOVE.L    PLANE1(PC),D0
  111.     MOVE.L    PLANE2(PC),PLANE1
  112.     MOVE.L    D0,PLANE2
  113.     MOVE.W    D0,COPPLANE        ;IN COPPER (BUFFER)
  114.     MOVE.L    PLANE2(PC),D0
  115.     MOVE.L    D0,D1
  116.     SUB.L    #[48*4],D1
  117.     MOVE.W    D1,COPPLANE2
  118.     ADD.L    #$00000400,D0
  119.     BSR    WAITBLIT
  120.     MOVE.L    D0,$54(A6)
  121.     MOVE.L    #$01000000,$40(A6)
  122.     MOVE.L    #0,$44(A6)
  123.     MOVE.L    #0,$64(A6)
  124.     MOVE.W    #$1000,$58(A6)
  125.     MOVE.L    #2,D0
  126.     ADDQ.L    #1,D0
  127.     MOVE.L    #$00000020,D1
  128.     MOVE.L    #$00000030,D2
  129.     CLR.L    D3
  130.     MOVE.W    TC,D3        
  131.     MOVE.L    #0,D4
  132.     LEA    BACK+2,A0        ;zwisch
  133.     MOVE.L    #11,D7
  134.     LSL.W    #6,D1
  135.     OR.W    D0,D1
  136.     MOVE.L    SINPOI(PC),A4
  137.     MOVE.L    #SINEND,A5
  138.     BSR    WAITBLIT
  139.     MOVE.L    #$002A002A,$62(A6)
  140.     MOVE.W    #$002A,$66(A6)
  141.     MOVE.L    #$FFFF0000,$44(A6)
  142.     MOVE.W    #0,$42(A6)
  143. DATALOOP:
  144.     MOVE.L    PLANE2(PC),A1
  145.     SUBQ.L    #1,A1
  146.     MOVE.L    #0,D4
  147.     CMP.L    A4,A5
  148.     BGT    NEXT
  149.     SUB.L    #$00000168,A4
  150. NEXT:    MOVE.W    (A4),D4
  151.     AND.W    #$00FF,D4
  152.     ADD.W    #$0047,D4
  153.     LSR.W    #1,D4
  154.     ADD.L    #$00000010,A4
  155.     MOVE.W    D3,D5
  156.     MOVE.W    D3,D6
  157.     ASR.W    #4,D5
  158.     ASL.W    #1,D5
  159.     MULU    D2,D4
  160.     ADD.W    D5,D4
  161.     AND.W    #15,D6
  162.     ADD.L    D4,A1
  163.     ROR.W    #4,D6
  164.     OR.W    #$0DFC,D6
  165.     BSR    WAITBLIT
  166.     MOVE.W    D6,$40(A6)
  167.     MOVE.L    A0,$50(A6)
  168.     MOVE.L    A1,$54(A6)
  169.     MOVE.L    A1,$4C(A6)
  170.     MOVE.W    D1,$58(A6)
  171.     ADD.L    #4,A0
  172.     ADD.W    #$0020,D3
  173.     DBRA    D7,DATALOOP
  174.     ADDQ.L    #2,SINPOI        ;inpointer
  175.     MOVE.L    SINPOI(PC),A0
  176.     LEA    SINEND,A1
  177.     CMP.L    A0,A1
  178.     BGT    l162
  179.     SUB.L    #$00000168,SINPOI
  180. l162:    RTS    
  181.  
  182.  
  183. LEFT:    TST.W    TA            ;---
  184.     BEQ    YEP
  185.     SUB.W    #1,TA            ;---
  186.     RTS    
  187.  
  188. YEP:    SUB.W    #2,TC            ;---
  189.     BNE    ZERONOW
  190.     MOVE.W    #$0020,TC        ;---
  191.     ADD.L    #$00000010,SINPOI    
  192.     LEA    SINEND(PC),A0
  193.     MOVE.L    SINPOI(PC),A1
  194.     CMP.L    A1,A0
  195.     BGT    SINOLD
  196.     MOVE.L    #SINUS,SINPOI    ;sintab
  197. SINOLD:    BSR    WAITBLIT
  198.     MOVE.L    #BACK,$50(A6)    ;zwisch
  199.     MOVE.L    #BACK-4,$54(A6)
  200.     MOVE.L    #0,$64(A6)
  201.     MOVE.L    #$09F00000,$40(A6)
  202.     MOVE.L    #$FFFFFFFF,$44(A6)
  203.     MOVE.W    #$0340,$58(A6)
  204.     MOVE.L    TEXTPO(PC),A0
  205.     MOVE.L    #0,D3
  206.     ADDQ.L    #1,TEXTPO        ;textpoint
  207.     MOVE.B    (A0),D3
  208.     BNE    OLDTEXT
  209.     MOVE.L    #TEXT,TEXTPO
  210.     MOVE.B    #$20,D3
  211. OLDTEXT:
  212.     CMP.B    #$73,D3
  213.     BNE    SSTOP
  214.     MOVE.W    #$00C0,TA        ;---
  215.     MOVE.B    #$20,D3
  216. SSTOP:    SUB.B    #$20,D3
  217.     MOVE.L    D3,D4
  218.     ASL.W    #2,D3
  219.     DIVU    #10,D4
  220.     MULU    #$04D8,D4
  221.     ADD.L    D3,D4
  222.     ADD.L    #FONTY,D4        ;font
  223.     BSR    WAITBLIT
  224.     MOVE.L    D4,$50(A6)
  225.     MOVE.L    #BACK+$2E,$54(A6)    ;zwisch
  226.     MOVE.L    #$09F00000,$40(A6)
  227.     MOVE.L    #$FFFFFFFF,$44(A6)
  228.     MOVE.L    #$0024002C,$64(A6)
  229.     MOVE.W    #$0802,$58(A6)
  230. ZERONOW:
  231.     RTS    
  232.         
  233. WAITBLIT:    
  234.     BTST    #$E,$DFF002
  235.     BNE    WAITBLIT
  236.     RTS
  237.  
  238.  
  239. COP:        dc.W    $0102,$0037,$00E0,$0006,$00E2
  240. COPPLANE:    
  241.         dc.W    $D000
  242.         dc.W    $00e4,$0006,$00e6
  243. COPPLANE2:
  244.         dc.W    $D000+[48*4]
  245.         dc.W    $0180,$0000,$0182,$00F0,$0108,$0002
  246.         dc.W    $0184,$0080,$0186,$00F0
  247.         dc.W    $010A,$0002,$0092,$0028,$0094,$00DC
  248.         dc.W    $008E,$2181,$0090,$7FC7,$0100,$2200
  249.         dc.W    $E001,$FFFE
  250.         dc.W    $0180,$0000,$0182,$0080
  251.         dc.W    $0184,$0040,$0186,$0080
  252.         dc.W    $010A,-94-48,$0108,-94-48
  253.         dc.W    $EC01,$FFFE
  254.         dc.W    $0180,$0000,$0182,$0070
  255.         dc.W    $0184,$0040,$0186,$0070
  256.         dc.W    $010A,-94,$0108,-94
  257.         dc.W    $F801,$FFFE
  258.         dc.W    $0180,$0000,$0182,$0060
  259.         dc.W    $0184,$0030,$0186,$0060
  260.         dc.W    $010A,-94-48,$0108,-94-48
  261.         dc.W    $FFDF,$FFFE,$0001,$FFFE
  262.         dc.W    $0180,$0000,$0182,$0050
  263.         dc.W    $0184,$0030,$0186,$0050
  264.         dc.W    $010A,-94,$0108,-94
  265.         dc.W    $1001,$FFFE
  266.         dc.W    $0180,$0000,$0182,$0040
  267.         dc.W    $0184,$0020,$0186,$0040
  268.         dc.W    $010A,-94-48,$0108,-94-48
  269.         dc.W    $1801,$FFFE
  270.         dc.W    $0180,$0000,$0182,$0030
  271.         dc.W    $0184,$0020,$0186,$0030
  272.         dc.W    $010A,-94,$0108,-94
  273.         dc.W    $2401,$FFFE
  274.         dc.W    $0180,$0000,$0182,$0020
  275.         dc.W    $0184,$0010,$0186,$0020
  276.         dc.W    $010A,-94-48,$0108,-94-48
  277.         dc.W    $3201,$FFFE
  278.         dc.W    $0180,$0000,$0182,$0010
  279.         dc.W    $0184,$0000,$0186,$0010
  280.         dc.W    $010A,-94,$0108,-94
  281.         dc.W    $FFFF,$FFFE
  282.  
  283. SINUS:
  284.     dc.L    $008B008E,$00910095,$0098009B,$009F00A2,$00A500A8,$00AB00AE
  285.     dc.L    $00B200B5,$00B800BB,$00BE00C0,$00C300C6,$00C900CB,$00CE00D0
  286.     dc.L    $00D300D5,$00D700D9,$00DB00DD,$00DF00E1,$00E200E4,$00E500E7
  287.     dc.L    $00E800E9,$00EA00EA,$00EB00EC,$00EC00EC,$00EC00EC,$00EC00EC
  288.     dc.L    $00EC00EC,$00EB00EA,$00EA00E9,$00E800E7,$00E500E4,$00E200E1
  289.     dc.L    $00DF00DD,$00DB00D9,$00D700D5,$00D300D0,$00CE00CB,$00C900C6
  290.     dc.L    $00C300C0,$00BE00BB,$00B800B5,$00B200AE,$00AB00A8,$00A500A2
  291.     dc.L    $009F009B,$00980095,$0091008E,$008B0088,$00850081,$007E007B
  292.     dc.L    $00770074,$0071006E,$006B0068,$00640061,$005E005B,$00580056
  293.     dc.L    $00530050,$004D004B,$00480046,$00430041,$003F003D,$003B0039
  294.     dc.L    $00370035,$00340032,$0031002F,$002E002D,$002C002C,$002B002A
  295.     dc.L    $002A002A,$002A002A,$002A002A,$002A002A,$002B002C,$002C002D
  296.     dc.L    $002E002F,$00310032,$00340035,$00370039,$003B003D,$003F0041
  297.     dc.L    $00430046,$0048004B,$004D0050,$00530056,$0058005B,$005E0061
  298.     dc.L    $00640068,$006B006E,$00710074,$0077007B,$007E0081,$00850088
  299. SINEND:
  300.