home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 4: Demo 1 / almathera_demo1.bin / sourcecode / dexion / textwriter.s < prev    next >
Text File  |  1995-03-17  |  9KB  |  507 lines

  1.  
  2. scr=$7a000
  3. struc=$7d000
  4. rastport=struc+100
  5.  
  6. setupsystem:
  7.  
  8. bsr getgfx
  9. bsr cleanitdown
  10.  
  11.  
  12. move.w #8000-1 ,d0
  13. move.l #scr ,a0
  14. slet: move.b #0 ,(a0)+
  15. dbra d0 ,slet
  16.  
  17. move.l #scr ,a0
  18. move.l a0 ,struc+8
  19. move.l #struc ,a0
  20. moveq #1 ,d0
  21. move.l #320 ,d1
  22. move.l #200 ,d2
  23. move.l gfxbase ,a6
  24. jsr -390(a6)
  25. move.l #rastport ,a1
  26. jsr -198(a6)
  27. move.l #struc,rastport+4
  28.  
  29. move.l #copper0,newcop
  30. bsr changecop
  31.  
  32. ;--DEMO
  33.  
  34. move=-240
  35. draw=-246
  36. setapen=-342
  37.  
  38. move.l #rastport,a1
  39.  
  40. ;/////// my demo!!! ///////
  41. demo:
  42. move.l    #end,d3
  43. move.l    #text,d2
  44. sub.l    #1,d3
  45. move.l    d2,textpos
  46.  
  47. oloop:
  48. btst    #6,$bfe001
  49. bne    cnton
  50. rts
  51. cnton:
  52. move.l    #6,d2
  53. move.l    #charset,a2
  54. move.l    textpos,a4
  55. clr.l    d0
  56. move.b    (a4),d0
  57. ;--SPECIAL FUNCTIONS--
  58. cmp.b    #'z',d0
  59. beq    changesspeed
  60. cmp.b    #'r',d0
  61. beq    scrollonoff
  62. cmp.b    #'h',d0
  63. beq    horizscroll
  64. cmp.b    #'a',d0
  65. beq    changexsize
  66. cmp.b    #'b',d0
  67. beq    changeysize
  68. cmp.b    #'n',d0
  69. beq    newline
  70. cmp.b    #' ',d0
  71. beq    space
  72. cmp.b    #'l',d0
  73. beq    scroll
  74. cmp.b    #'x',d0
  75. beq    changex
  76. cmp.b    #'y',d0
  77. beq    changey
  78. cmp.b    #'s',d0
  79. beq    changespeed
  80. cmp.b    #'p',d0
  81. beq    pause
  82.  
  83. cmpi    #0,speed
  84. beq    nopause
  85. clr.l    d1
  86. move    speed,d1
  87. mulu    #5,d1
  88. syncloop:
  89. cmpi.b    #255,$dff006
  90. bne    syncloop
  91. dbra    d1,syncloop
  92. ;jsr    updatecop
  93. nopause:
  94.  
  95. sub    #33,d0
  96. mulu    #28,d0
  97. add    d0,a2
  98. add.l    #1,textpos
  99.  
  100. iloop:
  101. clr.l    d0
  102. clr.l    d1
  103. move.b    (a2)+,d0
  104. muls    xsz,d0
  105. divs    #3,d0
  106. add.w    x,d0
  107. cmp.w    #256,d0
  108. blt    b1
  109. subi.l    #2,textpos
  110. jmp    newline
  111. b1:
  112. move.b    (a2)+,d1
  113. muls    ysz,d1
  114. divs    #3,d1
  115. add.w    y,d1
  116. jsr    move(a6)
  117. move.b    (a2)+,d0
  118. muls    xsz,d0
  119. divs    #3,d0
  120. add.w    x,d0
  121. cmpi.w    #256,d0
  122. blt    b2
  123. subi.l    #2,textpos
  124. jmp    newline
  125. b2:
  126. move.b    (a2)+,d1
  127. muls    ysz,d1
  128. divs    #3,d1
  129. add    y,d1
  130. jsr    draw(a6)
  131. dbra    d2,iloop
  132.  
  133. canc:
  134. cmpi    #'SS',scrollf
  135. bne    cnyt
  136. jsr    onehoriz
  137. ;rts
  138. jmp    cancel
  139.  
  140. cnyt:
  141. clr.l    d0
  142. move.w    xsz,d0
  143. add    #4,x
  144. add    d0,x
  145.  
  146. cancel:
  147. cmp.l    textpos,d3
  148. bge        oloop
  149. rts
  150.  
  151. cls:
  152. move.l    #7999,d0
  153. move.l    #scr,a0
  154. cls1:
  155. move.b    #0,(a0)+
  156. dbra    d0,cls1
  157. rts
  158.  
  159. ;/////// my demo's over. //
  160.  
  161.  
  162. copper0:dc.w    $0100,$1200
  163.  
  164.     dc.w    $008e,$2c81
  165.     dc.w    $0090,$f4c1
  166.     dc.w     $0092,$38
  167.     dc.w    $0094,$d0
  168.  
  169.     dc.w    $0108,$0000
  170.     dc.w    $010a,$0000
  171.  
  172.     dc.w    $00e0,$0007
  173.     dc.w    $00e2,$a000
  174.  
  175.     dc.w    $0180,$a00
  176.     dc.w    $0182,$f00
  177. one:    dc.w    $2c01,$ff00
  178.     dc.w    $0180,$aaa
  179.     dc.w    $0182,$fff
  180. two:    dc.w    $5f01,$ff00
  181.     dc.w    $180,$00a
  182.     dc.w    $182,$00f
  183. three:    dc.w    $6001,$ff00
  184.     dc.w    $180,$aaa
  185.     dc.w    $182,$fff
  186. four:    dc.w    $6101,$ff00
  187.     dc.w    $180,$a00
  188.     dc.w    $182,$f00
  189.  
  190. dc.w $ffff,$fffe
  191.  
  192. ;*** gfx ***
  193. gfxbase:    dc.l    0
  194. gfxname:    dc.b    'graphics.library',0,0
  195.  
  196. getgfx:
  197.     move.l    4    ,a6
  198.     move.l    #gfxname,a1
  199.     jsr    -408(a6)
  200.     move.l    d0    ,gfxbase
  201. rts
  202.  
  203. ;*** change copper list ***
  204.  
  205. newcop: dc.l 0
  206. ;***
  207. changecop:
  208.     move.l    gfxbase    ,a0
  209.     move.l    newcop    ,50(a0)
  210. rts
  211.  
  212. ;*********
  213.  
  214. forbid =-132
  215. oldcopper:    dc.l 0
  216.  
  217. cleanitdown:
  218. move.l 4,a6
  219. jsr    -132(a6)
  220. rts
  221.  
  222. charset:
  223. dc.b    1,0,1,2,1,3,1,3,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0;!
  224. dc.b    1,0,1,1,2,0,2,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0;"
  225. dc.b    1,0,1,3,2,0,2,3,0,1,3,1,0,2,3,2,1,0,1,0,1,0,1,0,1,0,1,0;#
  226. dc.b    0,0,3,0,0,0,0,2,1,0,1,3,0,2,3,2,3,2,3,3,0,3,3,3,2,0,2,3;$
  227. dc.b    0,3,3,0,0,0,0,0,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;%
  228. dc.b    0,0,0,3,0,0,2,3,2,0,2,3,3,0,3,1,0,0,0,0,0,0,0,0,0,0,0,0;&
  229. dc.b    1,0,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0;'
  230. dc.b    1,0,0,1,0,1,0,2,0,2,1,3,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0;(
  231. dc.b    2,0,3,1,3,1,3,2,3,2,2,3,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0;)
  232. dc.b    1,0,3,0,0,2,1,0,1,0,1,3,0,2,3,2,0,2,0,3,1,0,1,0,1,0,1,0;AF
  233. dc.b    0,0,2,0,0,0,0,1,1,0,1,1,0,1,2,1,1,1,1,2,2,1,2,2,0,2,2,2;SS
  234. dc.b    1,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2;,
  235. dc.b    0,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2;-
  236. dc.b    1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3;.
  237. dc.b    0,3,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0;/
  238. dc.b    0,0,3,0,3,0,3,3,0,3,3,3,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0;0
  239. dc.b    1,0,1,3,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0;1
  240. dc.b    0,0,3,0,3,0,3,2,0,2,3,2,0,2,0,3,0,3,3,3,0,0,0,0,0,0,0,0;2
  241. dc.b    0,0,3,0,3,0,3,3,0,3,3,3,1,2,3,2,0,0,0,0,0,0,0,0,0,0,0,0;3
  242. dc.b    0,0,0,2,0,2,3,2,3,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;4
  243. dc.b    0,0,3,0,0,0,0,2,0,2,3,2,3,2,3,3,0,3,3,3,0,0,0,0,0,0,0,0;5
  244. dc.b    0,0,3,0,0,0,0,3,0,2,3,2,3,2,3,3,0,3,3,3,0,0,0,0,0,0,0,0;6
  245. dc.b    0,0,3,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;7
  246. dc.b    0,0,3,0,3,0,3,3,0,0,0,3,0,2,3,2,0,3,3,3,0,0,0,0,0,0,0,0;8
  247. dc.b    0,0,3,0,0,0,0,2,0,2,3,2,3,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0;9
  248. dc.b    1,0,1,0,1,3,1,3,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0;:
  249. dc.b    0,1,1,3,1,3,3,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1;Amiga
  250. dc.b    3,0,0,2,0,2,3,3,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0;>
  251. dc.b    0,1,3,1,0,2,3,2,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1;=
  252. dc.b    0,0,3,2,0,3,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;>
  253. dc.b    0,0,3,0,3,0,3,1,0,1,3,1,0,1,0,2,0,2,3,2,1,3,2,3,0,0,0,0;?
  254. dc.b    0,0,3,3,1,0,3,2,0,1,2,3,0,3,3,0,0,2,2,0,1,3,3,1,0,0,0,0;XX
  255. dc.b    0,0,3,0,0,0,0,3,3,0,3,3,0,2,3,2,0,0,0,0,0,0,0,0,0,0,0,0;A
  256. dc.b    0,0,0,3,0,0,3,0,3,0,3,1,3,1,2,1,2,1,3,2,3,2,3,3,0,3,3,3;B
  257. dc.b    0,0,3,0,0,0,0,3,0,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;C
  258. dc.b    0,0,2,0,2,0,3,1,3,1,3,2,3,2,2,3,0,3,2,3,0,0,0,3,0,0,0,0;D
  259. dc.b    0,0,3,0,0,0,0,3,0,2,2,2,0,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0;E
  260. dc.b    0,0,3,0,0,0,0,3,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;F
  261. dc.b    0,0,3,0,0,0,0,3,0,3,3,3,3,2,1,2,3,2,3,3,0,0,0,0,0,0,0,0;G
  262. dc.b    0,0,0,3,0,2,3,2,3,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;H
  263. dc.b    1,0,1,3,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0;I
  264. dc.b    3,0,3,3,3,3,0,3,0,3,0,2,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0;J
  265. dc.b    0,0,0,3,0,2,3,0,0,2,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;K
  266. dc.b    0,0,0,3,0,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;L
  267. dc.b    0,0,0,3,0,0,1,1,1,1,3,0,3,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0;M
  268. dc.b    0,0,0,3,0,0,3,3,3,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;N
  269. dc.b    0,0,3,0,3,0,3,3,3,3,0,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0;O
  270. dc.b    0,0,3,0,3,0,3,2,0,0,0,3,0,2,3,2,0,0,0,0,0,0,0,0,0,0,0,0;P
  271. dc.b    0,0,3,0,3,0,3,3,0,0,0,3,0,3,3,3,2,2,3,3,0,0,0,0,0,0,0,0;Q
  272. dc.b    0,0,3,0,0,0,0,3,0,2,3,2,3,0,3,2,0,2,3,3,0,0,0,0,0,0,0,0;R
  273. dc.b    0,0,3,0,0,0,0,2,0,2,3,2,3,2,3,3,0,3,3,3,0,0,0,0,0,0,0,0;S
  274. dc.b    0,0,3,0,1,0,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;T
  275. dc.b    0,0,0,3,0,3,3,3,3,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;U
  276. dc.b    0,0,1,3,1,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;V
  277. dc.b    0,0,0,3,0,3,1,2,1,2,3,3,3,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0;W
  278. dc.b    0,0,3,3,3,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;X
  279. dc.b    0,0,1,2,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;Y
  280. dc.b    0,0,3,0,0,3,3,0,0,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;Z
  281. dc.b    0,0,3,0,0,0,0,3,0,2,3,2,1,0,1,3,1,3,3,3,0,0,0,0,0,0,0,0;Æ
  282. dc.b    0,0,3,0,0,0,0,3,0,3,3,0,3,0,3,3,0,3,3,3,0,0,0,0,0,0,0,0;Ø
  283. dc.b    0,1,3,1,2,0,1,0,0,2,3,2,3,1,3,3,0,1,0,3,1,0,1,0,1,0,1,0;Å
  284.  
  285. xsz:    dc.w    5
  286.  
  287. ysz:    dc.w    9
  288.  
  289. x:    dc.w    0
  290.  
  291. y:    dc.w    0
  292.  
  293. textpos:    dc.l    0
  294.  
  295. speed:    dc.w    0
  296.  
  297. scrollf:    dc.w    'AF'
  298.  
  299. scs:    dc.w    6
  300.  
  301. even
  302.  
  303. changexsize:
  304. clr.l    d0
  305. addi    #1,a4
  306. move.b    (a4),d0
  307. move.w    d0,xsz
  308. addi.l    #2,textpos
  309. jmp    cancel
  310. changeysize:
  311. clr.l    d0
  312. addi    #1,a4
  313. move.b    (a4),d0
  314. move.w    d0,ysz
  315. addi.l    #2,textpos
  316. jmp    cancel
  317.  
  318. newline:
  319. clr.l    d4
  320. move.w    ysz,d4
  321. add    #4,d4
  322. addi.w    d4,y
  323. move.w    #0,x
  324. addi.l    #1,textpos
  325. jmp    cancel
  326.  
  327. space:
  328. addi.l    #1,textpos
  329. jmp    canc
  330.  
  331. scroll:
  332. move.w    #0,x
  333. add.l    #1,textpos
  334. clr.l    d6
  335. move.w    ysz,d6
  336. add    #3,d6
  337. move.l    #1989,d0
  338.  
  339. oloopsc:
  340. move.l    #scr,a4
  341. move.l    a4,a5
  342. add.l    #40,a5
  343. move.l    d0,d5
  344.  
  345. iloopsc:
  346. move.l    (a5),(a4)
  347. addi.l    #4,a5
  348. addi.l    #4,a4
  349. dbra    d5,iloopsc
  350.  
  351. lkj:
  352. cmpi.b    #255,$dff006
  353. bne    lkj
  354.  
  355. dbra    d6,oloopsc
  356. jmp    cancel
  357.  
  358. scrollonoff:
  359. addi.l    #1,textpos
  360. cmpi    #'SS',scrollf
  361. bne    notss
  362. move    #'AF',scrollf
  363. jmp    cancel
  364. notss:
  365. move    #'SS',scrollf
  366. jmp    cancel
  367.  
  368. changex:
  369. addi.l    #1,textpos
  370. move.l    textpos,a5
  371. clr.l    d0
  372. move.b    (a5),d0
  373. move.w    d0,x
  374. addi.l    #1,textpos
  375. jmp    cancel
  376.  
  377. changey:
  378. addi.l    #1,textpos
  379. move.l    textpos,a5
  380. clr.l    d0
  381. move.b    (a5),d0
  382. move.w    d0,y
  383. addi.l    #1,textpos
  384. jmp    cancel
  385.  
  386. changespeed:
  387. addi.l    #1,textpos
  388. clr.l    d0
  389. move.l    textpos,a5
  390. move.b    (a5),d0
  391. move.w    d0,speed
  392. addi.l    #1,textpos
  393. jmp    cancel
  394.  
  395. pause:
  396. addi.l    #1,textpos
  397. move.l    textpos,a0
  398. clr.l    d0
  399. move.b    (a0),d0
  400. mulu    #5,d0
  401. pauseloop:
  402. cmpi.b    #255,$dff006
  403. bne    pauseloop
  404. dbra    d0,pauseloop
  405. addi.l    #1,textpos
  406. jmp    cancel
  407.  
  408. horizscroll:
  409. addi.l    #1,textpos
  410. clr.l    d0
  411. clr.l    d1
  412. move    y,d0
  413. mulu    #40,d0
  414. addi.l    #scr,d0
  415. move.l    #15,d2
  416. hsoloop:
  417. cmpi.b    #255,$dff006
  418. bne    hsoloop
  419. move.l    d0,a0
  420. move    ysz,d1
  421. mulu    #40,d1
  422. hsiloop:
  423. lsl.b    #1,(a0)+
  424. dbra    d1,hsiloop
  425. dbra    d2,hsoloop
  426. jmp    cancel
  427.  
  428. onehoriz:
  429. clr.l    d0
  430. clr.l    d1
  431. clr.l    d6
  432. move    scs,d6
  433. move    y,d0
  434. mulu    #40,d0
  435. addi.l    #scr,d0
  436. move    xsz,d1
  437. addi    #3,d1
  438. clr.l    d2
  439. move    ysz,d2
  440. mulu    #40,d2
  441. add.l    d2,d0
  442. addi.l    #40,d0
  443. clr    d2
  444.  
  445. hs1loloop:    
  446. btst    d6,$dff006
  447. bne    hs1loloop
  448. oh:
  449. btst    d6,$dff006
  450. beq    oh
  451. move.l    d0,a0
  452. move    ysz,d2
  453. move.l    d2,d5
  454. mulu    #20,d2
  455. addi    #20,d2
  456. move.l    a0,a5
  457. sureloop:
  458. bclr    #7,(a5)
  459. subi.l    #40,a5
  460. dbra    d5,sureloop
  461. hs1liloop:
  462. roxl.w     #1,(a0)
  463. ;btst    #7,(a0)
  464. ;beq    hs1c
  465. ;bset    #0,-1(a0)
  466. ;hs1c:
  467. subi.l    #2,a0
  468. dbra    d2,hs1liloop
  469. dbra    d1,hs1loloop
  470. rts
  471.  
  472. changesspeed:
  473. addi.l    #1,textpos
  474. clr.l    d0
  475. move.l    textpos,a0
  476. move.b    (a0),d0
  477. move.w    d0,scs
  478. addi.l    #1,textpos
  479. jmp    cancel
  480.  
  481. updatecop:
  482. ;clr.l    d0
  483. clr.l    d1
  484. clr.l    d3
  485. move    y,d3
  486. move    ysz,d1
  487. addi    #$2c,d3
  488. divu    #3,d1
  489. move.b    d3,one
  490. addi    d1,d3
  491. move.b    d3,two
  492. addi    d1,d3
  493. move.b    d3,three
  494. addi    d1,d3
  495. move.b    d3,four
  496. jsr    newcop
  497. rts
  498.  
  499. text:
  500. dc.b    "s",0
  501. dc.b    "z",6,"b",32,"a",16,"nnn           r"
  502. dc.b    "SWEINSTEIN IS PROUD TO PRESENT THE COOL"
  503. dc.b    " DEMO OF HIS. IT CAN DO A LOT. "
  504. DC.B    "rn          rJUST LOOK AT THIS! HORIZONTAL ANDrn"
  505. dc.b    " VERTICALl  SOFTlSCROLLING!"
  506. end:
  507.