home *** CD-ROM | disk | FTP | other *** search
/ No Fragments Archive 10: Diskmags / nf_archive_10.iso / MAGS / STMAGAZIN / STMAGAZIN.MSA / HEXER_DE.MOS / DEMO_1 / TRANS1.S < prev   
Text File  |  1986-02-06  |  5KB  |  214 lines

  1. ;dieses programm laeuft nur in farbe
  2. ;source ab K-SEKA 1.5
  3. ;listing von Gunter (oder 6719)
  4.  
  5. x:
  6. clr.l    -(sp)
  7. move.w    #$20,-(sp)
  8. trap    #1
  9. addq.l    #6,sp
  10. move.l    d0,ssp
  11.  
  12. linea    #$a            ;maus aus
  13.  
  14. move.w    #4,-(sp)
  15. trap    #14
  16. addq.l    #2,sp
  17. move.w    d0,oldres
  18.  
  19. clr.w    -(sp)            ;low-res
  20. move.l    #-1,-(sp)
  21. move.l    #-1,-(sp)
  22. move.w    #5,-(sp)
  23. trap    #14
  24. lea    12(sp),sp
  25.  
  26. move.l    $44e.w,screen        ;videoadresse holen
  27. movem.l    $ffff8240.w,d0-d7    ;alte palette
  28. movem.l d0-d7,oldpal        ;merken
  29.  
  30. bsr    fillscreen        ;hintergrundmuster aufbauen
  31. movem.l    pal1(pc),d0-d7        ;1. palette
  32. movem.l    d0-d7,$ffff8240.w    ;setzen
  33.  
  34. move.l    #dtab,dpos        ;etwas initialisieren
  35. move.l    screen(pc),clrzeiger
  36.  
  37. move.l    #dobbs,$4d2.w        ;bewegt den transparentblock
  38. bsr    keys
  39. clr.l    $4d2.w
  40.  
  41. move.w    oldres(pc),-(sp)
  42. move.l    #-1,-(sp)
  43. move.l    #-1,-(sp)
  44. move.w    #5,-(sp)
  45. trap    #14
  46. lea    12(sp),sp
  47.  
  48. movem.l    oldpal(pc),d0-d7    ;alte palette
  49. movem.l    d0-d7,$ffff8240.w    ;wieder setzen
  50. linea    #$9            ;maus an
  51.  
  52. move.l    ssp(pc),-(sp)
  53. move.w    #$20,-(sp)
  54. trap    #1
  55. addq.l    #6,sp
  56.  
  57. ;illegal
  58. clr.w    -(sp)            ;oder terminate
  59. trap    #1
  60.  
  61. ;------------------------------------------------
  62. fillscreen:
  63. movem.l    graphic(pc),d6-d7    ;dies sind daten fuer 16 pixel
  64.                 ;daraus wird der hintergrund aufgebaut
  65. move.l    screen(pc),a0
  66. moveq    #100-1,d1        ;100*2 zeilen ausfuellen
  67.  
  68. alles:
  69. moveq    #20-1,d0        ;20*16 pixel = eine zeile
  70. zeile1:
  71. move.l    d6,(a0)+
  72. move.l    d7,(a0)+
  73. dbf    d0,zeile1
  74.  
  75. moveq    #10-1,d0        ;nur noch jede zweite spalte fuellen
  76. zeile2:
  77. move.l    d6,(a0)+
  78. move.l    d7,(a0)+
  79. addq.l    #8,a0
  80. dbf    d0,zeile2
  81.  
  82. dbf    d1,alles
  83. rts
  84.  
  85. graphic:
  86. dc.w    $55AA,$33CC,$0FF0,$0000 ;<--- die letzte plane ist leer !!
  87.  
  88. ;------------------------------------------------
  89. dobbs:
  90. move.l    clrzeiger(pc),a1    ;vorherige position
  91. moveq    #0,d7            ;loeschen
  92. bsr    block
  93.  
  94. clr.l    d2
  95. move.l    dpos(pc),a2        ;pointer auf tabelle
  96. move.w    (a2)+,d2        ;wert holen
  97. tst.w    (a2)
  98. bpl    w_dobbs            ;negativ ist ende der tabelle
  99. lea    dtab(pc),a2        ;von vorne
  100.  
  101. w_dobbs:
  102. move.l    a2,dpos
  103. mulu    #160,d2            ;ich weiß, daß es schneller geht
  104.             ;aber hier kommt es wirklich nicht darauf an
  105.  
  106. move.l    screen(pc),a1
  107. add.l    d2,a1
  108. add.w    #48,a1            ;ab pixels 96 beginnt der block
  109. move.l    a1,clrzeiger        ;wert merken fuer nächsten vbl
  110. moveq    #-1,d7            ;diesmal ausfuellen
  111. bsr    block
  112. rts
  113.  
  114. ;---------------------
  115. block:
  116. moveq    #52,d0            ;anzahl der zeilen (aus historischen 
  117. move.l    #160,d1            ;   gruenden..!!)
  118. fill_zeilen:
  119. move.w    d7,6(a1)        ;es wird jeweils nur die letzte
  120. move.w    d7,14(a1)        ;plane geaendert
  121. move.w    d7,22(a1)
  122. move.w    d7,30(a1)
  123. move.w    d7,38(a1)
  124. move.w    d7,46(a1)
  125. move.w    d7,54(a1)
  126. move.w    d7,62(a1)        ;(auf einer breite von 8*16 pixels)
  127. add.l    d1,a1
  128. dbf    d0,fill_zeilen
  129. rts
  130.  
  131. ;------------------------------------------------
  132. keys:
  133. move.w    #7,-(sp)        ;konin
  134. trap    #1
  135. addq.l    #2,sp
  136.  
  137. cmp.b    #"0",d0            ;zischen 0 und 4 ?
  138. blt    keys
  139. cmp.b    #"4",d0
  140. bgt    keys
  141.  
  142. cmp.b    #"0",d0
  143. beq    exit
  144. ext.w    d0
  145. sub.w    #$31,d0            ;"1" ist nun 0
  146. add.w    d0,d0
  147. add.w    d0,d0
  148.  
  149. move.l    colors(pc,d0.w),a0    ;zeiger auf pal1-4 holen
  150. movem.l    (a0),d0-d7
  151. movem.l    d0-d7,$ffff8240.w    ;und die palette setzen
  152. bra    keys
  153.  
  154. exit:
  155. rts
  156.  
  157. ;------------------------------------------------
  158. colors: dc.l pal1,pal2,pal3,pal4
  159.  
  160. pal1:
  161. dc.w    $000,$111,$222,$333,$444,$555,$666,$777
  162. dc.w    $772,$772,$772,$772,$772,$772,$772,$772
  163. pal2:
  164. dc.w    $000,$111,$222,$333,$444,$555,$666,$777
  165. dc.w    $772,$111,$222,$333,$444,$555,$666,$777
  166. pal3:
  167. dc.w    $000,$111,$222,$333,$444,$555,$666,$777
  168. dc.w    $772,$772,$772,$772,$444,$555,$666,$777
  169. pal4:
  170. dc.w    $000,$111,$222,$333,$444,$555,$666,$777
  171. dc.w    $400,$600,$720,$730,$740,$750,$760,$772
  172.  
  173. screen:        dc.l 0
  174. ssp:        dc.l 0
  175. oldres:        dc.w 0
  176. oldpal:        blk.w 16,0
  177.  
  178. clrzeiger:    dc.l 0
  179. dpos:        dc.l 0
  180.  
  181. dtab:
  182.  dc.w 46,51,56,61,66    ;wer keine lust hat, die ganze tabelle abzu-
  183.  dc.w 72,78,84,78,72    ;tippen, kann auch irgendwo aufhören
  184.  dc.w 66,61,56,51,46    ;dann aber die -1 am ende nicht vergessen !!!
  185.  dc.w 41,37,33,30,26
  186.  dc.w 23,20,17,15,13
  187.  dc.w 11,09,08,07,06
  188.  dc.w 05,05,05,05,05
  189.  dc.w 06,07,08,09,11
  190.  dc.w 13,15,17,20,23
  191.  dc.w 26,30,33,37,41
  192.  dc.w 46,51,56,61,66
  193.  dc.w 72,78,84,78,72
  194.  dc.w 66,61,56,51,46
  195.  dc.w 42,38,34,31,27
  196.  dc.w 24,22,19,17,16
  197.  dc.w 15,15,15,15,16
  198.  dc.w 17,19,22,24,27
  199.  dc.w 30,34,38,41,45
  200.  dc.w 49,53,56,60,63
  201.  dc.w 66,68,71,72,73
  202.  dc.w 74,74,74,74,72
  203.  dc.w 71,69,66,63,60
  204.  dc.w 57,53,50,46,42
  205.  dc.w 38,34,31,28,25
  206.  dc.w 22,20,18,16,15
  207.  dc.w 15,15,15,16,17
  208.  dc.w 19,21,24,27,30
  209.  dc.w 34,37,41
  210.  dc.w -1    ;endekennung, nicht vergessen
  211.  
  212. ;tschueß, bis zum naechsten mal (ich werde dann ueber randaufklapp
  213. ;                 routinen berichten)
  214. ə