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

  1.     section lame,code_c
  2.  
  3. >EXTERN"df0:fonta",font
  4.  
  5. ;tRAX oF fALCON iN 1991
  6.  
  7. font=$60000
  8. plane=$50000
  9.  
  10.  
  11. Trap_vec0  = $80
  12. Execbase   = $4
  13. Oldopen    = -$198
  14. Intenar    = $01c
  15. Intena     = $09a
  16. Dmaconr    = $002
  17. Dmacon     = $096
  18. Cop1lch    = $080
  19. Copjmp1    = $088
  20. Vposr      = $004
  21.  
  22.     Move.l    #Start,$80.w    ; Trap vector 0
  23.     Trap    #0        ; Execute trap 0 to give full control of the
  24.     Rts            ; 68000, needs an RTE to return.
  25.  
  26. Start:
  27.     bsr    KillSys
  28.     bsr    main
  29.     bsr    setupsys
  30.  
  31.     Rte        ; Return from exception 
  32.         
  33.  
  34. *****************************************************************************
  35. ;Killsys - Disable operating system and interrupts
  36. *****************************************************************************
  37. Killsys:
  38.     Move.l    $4.w,a6        ; Execbase vector
  39.     Lea    Gfxname(pc),a1    ; Pointer to "graphics.library" into a1
  40.     Jsr    Oldopen(a6)    ; Open this library
  41.     Lea    $dff000,a6    ; Pointer to custom chips
  42.     Move.l    d0,a0        ; Address of the graphics library
  43.     Move.l    38(a0),Sys_copl        ; Remember the System copperlist
  44.     Move    Intenar(a6),Int_set    ; System interrupts
  45.     Move    #$7fff,Intena(a6)    ; Now switch off all interrupts
  46.     Move.l    $6c.w,Vbl_vec        ; System vertical blanking int.
  47.     move.l    #irq,$6c
  48.     Move    Dmaconr(a6),Dma_set    ; System DMA
  49.     Move    #$7fff,Dmacon(a6)    ; Clear all DMA
  50.     Move    #$87c0,Dmacon(a6)    ; Now set the required DMA channels
  51.     move    #$0020,Dmacon(a6)
  52.     move    #$c020,$dff09a
  53.  
  54.     Move.l    #cop,Cop1lch(a6)    ; Init. our own copperlist
  55.     Clr    Copjmp1(a6)
  56.  
  57.     Rts
  58.  
  59. Gfxname:    Dc.b "graphics.library",0
  60.     Even
  61. *****************************************************************************
  62. ;Sysreturn - Re-enable operating system and interrupts
  63. *****************************************************************************
  64. Setupsys:
  65.     Lea    $dff000,a6
  66.     Move    #$7fff,Intena(a6)    ; Clear all interrupts
  67.     Move.l    Vbl_vec,$6c.w    ; Restore VBL interrupt
  68.     Move    Int_set,d0
  69.     Or    #$c000,d0
  70.     Move    d0,Intena(a6)        ; Restore system interrupts
  71.     Move    #$7fff,Dmacon(a6)
  72.     Move    Dma_set,d0
  73.     Or    #$8200,d0
  74.     Move    d0,Dmacon(a6)        ; Restore system DMA
  75.     Move.l    Sys_copl,Cop1lch(a6)    ; Restore system copperlist
  76.     Clr    Copjmp1(a6)
  77.     Rts
  78.  
  79. Vbl_vec:          dc.l 0
  80. Int_set:          dc.l 0
  81. Dma_set:          dc.l 0
  82. Sys_copl:          dc.l 0
  83.  
  84.  
  85. Main:
  86.  
  87.     Btst    #6,$bfe001    ; Check the left mouse button
  88.     Bne.s    Main
  89.  
  90.     Rts
  91.  
  92. irq:
  93.     
  94.  
  95.     bsr    left
  96.     bsr    sin
  97.  
  98.     move.w    #$0020,$dff09c
  99.     rte
  100.  
  101. zhler:    dc.w 8
  102. timer:    dc.w 0
  103.  
  104. LEFT:    TST.W    TIMER
  105.     BEQ    GOON
  106.     SUBQ.W    #1,TIMER
  107.     RTS
  108. GOON:
  109.     BSR    blitwait
  110.     MOVE.L    #plane,$0054(A6)
  111.     MOVE.L    #plane+2,$0050(A6)
  112.     MOVE.L    #$E9F00000,$0040(A6)
  113.     MOVE.L    #$FFFFFFFF,$0044(A6)
  114.     CLR.L    $0064(A6)
  115.     MOVE.W    #$0555,$0058(A6)
  116.     MOVE.W    zhler(PC),D0
  117.     SUBQ.W    #1,D0
  118.     BEQ    TEXTOUT
  119.     MOVE.W    D0,zhler    
  120.     RTS    
  121.  
  122. TEXTOUT:
  123.     MOVE.W    #8,zhler
  124.     MOVE.L    textpointer(PC),A0
  125.     MOVEQ    #0,D0
  126.     MOVE.B    (A0)+,D0
  127.     CMP.B    #1,(A0)
  128.     BNE.S    LSD
  129.     MOVE.W    #200,TIMER
  130.     MOVE.W    #$20,D0
  131.     ADDQ.L    #1,A0
  132. LSD:
  133.     CMP.B    #0,(A0)
  134.     BNE.S    lbC22
  135.  
  136.     LEA    text(PC),A0
  137. lbC22:    MOVE.L    A0,textpointer
  138.  
  139. lbC34:    CMP.B    #$49,D0
  140.     BNE.S    lbC42
  141.     MOVE.W    #5,zhler
  142. lbC42:    SUB.B    #$20,D0
  143.     DIVU    #$14,D0
  144.     MOVE.W    D0,D1
  145.     CLR.W    D0
  146.     SWAP    D0
  147.     MULU    #$348,D1
  148.     LSL.W    #1,D0
  149.     LEA    font,A0 ;font
  150.     ADD.L    D0,A0
  151.     ADD.L    D1,A0
  152.     LEA    plane+$2a,A1   ;pos
  153.     MOVE.W    #$0013,D0
  154. lbC6A:    MOVE.L    (A0),(A1)
  155.     LEA    $002C(A1),A1
  156.     LEA    $0028(A0),A0
  157.     DBRA    D0,lbC6A
  158.     RTS    
  159.  
  160.  
  161. sin:    BCHG    #1,flag
  162.     BNE.S    lbC16
  163.     MOVE.l    #plane+$3000-84,D3    ;w
  164.     MOVE.L    #plane+$3000,D6
  165.     BRA.S    lbC20
  166.  
  167. lbC16:    MOVE.l    #plane+$1000-84,D3  ;low
  168.     MOVE.L    #plane+$1000,D6        ;high
  169. lbC20:    MOVE.W    D3,cop1
  170.     ADD.W    #$0054,D3
  171.     MOVE.W    D3,cop2
  172.     BSR    blitwait
  173.     MOVE.L    D6,$0054(A6)
  174.     SUBQ.L    #2,D6
  175.     MOVE.W    #$0100,$0040(A6)
  176.     MOVE.W    #2,$0066(A6)
  177.     MOVE.W    #$2B94+256,$0058(A6)
  178.     MOVEQ    #$14,D3
  179.     MOVE.L    #plane,D2
  180.     MOVE.L    sinpointer(PC),A2
  181.     
  182.     BSR    blitwait
  183.     
  184.     MOVE.W    #$0DFC,$0040(A6)
  185.     MOVE.W    #$0028,$0066(A6)
  186.     MOVE.L    #$0028002A,$0062(A6)
  187.     MOVE.W    #$8400,$0096(A6)
  188.     MOVE.L    #tab2,D7  
  189.     MOVE.W    #$0501,D1
  190. lbC90:    MOVE.W    #$8000,D0
  191.     MOVEQ    #15,D5
  192. lbC96:    MOVEQ    #0,D4
  193.     MOVE.B    (A2)+,D4
  194.     MOVE.L    D7,A0
  195.     ADD.W    D4,A0
  196.     ADD.W    D4,A0
  197.     MOVE.W    (A0),D4
  198.     ADD.W    D4,D6
  199.     MOVE.L    D6,$004C(A6)
  200.     MOVE.L    D2,$0050(A6)
  201.     MOVE.L    D6,$0054(A6)
  202.     SUB.L    D4,D6
  203.     MOVE.W    D0,$0046(A6)
  204.     MOVE.W    D1,$0058(A6)
  205.     ROR.W    #1,D0
  206.     DBRA    D5,lbC96
  207.     ADDQ.L    #2,D2
  208.     ADDQ.L    #2,D6
  209.     DBRA    D3,lbC90
  210.     MOVE.W    #$0400,$0096(A6)
  211.     CMP.L    #sintab,sinpointer  ;sintab
  212.     BEQ.S    lbCE2
  213.     SUBQ.L    #1,sinpointer
  214.     RTS    
  215.  
  216. lbCE2:    ADD.L    #$0000013F,sinpointer
  217.     RTS    
  218.     
  219. blitwait:
  220.     BTST    #14,2(A6)
  221.     BNE.S    blitwait
  222.     RTS
  223.  
  224. textpointer:    dc.l text
  225. sinpointer:    dc.l sintab+$13f
  226. flag:    dc.w 0
  227.  
  228. text:    dc.b"    TRAX# (IN 1991)   ",01," @948 10 69   SWITZERLAND !!!",0
  229.     even
  230.  
  231.  
  232. sintab:    DC.W    $4E50,$5153,$5456,$5759,$5A5C,$5D5F,$6062,$6365
  233.     DC.W    $6668,$696B,$6C6D,$6F70,$7273,$7476,$7778,$7A7B
  234.     DC.W    $7C7D,$7F80,$8182,$8384,$8687,$8889,$8A8B,$8C8D
  235.     DC.W    $8E8E,$8F90,$9192,$9293,$9495,$9596,$9797,$9898
  236.     DC.W    $9999,$9A9A,$9A9B,$9B9B,$9C9C,$9C9C,$9C9C,$9D9D
  237.     DC.W    $9D9D,$9D9C,$9C9C,$9C9C,$9C9B,$9B9B,$9A9A,$9A99
  238.     DC.W    $9998,$9897,$9796,$9595,$9493,$9292,$9190,$8F8E
  239.     DC.W    $8E8D,$8C8B,$8A89,$8887,$8684,$8382,$8180,$7F7D
  240.     DC.W    $7C7B,$7A78,$7776,$7473,$7270,$6F6D,$6C6B,$6968
  241.     DC.W    $6665,$6362,$605F,$5D5C,$5A59,$5756,$5453,$5150
  242.     DC.W    $4E4C,$4B49,$4846,$4543,$4240,$3F3D,$3C3A,$3937
  243.     DC.W    $3634,$3331,$302F,$2D2C,$2A29,$2826,$2524,$2221
  244.     DC.W    $201F,$1D1C,$1B1A,$1918,$1615,$1413,$1211,$100F
  245.     DC.W    $0E0E,$0D0C,$0B0A,$0A09,$0807,$0706,$0505,$0404
  246.     DC.W    $0303,$0202,$0201,$0101,$0100,$0000,$0000,$0000
  247.     DC.W    $0000,$0000,$0000,$0000,$0101,$0101,$0202,$0203
  248.     DC.W    $0304,$0405,$0506,$0707,$0809,$0A0A,$0B0C,$0D0E
  249.     DC.W    $0E0F,$1011,$1213,$1415,$1618,$191A,$1B1C,$1D1F
  250.     DC.W    $2021,$2224,$2526,$2829,$2A2C,$2D2F,$3031,$3334
  251.     DC.W    $3637,$393A,$3C3D,$3F40,$4243,$4546,$4849,$4B4C
  252.     DC.W    $4E50,$5153,$5456,$5759,$5A5C,$5D5F,$6062,$6365
  253.     DC.W    $6668,$696B,$6C6D,$6F70,$7273,$7476,$7778,$7A7B
  254.     DC.W    $7C7D,$7F80,$8182,$8384,$8687,$8889,$8A8B,$8C8D
  255.     DC.W    $8E8E,$8F90,$9192,$9293,$9495,$9596,$9797,$9898
  256.     DC.W    $9999,$9A9A,$9A9B,$9B9B,$9C9C,$9C9C,$9C9C,$9D9D
  257.     DC.W    $9D9D,$9D9C,$9C9C,$9C9C,$9C9B,$9B9B,$9A9A,$9A99
  258.     DC.W    $9998,$9897,$9796,$9595,$9493,$9292,$9190,$8F8E
  259.     DC.W    $8E8D,$8C8B,$8A89,$8887,$8684,$8382,$8180,$7F7D
  260.     DC.W    $7C7B,$7A78,$7776,$7473,$7270,$6F6D,$6C6B,$6968
  261.     DC.W    $6665,$6362,$605F,$5D5C,$5A59,$5756,$5453,$5150
  262.     DC.W    $4E4C,$4B49,$4846,$4543,$4240,$3F3D,$3C3A,$3937
  263.     DC.W    $3634,$3331,$302F,$2D2C,$2A29,$2826,$2524,$2221
  264.     DC.W    $201F,$1D1C,$1B1A,$1918,$1615,$1413,$1211,$100F
  265.     DC.W    $0E0E,$0D0C,$0B0A,$0A09,$0807,$0706,$0505,$0404
  266.     DC.W    $0303,$0202,$0201,$0101,$0100,$0000,$0000,$0000
  267.     DC.W    $0000,$0000,$0000,$0000,$0101,$0101,$0202,$0203
  268.     DC.W    $0304,$0405,$0506,$0707,$0809,$0A0A,$0B0C,$0D0E
  269.     DC.W    $0E0F,$1011,$1213,$1415,$1618,$191A,$1B1C,$1D1F
  270.     DC.W    $2021,$2224,$2526,$2829,$2A2C,$2D2F,$3031,$3334
  271.     DC.W    $3637,$393A,$3C3D,$3F40,$4243,$4546,$4849,$4B4C
  272.     DC.W    $4E50,$5153,$5456,$5759,$5A5C,$5D5F,$6062,$6365
  273.     DC.W    $6668,$696B,$6C6D,$6F70,$7273,$7476,$7778,$7A7B
  274.     DC.W    $7C7D,$7F80,$8182,$8384,$8687,$8889,$8A8B,$8C8D
  275.     DC.W    $8E8E,$8F90,$9192,$9293,$9495,$9596,$9797,$9898
  276.     DC.W    $9999,$9A9A,$9A9B,$9B9B,$9C9C,$9C9C,$9C9C,$9D9D
  277.     DC.W    $9D9D,$9D9C,$9C9C,$9C9C,$9C9B,$9B9B,$9A9A,$9A99
  278.     DC.W    $9998,$9897,$9796,$9595,$9493,$9292,$9190,$8F8E
  279.     DC.W    $8E8D,$8C8B,$8A89,$8887,$8684,$8382,$8180,$7F7D
  280.     DC.W    $7C7B,$7A78,$7776,$7473,$7270,$6F6D,$6C6B,$6968
  281.     DC.W    $6665,$6362,$605F,$5D5C,$5A59,$5756,$5453,$5150
  282.     DC.W    $4E4C,$4B49,$4846,$4543,$4240,$3F3D,$3C3A,$3937
  283.     DC.W    $3634,$3331,$302F,$2D2C,$2A29,$2826,$2524,$2221
  284.     DC.W    $201F,$1D1C,$1B1A,$1918,$1615,$1413,$1211,$100F
  285.     DC.W    $0E0E,$0D0C,$0B0A,$0A09,$0807,$0706,$0505,$0404
  286.     DC.W    $0303,$0202,$0201,$0101,$0100,$0000,$0000,$0000
  287.     DC.W    $0000,$0000,$0000,$0000,$0101,$0101,$0202,$0203
  288.     DC.W    $0304,$0405,$0506,$0707,$0809,$0A0A,$0B0C,$0D0E
  289.     DC.W    $0E0F,$1011,$1213,$1415,$1618,$191A,$1B1C,$1D1F
  290.     DC.W    $2021,$2224,$2526,$2829,$2A2C,$2D2F,$3031,$3334
  291.     DC.W    $3637,$393A,$3C3D,$3F40,$4243,$4546,$4849,$4B4C
  292.  
  293. tab2:    DC.W    $0000,$002A,$0054,$007E,$00A8,$00D2,$00FC,$0126
  294.     DC.W    $0150,$017A,$01A4,$01CE,$01F8,$0222,$024C,$0276
  295.     DC.W    $02A0,$02CA,$02F4,$031E,$0348,$0372,$039C,$03C6
  296.     DC.W    $03F0,$041A,$0444,$046E,$0498,$04C2,$04EC,$0516
  297.     DC.W    $0540,$056A,$0594,$05BE,$05E8,$0612,$063C,$0666
  298.     DC.W    $0690,$06BA,$06E4,$070E,$0738,$0762,$078C,$07B6
  299.     DC.W    $07E0,$080A,$0834,$085E,$0888,$08B2,$08DC,$0906
  300.     DC.W    $0930,$095A,$0984,$09AE,$09D8,$0A02,$0A2C,$0A56
  301.     DC.W    $0A80,$0AAA,$0AD4,$0AFE,$0B28,$0B52,$0B7C,$0BA6
  302.     DC.W    $0BD0,$0BFA,$0C24,$0C4E,$0C78,$0CA2,$0CCC,$0CF6
  303.     DC.W    $0D20,$0D4A,$0D74,$0D9E,$0DC8,$0DF2,$0E1C,$0E46
  304.     DC.W    $0E70,$0E9A,$0EC4,$0EEE,$0F18,$0F42,$0F6C,$0F96
  305.     DC.W    $0FC0,$0FEA,$1014,$103E,$1068,$1092,$10BC,$10E6
  306.     DC.W    $1110,$113A,$1164,$118E,$11B8,$11E2,$120C,$1236
  307.     DC.W    $1260,$128A,$12B4,$12DE,$1308,$1332,$135C,$1386
  308.     DC.W    $13B0,$13DA,$1404,$142E,$1458,$1482,$14AC,$14D6
  309.     DC.W    $1500,$152A,$1554,$157E,$15A8,$15D2,$15FC,$1626
  310.     DC.W    $1650,$167A,$16A4,$16CE,$16F8,$1722,$174C,$1776
  311.     DC.W    $17A0,$17CA,$17F4,$181E,$1848,$1872,$189C,$18C6
  312.     DC.W    $18F0,$191A,$1944,$196E,$1998,$19C2,$19EC,$1A16
  313.     DC.W    $1A40,$1A6A,$1A94,$1ABE,$1AE8,$1B12,$1B3C,$1B66
  314.     DC.W    $1B90,$1BBA,$1BE4,$1C0E,$1C38,$1C62,$1C8C,$1CB6
  315.     DC.W    $1CE0,$1D0A,$1D34,$1D5E,$1D88,$1DB2,$1DDC,$1E06
  316.     DC.W    $1E30,$1E5A,$1E84,$1EAE,$1ED8,$1F02,$1F2C,$1F56
  317.     DC.W    $1F80,$1FAA,$1FD4,$1FFE,$2028,$2052,$207C,$20A6
  318.     DC.W    $20D0,$20FA,$2124,$214E,$2178,$21A2,$21CC,$21F6
  319.     DC.W    $2220,$224A,$2274,$229E,$22C8,$22F2,$231C,$2346
  320.     DC.W    $2370,$239A,$23C4,$23EE,$2418,$2442,$246C,$2496
  321.     DC.W    $24C0,$24EA,$2514,$253E,$2568,$2592,$25BC,$25E6
  322.     DC.W    $2610,$263A,$2664,$268E,$26B8,$26E2,$270C,$2736
  323.     DC.W    $2760,$278A,$27B4,$27DE,$2808,$2832,$285C,$2886
  324.     DC.W    $28B0,$28DA,$2904,$292E,$2958,$2982,$29AC,$29D6
  325.  
  326.  
  327. cop:    DC.W    $008E,$2c81,$0090,$44c1,$0092,$0038
  328.     DC.W    $0094,$00d0,$0100,$0000,$0102,$0045
  329.     DC.W    $0108,2,$010A,2
  330.     DC.W    $0180,$0000,$0182,$000f,$0184,$0007
  331.     DC.W    $0186,$000b
  332.     DC.W    $00E0,$0005,$00E2
  333. cop1:    DC.W    $2000
  334.     DC.W    $00E4,$0005,$00E6
  335. cop2:    DC.W    $2054
  336.     DC.W    $2001,$FFFE,$0100,$2200
  337.     DC.W    $E001,$FFFE
  338.     DC.W    $0108,-82,$010a,-82
  339.     DC.W    $0182,$0008,$0184,$0003,$0186,$0006
  340.     DC.W    $FFFF,$FFFE
  341.