home *** CD-ROM | disk | FTP | other *** search
/ No Fragments Archive 10: Diskmags / nf_archive_10.iso / MAGS / STMAGAZIN / STMAGAZIN.MSA / HEXER_DE.MOS / DEMO_3 / RANDO_L3.S < prev    next >
Text File  |  1986-02-06  |  4KB  |  236 lines

  1. ; Listing 3: Entfernt den unteren und oberen Rand
  2. ; für K-SEKA ab 1.5  Programm von Gunter (6719)
  3. ; auch falls wir uns wiederholen: nur in Farbe lauffähig
  4.  
  5.  
  6. x:
  7.     clr.l    -(sp)
  8.     move.w    #$20,-(sp)
  9.     trap    #1
  10.     move.l    d0,savereg
  11.     move.l    #$70000,a7
  12.  
  13.     move.l    #moff,-(sp)
  14.     clr.w    -(sp)
  15.     move.w    #25,-(sp)
  16.     trap    #14
  17.     addq.l    #8,sp
  18.     line_a $a        ;mouse off
  19.  
  20.     move.w    #4,-(sp)        
  21.     trap    #14
  22.     addq.l    #2,sp
  23.     move.w    d0,oldrez
  24.     move.l    $44e.w,oldscr
  25.     move.l    #$70000,screen    ;neuer Bildschirm
  26.  
  27.     movem.l    $ffff8240.w,d0-d7
  28.     movem.l    d0-d7,oldpal
  29.     move.b    #$02,$ffff820a.w
  30.  
  31.     bsr    prepare
  32.     bsr    hblon
  33.  
  34.     move.w    #7,-(sp)
  35.     trap    #1
  36.     addq.l    #2,sp
  37.  
  38.     bsr    hbloff
  39.  
  40.     movem.l    oldpal,d0-d7
  41.     movem.l    d0-d7,$ffff8240.w
  42.     move.w    oldrez,-(sp)
  43.     move.l    oldscr,-(sp)
  44.     move.l    oldscr,-(sp)
  45.     move.w    #5,-(sp)
  46.     trap    #14
  47.     add.l    #12,sp
  48.  
  49.     move.l    #mon,-(sp)
  50.     clr.w    -(sp)
  51.     move.w    #25,-(sp)
  52.     trap    #14
  53.     addq.l    #8,sp
  54.     line_a    $9        ;mouse on
  55.     move.l    savereg,-(sp)
  56.     move.w    #$20,-(sp)
  57.     trap    #1
  58.     addq.l    #6,sp
  59.  
  60. ;    illegal
  61.     clr.l    -(sp)
  62.     trap    #1
  63.  
  64. oldrez:  dc.w 0
  65. oldscr:  dc.l 0
  66. savereg: dc.l 0
  67. screen:  dc.l 0
  68. oldpal:  blk.w 16,0
  69. mon:  dc.b $08
  70. moff: dc.b $12
  71.  
  72. ;-----------------------------
  73. hblon:
  74.     move.l    $120.w,oldtb    ;Vektoren retten
  75.     move.l    $70.w,old4
  76.     move.l    $70.w,new4b+2
  77.     move.b    $fffffa07.w,old07
  78.     move.b    $fffffa09.w,old09
  79.     move.b    $fffffa0f.w,old0f
  80.     move.b    $fffffa11.w,old11
  81.     move.b    $fffffa1b.w,old1b
  82.     and.b    #$df,$fffa09    ;disable Timer C
  83.     and.b    #$fe,$fffa07    ;disable Timer B
  84.     move.l    #newtb,$120.w
  85.     move.l    #new4,$70.w
  86.     or.b    #1,$fffffa07.w    ;Timer B erlauben
  87.     or.b    #1,$fffffa13.w
  88.     rts
  89.  
  90. hbloff:
  91.     move.w    sr,-(sp)
  92.     move.w    #$2700,sr
  93.     move.b    old07(pc),$fffffa07.w    ;restore all registers
  94.     move.b    old09(pc),$fffffa09.w
  95.     move.b    old0f(pc),$fffffa0f.w
  96.     move.b    old11(pc),$fffffa11.w
  97.     move.b    old1b(pc),$fffffa1b.w
  98.     move.l    oldtb,$120.w             ;restore vectors
  99.     move.l    old4,$70.w
  100.     move.w    (sp)+,sr
  101.     rts
  102.  
  103. old4:  dc.l 0
  104. oldtb: dc.l 0
  105. old07: dc.b 0
  106. old09: dc.b 0
  107. old0f: dc.b 0
  108. old11: dc.b 0
  109. old1b: dc.b 0
  110. even
  111.  
  112. new4:
  113.     clr.b    $fffffa1b.w
  114.     move.b    #199,$fffffa21.w
  115.     move.b    #8,$fffffa1b.w
  116. new4b:
  117.     jmp    $000000
  118.  
  119. newtb:
  120.     clr.b    $fffffa1b.w    ;timer stop
  121.     movem.l    d0-d1/a0-a1,-(sp)
  122.     move.w    #$fa21,a1
  123.     move.b    #47,(a1)
  124.     move.b    #8,$fffffa1b.w
  125.  
  126.     move.b    (a1),d0
  127. wait:                ;auf Ende der letzten Zeile warten
  128.     cmp.b    (a1),d0
  129.     beq    wait
  130.                 ;jetzt sind wir rechts im Rand
  131.     clr.b    $ffff820a.w    ;60 Hz
  132.  
  133.     moveq    #3,d0
  134. nopi2:                ;ein wenig warten
  135.     nop
  136.     dbf    d0,nopi2
  137.                 ;jetzt sind wir im linken Rand
  138.     move.b    #2,$ffff820a.w    ;50 Hz
  139.     move.w    #$777,$ff8240    ;Markierung
  140.  
  141.     movem.l    (sp)+,d0-d1/a0-a1
  142.     move.l    #newtb2,$120.w
  143.     bclr    #0,$fffffa0f.w    ;end of interrupt
  144.     rte
  145.  
  146. newtb2:
  147.     clr.b    $fffffa1b.w    ;timer stop
  148.     movem.l    d0-d1/a0-a1,-(sp)
  149.     move.w    #$fa21,a1
  150.     move.b    #200,(a1)    ;dummy wert
  151.     move.b    #8,$fffffa1b.w
  152.     move.l    #newtb,$120.w
  153.     move.l    old4(pc),$70.w    ;level 4 wird nicht mehr benötigt
  154.  
  155.     move.b    (a1),d0
  156. wait2:                ;auf Ende der Zeile warten
  157.     cmp.b    (a1),d0
  158.     beq    wait2
  159.  
  160.     moveq    #35,d0
  161. scandelay:
  162.     blk.w    125,$4e71
  163.     dbf    d0,scandelay
  164.  
  165.     moveq    #29,d0
  166. wait3:
  167.     nop
  168.     dbf    d0,wait3
  169.                 ;oberer Rand: 1. Versuch
  170.     clr.b    $ffff820a.w    ;60 Hz
  171.     moveq    #3,d0
  172. nopi3:                ;ein wenig warten
  173.     nop
  174.     dbf    d0,nopi3
  175.                 ;jetzt sind wir im linken Rand
  176.     move.b    #2,$ffff820a.w    ;50 Hz
  177.     move.w    #$700,$ff8240    ;Markierung
  178.  
  179.     moveq    #14,d0
  180. scandelay2:
  181.     blk.w    125,$4e71
  182.     dbf    d0,scandelay2
  183.  
  184.     moveq    #23,d0
  185. wait4:
  186.     nop
  187.     dbf    d0,wait4
  188.                 ;Oberer Rand: 2. Versuch
  189.     clr.b    $ffff820a.w    ;60 Hz
  190.     moveq    #3,d0
  191. nopi4:                ;ein wenig warten
  192.     nop
  193.     dbf    d0,nopi4
  194.                 ;jetzt sind wir im linken Rand
  195.     move.b    #2,$ffff820a.w    ;50 Hz
  196.     move.w    #$070,$ff8240    ;Markierung
  197.  
  198.     clr.b    $fffffa1b.w    ;timer stop
  199.     move.b    #199+13,$fffffa21.w
  200.     move.b    #8,$fffffa1b.w
  201.  
  202.     movem.l    (sp)+,d0-d1/a0-a1
  203.     bclr    #0,$fffffa0f.w    ;end of interrupt
  204.     rte
  205.  
  206. ;-----------------------------
  207. prepare:
  208.     move.w    #0,-(sp)    ;set low res
  209.     move.l    screen(pc),-(sp)
  210.     move.l    screen(pc),-(sp)
  211.     move.w    #5,-(sp)
  212.     trap    #14
  213.     add.l    #12,sp
  214.  
  215.     movem.l    graphic(pc),d6-d7
  216.     move.l    screen(pc),a0
  217.     move.w    #300-1,d1    ;300 zeilen ausfuellen
  218.  
  219. alles:
  220.     moveq    #20-1,d0    ;20*16 pixel = eine zeile
  221. zeile1:
  222.     move.l    d6,(a0)+
  223.     move.l    d7,(a0)+
  224.     dbf    d0,zeile1
  225.     dbf    d1,alles
  226.  
  227.     movem.l pal1(pc),d0-d3
  228.     movem.l    d0-d3,$ffff8240.w
  229.     rts
  230.  
  231. graphic:
  232. dc.w    $55AA,$33CC,$0FF0,$0000
  233.  
  234. pal1:
  235. dc.w    $000,$111,$222,$333,$444,$555,$666,$777
  236. ə