home *** CD-ROM | disk | FTP | other *** search
/ No Fragments Archive 4: The Falcon Archive / nf_archive_four_v1.0.iso / ARCHIVE / DEMOS / LAZER / LAZEROS.ZIP / LAZEROS / MAIN / STARTUP.S < prev   
Text File  |  1995-05-16  |  11KB  |  439 lines

  1. COLOR0    set $ffff9800
  2.  
  3.  
  4. ;-----------------------------------------------------------
  5. phoenix_init
  6.     move.w    #$2700,sr
  7.     move.l    $70.w,ph_old_vbl+2
  8.     move.l    #ph_vbl,$70.w
  9.     move.w    #$2300,sr
  10.     rts
  11. ;-----------------------------------------------------------
  12. phoenix_exit
  13.     move.w    #$2700,sr
  14.     move.l    ph_old_vbl+2,$70.w
  15.     move.w    #$2300,sr
  16.     rts
  17. ;-----------------------------------------------------------
  18. ph_vbl
  19.     IFD FASTEXIT
  20.     cmp.b    #1,key
  21.     bne    .no_kill
  22.     and.w    #$2300,sr
  23.     jmp    main_exit
  24. .no_kill
  25.     ENDC
  26.  
  27.     cmp.b    #20,old_key
  28.     bne.s    .no_timer
  29.     cmp.b    #20+128,key
  30.     bne.s    .no_timer
  31.     not.w    timer_flag
  32.     clr.b    old_key
  33. .no_timer
  34.  
  35.     add.w    #1,vsync_count
  36.  
  37. ph_old_vbl
  38.     jmp    $12345678
  39. ;-----------------------------------------------------------
  40.  
  41. ;-----------------------------------------------------------
  42. ; -> A0: Pointer to string
  43. ;    A1: Pointer to screen
  44. ;    D0,D1: X,Y Position
  45. ; Der String muß mit $0 terminiert sein!
  46.  
  47. show_string
  48.     rts
  49. ;-----------------------------------------------------------
  50.  
  51.  
  52. ;-----------------------------------------------------------
  53. pusha MACRO
  54.     movem.l    d0-a6,-(sp)
  55.     ENDM
  56. ;-----------------------------------------------------------
  57. popa MACRO
  58.     movem.l    (sp)+,d0-a6
  59.     ENDM
  60. ;-----------------------------------------------------------
  61. save_stack MACRO
  62.     move.l    sp,save_sp
  63.     ENDM
  64. ;-----------------------------------------------------------
  65. restore_stack MACRO
  66.     move.l    save_sp,sp
  67.     ENDM
  68. ;-----------------------------------------------------------
  69. timer MACRO
  70.     tst.w    timer_flag
  71.     beq.s    .no\@
  72.     move.l    #\1,COLOR0
  73. .no\@
  74.     ENDM
  75. ;-----------------------------------------------------------
  76. vsync MACRO
  77.     move.l    d0,-(sp)
  78.     move.w    vsync_count,d0
  79. .wait\@
  80.     cmp.w    vsync_count,d0
  81.     beq    .wait\@
  82.     move.l    (sp)+,d0
  83.     ENDM
  84. ;-----------------------------------------------------------
  85. wait     MACRO
  86.     move.w    #\1,d0
  87. .1\@    vsync
  88.     dbf    d0,.1\@
  89.     ENDM
  90. ;-----------------------------------------------------------
  91. cache_on MACRO
  92.     movec    CACR,d0
  93.     or.l    #1+256,d0
  94.     movec    d0,CACR
  95.     ENDM
  96. ;-----------------------------------------------------------
  97. terminate MACRO
  98.     clr.w    -(sp)
  99.     trap    #1
  100.     ENDM
  101. ;-----------------------------------------------------------
  102. ; ->screen in d0
  103. setscreen MACRO
  104.     move.w    d0,d1
  105.     lsr.w    #8,d1
  106.     move.l    d0,d2
  107.     swap    d2
  108.     move.b    d2,$ffff8201.w
  109.     move.b    d1,$ffff8203.w
  110.     move.b    d0,$ffff820d.w
  111.     ENDM
  112. ;-----------------------------------------------------------
  113. swapscreens MACRO
  114.     move.l    d0,-(sp)
  115.     move.l    scr1,d0
  116.     move.l    scr2,scr1
  117.     move.l    d0,scr2
  118.     move.l    (sp)+,d0
  119.     ENDM
  120. ;-----------------------------------------------------------
  121. save_resolution MACRO
  122.     move.w    #-1,-(sp)
  123.     move.w    #88,-(sp)
  124.     trap    #14
  125.     addq    #4,sp
  126.     move.w    d0,old_resolution
  127.     ENDM
  128. ;-----------------------------------------------------------
  129. restore_resolution MACRO
  130.     move.w    old_resolution,-(sp)
  131.     move.w    #88,-(sp)
  132.     trap    #14
  133.     addq    #4,sp
  134.     ENDM
  135. ;-----------------------------------------------------------
  136. ; gibt den vom Programm nicht benötigten Speicher wieder zurück
  137. shrink_memory    MACRO
  138.     move.l    a7,a5
  139.     move.l    #mystack,a7
  140.     move.l    4(a5),a5
  141.  
  142.     move.l    $c(a5),d0
  143.     add.l    $14(a5),d0
  144.     add.l    $1c(a5),d0
  145.     add.l    #$100,d0
  146.     move.l    d0,-(sp)
  147.     move.l    a5,-(sp)
  148.     move.w    #0,-(sp)
  149.     move.w    #$4a,-(sp)
  150.     trap    #1
  151.     lea    12(sp),sp
  152.     tst.l    d0
  153. ***    bne    .error
  154.     ENDM
  155. ;-----------------------------------------------------------
  156. save_interrupts MACRO
  157.         move.b  $fffffa07.w,old7
  158.         move.b  $fffffa09.w,old9
  159.         move.b  $fffffa11.w,old11
  160.         move.b  $fffffa13.w,old13
  161.         move.b  $fffffa15.w,old15
  162.         move.b  $fffffa19.w,old19
  163.         move.b  $fffffa1b.w,old1b
  164.         move.b  $fffffa1d.w,old1d
  165.         move.b  $fffffa1f.w,old1f
  166.         move.b  $fffffa23.w,old23
  167.  
  168.     move.l    $68.w,old68
  169.         move.l  $110.w,old110
  170.         move.l  $118.w,old118
  171.         move.l  $120.w,old120
  172.     move.l    $134.w,old134
  173.         move.l  $70.w,old70
  174.         move.l  $70.w,old_vbl+2
  175.         ENDM
  176. ;-----------------------------------------------------------
  177. set_interrupts MACRO
  178.     move.w    #$2700,sr
  179.     move.b    #1,$fffffa07.w
  180.     clr.b    $fffffa09.w
  181.     move.b    #1,$fffffa13.w
  182.     clr.b    $fffffa15.w
  183.     clr.b    $fffffa19.w
  184.     move.w    #$2300,sr
  185.     
  186.     bset    #6,$fffffa09.w
  187.     bset    #6,$fffffa15.w
  188.         move.l  #vbl,$70.w
  189.     ENDM
  190. ;-----------------------------------------------------------
  191. restore_interrupts MACRO
  192.     move.w    #$2700,sr
  193.         move.l  old134,$134.w
  194.         move.l  old120,$120.w
  195.         move.l  old118,$118.w
  196.         move.l  old110,$110.w
  197.         move.l  old68,$68.w
  198.  
  199.         move.b  old7,$fffa07
  200.         move.b  old9,$fffa09
  201.         move.b  old11,$fffa11
  202.         move.b  old13,$fffa13
  203.         move.b  old15,$fffa15
  204.         move.b  old19,$fffa19
  205.         move.b  old1b,$fffa1b
  206. *    clr.b    $fffffa1d.w
  207. *    move.b  old1d,$fffa1d
  208.         move.b  old1f,$fffa1f
  209. *    move.b  old23,$fffa23
  210.     move.w    #$2300,sr
  211.         move.l  old70,$70.w
  212.     ENDM
  213. ;-----------------------------------------------------------
  214. super_on MACRO
  215.         move.l  #0,-(sp)
  216.         move.w  #32,-(sp)
  217.         trap    #1
  218.         addq.l  #6,sp
  219.         move.l  d0,user_sp
  220.     ENDM
  221. ;-----------------------------------------------------------
  222. super_off MACRO
  223.         move.l  user_sp,-(sp)
  224.         move.w  #32,-(sp)
  225.         trap    #1
  226.         addq.l  #6,sp
  227.     ENDM
  228. ;-----------------------------------------------------------
  229. mouse_off MACRO
  230.         dc.w    $a00a
  231.  
  232.         pea     moff
  233.         move.w  #0,-(sp)
  234.         move.w  #25,-(sp)
  235.         trap    #14
  236.         addq.l  #8,sp
  237.     ENDM
  238. ;-----------------------------------------------------------
  239. mouse_on MACRO
  240.         pea     mon
  241.         move.w  #0,-(sp)
  242.         move.w  #25,-(sp)
  243.         trap    #14
  244.         addq.l  #8,sp
  245.         
  246.         dc.w    $a009
  247.     ENDM
  248. ;-----------------------------------------------------------
  249. clr_bss MACRO
  250.     moveq    #0,d0
  251.     lea    start_bss,a0
  252.     lea    end_bss,a1
  253. .loop\@
  254.     move.l    d0,(a0)+
  255.     cmp.l    a1,a0
  256.     blt    .loop\@
  257.     ENDM
  258. ;-----------------------------------------------------------
  259. ; -> Checkt monitor: monitor_flag..1 ->VGA
  260. ;             monitor_flag..0 ->RGB
  261. check_vga
  262.     clr.w    monitor_flag
  263.     move.w    #89,-(sp)
  264.     trap    #14
  265.     addq    #2,sp
  266.     cmp.w    #2,d0
  267.     beq    is_vga
  268.     rts
  269. is_vga    move.w    #1,monitor_flag
  270.     rts
  271. ;-----------------------------------------------------------
  272. ; -> A0: Pointer auf die Hardware-Daten
  273. set_resolution MACRO
  274.         move.l    (a0)+,$ffff8282.w
  275.         move.l    (a0)+,$ffff8286.w
  276.         move.l    (a0)+,$ffff828A.w
  277.         move.l    (a0)+,$ffff82A2.w
  278.         move.l    (a0)+,$ffff82A6.w
  279.         move.l    (a0)+,$ffff82AA.w
  280.         move.w    (a0)+,$ffff820A.w
  281.         move.w    (a0)+,$ffff82C0.w
  282.         clr.w    $ffff8266.w
  283.         move.w    (a0)+,$ffff8266.w
  284.         move.w    (a0)+,$ffff82C2.w
  285.         move.w    (a0)+,$ffff8210.w
  286.     ENDM
  287. ;-----------------------------------------------------------
  288. ; RGB 384*240, True Color, 50.0 Hz, 15625 Hz
  289. rgb_384x240xtrue
  290.     dc.l    $FE00CC,$280019,$BA00D9,$2710265,$2F0059,$239026B
  291.         dc.w    $200,$181,$100,$0,$180
  292.  
  293. ; RGB 320*200, 16 Farben, 50.0 Hz, 15625 Hz
  294. rgb_320x200x16
  295.     dc.l    $FE00CC,$280017,$7800D9,$2710265,$2F0081,$211026B
  296.     dc.w    $200,$181,$0,$0,$50
  297.  
  298. ; RGB 640*200, 16 Farben, 50.0 Hz, 15625 Hz
  299. rgb_640x200x16
  300.     dc.l    $1FE0199,$500061,$11201B3,$2710265,$2F0081,$211026B
  301.     dc.w    $200,$181,$0,$4,$A0
  302.  
  303. ; RGB 640*200, 4 Farben, 50.0 Hz, 15625 Hz
  304. rgb_640x200x4
  305.         dc.l    $3E0033,$3E0033,$A0005,$1E0036,$2710265,$2F0081,$211026B
  306.     dc.w    $200,$181,$1,$4,$50
  307.  
  308. ; RGB 320*100, 256 Farben, 50.0 Hz, 15625 Hz
  309. rgb_320x100x256
  310.     dc.l    $FE00CC,$28001E,$7F00D9,$2710265,$2F007D,$20D026B
  311.     dc.w    $200,$181,$10,$1,$A0
  312.  
  313. ; RGB 320*200, 256 Farben, 50.0 Hz, 15625 Hz
  314. rgb_320x200x256
  315.     dc.l    $FE00CC,$28001E,$7F00D9,$2710265,$2F007F,$20F026B
  316.     dc.w    $200,$181,$10,$0,$A0
  317.  
  318. ; RGB 384*120, 256 Farben, 50.0 Hz, 15625 Hz
  319. rgb_384x120x256
  320.     dc.l    $FE00CC,$280007,$A800D9,$2710265,$2F0059,$239026B
  321.     dc.w    $200,$181,$10,$1,$C0
  322.  
  323. ; RGB 384*240, 256 Farben, 50.0 Hz, 15625 Hz
  324. rgb_384x240x256
  325.     dc.l    $FE00CC,$280007,$A800D9,$2710265,$2F0059,$239026B
  326.     dc.w    $200,$181,$10,$0,$C0
  327.  
  328.  
  329.  
  330. ; VGA 384*240, 256 Farben, 60.0 Hz, 31470 Hz
  331. vga_384x240x256_60
  332.         dc.l    $FC00B4,$1A02E0,$9500C0,$41903AF,$8F003D,$3FD0415
  333.         dc.w    $200,$182,$10,$5,$C0
  334.  
  335. ; VGA 384*240, 256 Farben, 50.0 Hz, 31470 Hz
  336. vga_384x240x256
  337.         dc.l    $FC00B4,$1A02E0,$9500C0,$4EB0481,$8F00A5,$46504E7
  338.         dc.w    $200,$182,$10,$5,$C0
  339.  
  340. ; VGA 384*240, True Color, 60.0 Hz, 31470 Hz
  341. vga_384x240xtrue_60
  342.         dc.l    $FC00B4,$1A02F2,$A700C0,$41903AF,$8F003D,$3FD0415
  343.         dc.w    $200,$182,$100,$5,$180
  344.  
  345. ; VGA 384*240, True Color, 50.0 Hz, 31470 Hz
  346. vga_384x240xtrue
  347.         dc.l    $FC00B4,$1A02F2,$A700C0,$4EB0481,$8F00A5,$46504E7
  348.         dc.w    $200,$182,$100,$5,$180
  349.  
  350. ; VGA 640*200, 16 Farben, 50.0 Hz, 31470 Hz
  351. vga_640x200x16
  352.     dc.l    $C6008D,$1502A3,$7C0097,$4EB0481,$8F010D,$42D04E7
  353.     dc.w    $200,$186,$0,$9,$A0
  354.  
  355. ; VGA 640*200, 4 Farben, 50.0 Hz, 31470 Hz
  356. vga_640x200x4
  357.         dc.l    $170011,$2020E,$D0012,$4EB0481,$8F00ED,$40D04E7
  358.     dc.w    $200,$186,$1,$9,$50
  359.  
  360. rgb_320x200xtrue
  361.     dc.l    $FE00C3,$200030,$9100D7,$2710265,$2F0081,$211026B
  362.     dc.w    $200,$181,$100,$0,$140
  363.  
  364.  
  365. ; RGB 320*240, True Color, 50.0 Hz, 15625 Hz
  366. rgb_320x240xtrue_cin
  367.     dc.l    $C70099,$1902C5,$9400A9,$2710265,$2F0059,$239026B
  368.     dc.w    $200,$185,$100,$0,$140
  369.  
  370. rgb_320x120xtrue_cin
  371.     dc.l    $C70099,$1902C5,$9400A9,$2710265,$2F0059,$239026B
  372.     dc.w    $200,$187,$100,$1,$140
  373.  
  374. rgb_640x400xtrue
  375.     dc.l    $1FE0187,$400072,$12301AF,$2700265,$2F0080,$210026B
  376.     dc.w    $200,$181,$100,$6,$280
  377.  
  378. ; RGB 320*240, 16 Farben, 50.0 Hz, 15625 Hz
  379. rgb_320x240x16_cin
  380.     dc.l    $C70099,$1902A3,$7200A6,$2710265,$2F0059,$239026B
  381.     dc.w    $200,$186,$0,$0,$50
  382.  
  383. ; RGB 320*240, 256 Farben, 50.0 Hz, 15625 Hz
  384. rgb_320x240x256_cin
  385.     dc.l    $C70099,$1902B3,$8200A6,$2710265,$2F0059,$239026B
  386.     dc.w    $200,$186,$10,$0,$A0
  387.  
  388. ;RGB 384*240, True Color, 60.0 Hz, 15625 Hz
  389. rgb_384x240xtrue_60
  390.     dc.l    $FE00C3,$200010,$B100D3,$20901FD,$2F0027,$2070203
  391.     dc.w    $200,$182,$100,$0,$180
  392.  
  393.  
  394. ;-----------------------------------------------------------
  395.  
  396. moff        dc.b    $12
  397. mon        dc.b    $8
  398.  
  399. user_sp        dc.l    0
  400.  
  401. old7        dc.b    0
  402. old9        dc.b    0
  403. old11        dc.b    0
  404. old13        dc.b    0
  405. old15        dc.b    0
  406. old19        dc.b    0
  407. old1b        dc.b    0
  408. old1d        dc.b    0
  409. old1f        dc.b    0
  410. old23        dc.b    0
  411.         even
  412. old68        dc.l    0
  413. old70        dc.l    0
  414. old120        dc.l    0
  415. old110        dc.l    0
  416. old118        dc.l    0
  417. old134        dc.l    0
  418.  
  419. old_screen    dc.l    0
  420. old_resolution    dc.w    0
  421. old_vid_buffer:    ds.w 23+16+32        *video + ST-Farben + Falcon-Farben
  422.     ds.l    400
  423. save_sp        dc.l    0
  424.  
  425. vsync_count    dc.w    0
  426.  
  427.     IFD TIMER
  428. timer_flag    dc.w    TIMER
  429.     ELSE
  430. timer_flag    dc.w    0
  431.     ENDC
  432.  
  433. old_key        dc.b    0
  434. key        dc.b    0
  435. monitor_flag    dc.w    0    ;0=RGB , 1=VGA
  436.  
  437. **font_sys_8x8    incbin    f:\lanix\sys_8x8.fnt
  438.  
  439.     even