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 / RANDU_L2.S < prev    next >
Text File  |  1986-02-06  |  3KB  |  173 lines

  1. ; Listing 2: Entfernung des unteren Randes
  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. hblon:
  73.     move.l    $120.w,oldtb    ;Vektoren retten
  74.     move.l    $70.w,old4
  75.     move.l    $70.w,new4b+2
  76.     move.b    $fffffa07.w,old07
  77.     move.b    $fffffa09.w,old09
  78.     move.b    $fffffa0f.w,old0f
  79.     move.b    $fffffa11.w,old11
  80.     move.b    $fffffa1b.w,old1b
  81.     and.b    #$df,$fffa09    ;disable Timer C
  82.     and.b    #$fe,$fffa07    ;disable Timer B
  83.     move.l    #newtb,$120.w
  84.     move.l    #new4,$70.w
  85.     or.b    #1,$fffffa07.w    ;Timer B erlauben
  86.     or.b    #1,$fffffa13.w
  87.     rts
  88.  
  89. hbloff:
  90.     move.w    sr,-(sp)
  91.     move.w    #$2700,sr
  92.     move.b    old07(pc),$fffffa07.w    ;restore all registers
  93.     move.b    old09(pc),$fffffa09.w
  94.     move.b    old0f(pc),$fffffa0f.w
  95.     move.b    old11(pc),$fffffa11.w
  96.     move.b    old1b(pc),$fffffa1b.w
  97.     move.l    oldtb,$120.w             ;restore vectors
  98.     move.l    old4,$70.w
  99.     move.w    (sp)+,sr
  100.     rts
  101.  
  102. old4:  dc.l 0
  103. oldtb: dc.l 0
  104. old07: dc.b 0
  105. old09: dc.b 0
  106. old0f: dc.b 0
  107. old11: dc.b 0
  108. old1b: dc.b 0
  109. even
  110.  
  111. new4:
  112.     clr.b    $fffffa1b.w
  113.     move.b    #199,$fffffa21.w
  114.     move.b    #8,$fffffa1b.w
  115. new4b:
  116.     jmp    $000000
  117.  
  118. newtb:
  119.     clr.b    $fffffa1b.w    ;timer stop
  120.     movem.l    d0-d1/a0-a1,-(sp)
  121.     move.w    #$fa21,a1
  122.     move.b    #200,(a1)
  123.     move.b    #8,$fffffa1b.w
  124.  
  125.     move.b    (a1),d0
  126. wait:                ;auf Ende der letzten Zeile warten
  127.     cmp.b    (a1),d0
  128.     beq    wait
  129.                 ;jetzt sind wir rechts im Rand
  130.     clr.b    $ffff820a.w    ;60 Hz
  131.  
  132.     moveq    #4,d0
  133. nopi2:                ;ein wenig warten
  134.     nop
  135.     dbf    d0,nopi2
  136.                 ;jetzt sind wir im linken Rand
  137.     move.b    #2,$ffff820a.w    ;50 Hz
  138.  
  139.     movem.l    (sp)+,d0-d1/a0-a1
  140.     bclr    #0,$fffffa0f.w    ;end of interrupt
  141.     rte
  142.  
  143. ;-----------------------------
  144. prepare:
  145.     move.w    #0,-(sp)    ;set low res
  146.     move.l    screen(pc),-(sp)
  147.     move.l    screen(pc),-(sp)
  148.     move.w    #5,-(sp)
  149.     trap    #14
  150.     add.l    #12,sp
  151.  
  152.     movem.l    graphic(pc),d6-d7
  153.     move.l    screen(pc),a0
  154.     move.w    #260-1,d1    ;260 zeilen ausfuellen
  155.  
  156. alles:
  157.     moveq    #20-1,d0    ;20*16 pixel = eine zeile
  158. zeile1:
  159.     move.l    d6,(a0)+
  160.     move.l    d7,(a0)+
  161.     dbf    d0,zeile1
  162.     dbf    d1,alles
  163.  
  164.     movem.l pal1(pc),d0-d3
  165.     movem.l    d0-d3,$ffff8240.w
  166.     rts
  167.  
  168. graphic:
  169. dc.w    $55AA,$33CC,$0FF0,$0000
  170.  
  171. pal1:
  172. dc.w    $000,$111,$222,$333,$444,$555,$666,$777
  173. ə