home *** CD-ROM | disk | FTP | other *** search
/ World of A1200 / World_Of_A1200.iso / programs / graphics / animtools / videotrackerdev / source.lha / source / Scroll.s < prev    next >
Text File  |  1995-02-10  |  57KB  |  2,973 lines

  1. rout            ;when this is off, the routine-file will be
  2.             ;assembled, on=testing
  3.             
  4. ;debug            ;when this is on, colors in the background will
  5.             ;show how much time the routine needs.
  6.  
  7.  
  8. routinemode    equ    $0002    ;the routinemode !
  9.  
  10.  
  11. ; the first part of the source handles the things that are necessary to
  12. ; show the picture/copper and playing of the routine.
  13. ; the part between the "***" lines is the routine-source.
  14. ; at the bottom of the file, there are the necessary incbin-files who
  15. ; are needed to test the routine.
  16. ; these are saved with "save effect" in videotracker. they are raw
  17. ; data files which can be fonts,pictures,landscapes,vectorobjects
  18. ; etcetra.
  19. ; the incbin-files are put in the "variables" table, in the routine-
  20. ; player-handler
  21. ; the place where it's done can be found by searching for "!!!"
  22.  
  23.  
  24.     opt    a+    ;devpac 3 optimize
  25.     opt    o+
  26.  
  27.     ifd    rout
  28.     
  29.     ;videotracker routine-test
  30.  
  31.     incdir    "videotracker:include/"
  32.     include    "exec/types.i"
  33.     include    "graphics/gfxbase.i"
  34.     include    "lvo/graphics_lib.i"
  35.     incdir    'videotracker:effect/'
  36.  
  37. vew_wid    equ    44
  38. vew_hgt    equ    290
  39. win_hgt    equ    117
  40. win_str    equ    $1a
  41.  
  42.     SECTION    1,CODE_C
  43. tus
  44.  
  45.     lea    var,a0            ;communication-table
  46.     move.l    #rotincfon,var_fon1(a0)        ;incbinfile !!!
  47.     move.l    #rotincfon,4+var_fon1(a0)    ;incbinfile !!!
  48.     move.l    #rotinctxt,var_txt1(a0)    ;incbinfile !!!
  49.  
  50.     move.l    ($4).w,a6
  51.     sub.l    a1,a1
  52.     jsr    -$126(a6)        ;findtask
  53.     move.l    d0,curtsk
  54.     move.l    d0,a0
  55.     move.l    $b8(a0),tskpri
  56.  
  57.     lea    dosnam,a1        ;doslib openen
  58.     moveq.l    #0,d0
  59.     move.l    (4).w,a6
  60.     jsr    -408(a6)        ;openlib
  61.     move.l    d0,doslib
  62.  
  63.     bsr.s    label5            ;videotracker opstarten
  64.     
  65.     move.l    curtsk,a0
  66.     move.l    tskpri,$b8(a0)
  67.     move.l    ($4).w,a6
  68.     jsr    -$84(a6)        ;forbid
  69.  
  70.     move.l    doslib,a1
  71.     move.l    (4).w,a6
  72.     jsr    -414(a6)        ;closelib
  73.  
  74.     moveq.l    #0,d0
  75.     rts
  76.     
  77. label5
  78.     move.l    (4).w,a6        ;workbench gedoe
  79.     move.b    530(a6),ntscmode    ;50/60 hertz halen
  80.  
  81.     cmp.b    #50,ntscmode        ;ntsc ?
  82.     beq.s    str.ntsc
  83.     move.l    #vew_hgt-56,hogscr    ;set NTSC screen hight
  84. str.ntsc
  85.  
  86.     move.l    (4).w,a6        ;68030 cache off 
  87.     jsr    -120(a6)
  88.  
  89.     btst.b    #1,297(a6)
  90.     beq.s    str.nfc
  91.     lea.l    str.ft,a5
  92.     jsr    -30(a6)
  93. str.nfc
  94.     jsr    -126(a6)
  95.     bra.s    str.fc
  96.     
  97. str.ft
  98.     dc.w    $4e7a,2
  99.     bclr    #0,d0
  100.     bset    #13,d0
  101.     dc.w    $4e7b,2
  102.     rte
  103. str.fc
  104.  
  105.     lea    cprjmp,a2        ;copjmp zetten !
  106.     move.l    #cprbck-8,d0
  107.     move.w    d0,6(a2)
  108.     swap    d0
  109.     move.w    d0,2(a2)
  110.  
  111.     lea    cprbck-8,a2        ;copstr zetten !
  112.     move.l    #cpr,d0
  113.     move.w    d0,6(a2)
  114.     swap    d0
  115.     move.w    d0,2(a2)
  116.  
  117.     bsr    cprsprrem        ;sprites legen
  118.  
  119.     lea    gfxnam,a1        ;graphics lib openen
  120.     move.l    (4).w,a6
  121.     jsr    -408(a6)        ;openlib
  122.     move.l    d0,a6
  123.     move.l    d0,gfxlib
  124.     move.l    38(a6),oldcprlist
  125.  
  126.     bset    #1,$bfe001
  127.     bsr    copbuf            ;copper vullen
  128.  
  129.     bsr    sysoff
  130.  
  131. gadrun
  132.     btst    #6,($bfe001).l
  133.     bne    gadrun
  134.  
  135. scrend
  136. scrend.play
  137.     bsr    syson
  138.  
  139.     move.l    gfxlib,a1
  140.     move.l    (4).w,a6
  141.     jsr    -414(a6)        ;closelib
  142.  
  143. scrend.qb
  144.     moveq.l    #0,d0    
  145.     rts
  146.     
  147.     ;vertical blank interrupt, no blits.
  148.     ;handles counters,interlace,sprite
  149.     ;level 3
  150.  
  151. intvb
  152.     bra.s    intvb.cnt
  153.     dc.l    'VIDU'
  154.     dc.l    'LOOP'
  155. intvb.cnt
  156.     movem.l    d0-d7/a0-a6,-(sp)
  157.     lea    ($dff000).l,a6
  158.  
  159.     move.w    $01e(a6),d0
  160.     btst    #5,d0            ;vblank ?
  161.     bne.s    intvb.vb
  162.  
  163.     bra.s    intcop.end
  164.  
  165. intvb.vb
  166.     bsr    grap
  167.     bsr    palctr            ;palette zetten
  168.     bsr.s    copbuf            ;copper vullen
  169.     
  170. intvb.end
  171.     move.w    #$0020,$09c(a6)    ;vb bit wissen
  172.     movem.l    (sp)+,d0-d7/a0-a6    ;multitask uit, shit !
  173.     rte
  174.  
  175. intcop.end
  176.     movem.l    (sp)+,d0-d7/a0-a6
  177.     move.l    intvbold,-(sp)
  178.     rts
  179.  
  180.     ;transmission buffer empty routine, BLIT !
  181.     ;handles routines,animations
  182.     
  183. inttbe                    ;tbe interrupt
  184.     movem.l    d0-d7/a0-a6,-(sp)
  185.     lea    ($dff000).l,a6
  186.  
  187.     move.w    $01e(a6),d0
  188.     btst    #0,d0            ;no tbe ?
  189.     beq.s    intdskblk
  190.  
  191.  
  192.     btst    #6,($bfe001).l        ;muis ingedrukt ?
  193.     beq.s    inttbe.cop
  194.     btst    #2,($dff016).l
  195.     beq.s    inttbe.cop
  196.  
  197.     ifd    debug
  198.     move.w    #$700,$dff180
  199.     endc
  200.     
  201.     bsr    rotply            ;routineplayer BLIT !
  202.     bsr.s    copbuf            ;copper vullen
  203.  
  204.     ifd    debug
  205.     move.w    #$070,$dff180
  206.     endc
  207.     
  208. inttbe.cop
  209.  
  210. inttbe.end
  211.     move.w    #$0001,$09c(a6)
  212.     movem.l    (sp)+,d0-d7/a0-a6
  213.     rte
  214.  
  215. intdskblk
  216.     move.w    #$0001,$09c(a6)        ;be sure for no tbe handling
  217.     movem.l    (sp)+,d0-d7/a0-a6
  218.     move.l    inttbeold,-(sp)
  219.     rts
  220.  
  221.  
  222.     ;moves the copperbuffer to the copperlist
  223.     ;sort of double buffering
  224.     
  225. copbuf
  226.     movem.l    d0-d7/a0-a6,-(sp)
  227.  
  228.     lea    ($dff000).l,a6
  229.  
  230. copbuf.novb                ;copperchange overslaan
  231.     moveq.l    #0,d0
  232.     move.b    $005(a6),d0
  233.     lsl.w    #8,d0
  234.     moveq.l    #0,d1
  235.     move.b    $006(a6),d1
  236.     add.w    d1,d0
  237.  
  238.     cmp.w    #$4,d0
  239.     blt    copbuf.novb
  240.  
  241.     cmp.b    #50,ntscmode
  242.     beq.s    copbuf.pal
  243.     cmp.w    #$133-56-8,d0        ;ntsc grens
  244.     bge    copbuf.novb
  245.     bra.s    copbuf.cont
  246. copbuf.pal
  247.     cmp.w    #$133-8,d0        ;pal grens
  248.     bge    copbuf.novb
  249. copbuf.cont
  250.  
  251.     lea    gra.s,a0        ;buffer copieren
  252.     lea    cprbuf,a1
  253.  
  254.     move.w    00*4+2(a0),00*4+2(a1)
  255.     move.w    01*4+2(a0),01*4+2(a1)
  256.     move.w    02*4+2(a0),02*4+2(a1)
  257.     move.w    03*4+2(a0),03*4+2(a1)
  258.     move.w    04*4+2(a0),04*4+2(a1)
  259.     move.w    05*4+2(a0),05*4+2(a1)
  260.     move.w    06*4+2(a0),06*4+2(a1)
  261.     move.w    07*4+2(a0),07*4+2(a1)
  262.     move.w    08*4+2(a0),08*4+2(a1)
  263.     move.w    09*4+2(a0),09*4+2(a1)
  264.  
  265.     move.w    10*4+2(a0),10*4+2(a1)
  266.     move.w    11*4+2(a0),11*4+2(a1)
  267.     move.w    12*4+2(a0),12*4+2(a1)
  268.     move.w    13*4+2(a0),13*4+2(a1)
  269.     move.w    14*4+2(a0),14*4+2(a1)
  270.     move.w    15*4+2(a0),15*4+2(a1)
  271.     move.w    16*4+2(a0),16*4+2(a1)
  272.     move.w    17*4+2(a0),17*4+2(a1)
  273.     move.w    18*4+2(a0),18*4+2(a1)
  274.     move.w    19*4+2(a0),19*4+2(a1)
  275.  
  276.     move.w    20*4+2(a0),20*4+2(a1)
  277.     move.w    21*4+2(a0),21*4+2(a1)
  278.     move.w    22*4+2(a0),22*4+2(a1)
  279.     move.w    23*4+2(a0),23*4+2(a1)
  280.     move.w    24*4+2(a0),24*4+2(a1)
  281.     move.w    25*4+2(a0),25*4+2(a1)
  282.     move.w    26*4+2(a0),26*4+2(a1)
  283.     move.w    27*4+2(a0),27*4+2(a1)
  284.     move.w    28*4+2(a0),28*4+2(a1)
  285.     move.w    29*4+2(a0),29*4+2(a1)
  286.  
  287.     move.w    30*4+2(a0),30*4+2(a1)
  288.     move.w    31*4+2(a0),31*4+2(a1)
  289.     move.w    32*4+2(a0),32*4+2(a1)
  290.     move.w    33*4+2(a0),33*4+2(a1)
  291.     move.w    34*4+2(a0),34*4+2(a1)
  292.     move.w    35*4+2(a0),35*4+2(a1)
  293.     move.w    36*4+2(a0),36*4+2(a1)
  294.     move.w    37*4+2(a0),37*4+2(a1)
  295.     move.w    38*4+2(a0),38*4+2(a1)
  296.     move.w    39*4+2(a0),39*4+2(a1)
  297.  
  298.     move.w    40*4+2(a0),40*4+2(a1)
  299.     move.w    41*4+2(a0),41*4+2(a1)
  300.     move.w    42*4+2(a0),42*4+2(a1)
  301.     move.w    43*4+2(a0),43*4+2(a1)
  302.     move.w    44*4+2(a0),44*4+2(a1)
  303.     move.w    45*4+2(a0),45*4+2(a1)
  304.     move.w    46*4+2(a0),46*4+2(a1)
  305.     move.w    47*4+2(a0),47*4+2(a1)
  306.     move.w    48*4+2(a0),48*4+2(a1)
  307.     move.w    49*4+2(a0),49*4+2(a1)
  308.  
  309.     move.w    50*4+2(a0),50*4+2(a1)
  310.     move.w    51*4+2(a0),51*4+2(a1)
  311.     move.w    52*4+2(a0),52*4+2(a1)
  312.     move.w    53*4+2(a0),53*4+2(a1)
  313.     move.w    54*4+2(a0),54*4+2(a1)
  314.  
  315. copbuf.end
  316.     movem.l    (sp)+,d0-d7/a0-a6
  317.     rts
  318.  
  319.     ;goes back to the workbench
  320.     
  321. syson
  322.     movem.l    d0-d7/a0-a6,-(sp)
  323.  
  324.     move.w    #$0001,$dff09a        ;tbeint uit
  325.     move.l    intvbold,($6c).w
  326.     move.l    inttbeold,($64).w
  327.  
  328.     move.l    4,a6
  329.     jsr    -138(a6)        ;permit
  330.  
  331.     move.l    gfxlib,a6
  332.     jsr    -462(a6)        ;disownblitter
  333.  
  334.     move.l    wbview,a1
  335.     move.l    gfxlib,a6
  336.     jsr    _LVOLoadView(a6)     ; Fix view
  337.     jsr    _LVOWaitTOF(a6)
  338.     jsr    _LVOWaitTOF(a6)         ; wait for LoadView()
  339.  
  340. syson.ras
  341.     cmp.b    #$c0,$dff006        ;prevent copperjump
  342.     bne    syson.ras
  343.  
  344.     move.l    gfxlib,a6
  345.     move.l    gb_copinit(a6),$dff080     ; Kick it into life
  346.  
  347.     movem.l    (sp)+,d0-d7/a0-a6
  348.     rts
  349.     
  350.     ;goes back to the gadgetscreen
  351.     
  352. sysoff
  353.     movem.l    d0-d7/a0-a6,-(sp)
  354.      
  355.     move.l    gfxlib,a6
  356.     move.l    gb_ActiView(a6),wbview    ;current view
  357.     sub.l    a1,a1            ; clear a1
  358.     jsr     _LVOLoadView(a6)     ; Flush View to nothing
  359.     jsr    _LVOWaitTOF(a6)     ; Wait once
  360.     jsr    _LVOWaitTOF(a6)     ; Wait again.
  361.  
  362.     move.l    gfxlib,a6
  363.     jsr    -456(a6)        ;ownblitter
  364.  
  365.     move.l    4,a6
  366.     jsr    -132(a6)        ;forbid
  367.         
  368.     move.l    ($6c).w,intvbold
  369.     move.l    #intvb,($6c).w
  370.     move.l    ($64).w,inttbeold
  371.     move.l    #inttbe,($64).w
  372.     move.w    #$8001,$dff09a        ;tbeint aan
  373.     bsr    gracpr            ;reset copper
  374.     bsr    copbuf            ;copy copper
  375.     move.l    #cpr,$dff080
  376.  
  377.     movem.l    (sp)+,d0-d7/a0-a6
  378.     rts
  379.     
  380. cprsprrem
  381.     movem.l    d0-d7/a0-a6,-(sp)
  382.     lea    cprspr,a0
  383.     move.l    #sprdat,d0
  384.     move.w    #7,d1
  385. cprsprrem.a
  386.     move.w    d0,3*2(a0)
  387.     swap    d0
  388.     move.w    d0,1*2(a0)
  389.     swap    d0
  390.     add.l    #8,a0
  391.     dbra    d1,cprsprrem.a
  392.     movem.l    (sp)+,d0-d7/a0-a6
  393.     rts
  394.  
  395. varset                    ;variablen neerzetten
  396.     movem.l    d0-d7/a0-a6,-(sp)
  397.     move.l    #var,a0
  398.  
  399.     move.l    #cprbck,var_cprbck(a0)
  400.     move.l    gfxlib,var__GfxBase(a0)
  401.     move.b    ntscmode,var_ntsc(a0)
  402.  
  403.     move.l    curpic1,var_pic1(a0)    ;variabel
  404.     move.l    curpic2,var_pic2(a0)    ;variabel
  405.     move.w    anispd1,var_anispd1(a0)
  406.     move.w    anitel1,var_anitel1(a0)
  407.     movem.l    (sp)+,d0-d7/a0-a6
  408.     rts
  409.     
  410.     ;this routine handles all videotracker-routines
  411.  
  412. rotply    
  413.     movem.l    d0-d7/a0-a6,-(sp)
  414.  
  415.     moveq.l    #0,d0
  416.  
  417.     lea    currot1,a2        ;routine 1
  418.     move.w    rotinf1,d0        ;routine info
  419.     bsr.s    rotplyr
  420.  
  421. rotply.end
  422.     movem.l    (sp)+,d0-d7/a0-a6
  423.     rts
  424.  
  425.     ;this routine handles 1 routine, BLIT !
  426.     
  427. rotplyr
  428.     movem.l    d0-d7/a1-a6,-(sp)
  429.  
  430.     move.l    #rot,(a2)        ;routinestart address
  431.  
  432.     move.b    #50,ntscmode        ;ntsc/pal hz
  433.     clr.l    curpic2            ;background picture
  434.     move.w    #1,anispd1        ;animationspeed
  435.     clr.w    anitel1            ;animation position
  436.  
  437.     lea    var,a0            ;communication-table
  438.  
  439.  
  440.     move.l    #routinemode,d0        ;routinemode !!!
  441.  
  442.     sub.l    a0,a0            ;picture info legen
  443.  
  444.     tst.l    (a2)            ;is er een routine ?
  445.     beq    rotplyr.end        ;interlace handling
  446.  
  447.     move.l    intdel,d2        ;delay
  448.     move.l    inttel,d1        ;teller
  449.     cmp.w    d2,d1
  450.     blt    rotplyr.end
  451.     clr.l    inttel
  452.                 
  453.     bsr    varset            ;variabelen updaten
  454.  
  455.     move.l    (a2),a1            ;routine halen
  456.     move.l    #var,a0            ;variablen tabel
  457.  
  458.     movem.l    d3-d7/a1-a6,-(sp)
  459.     moveq.l    #0,d1            ;vars wissen
  460.     moveq.l    #0,d2
  461.     moveq.l    #0,d3
  462.     moveq.l    #0,d4
  463.     moveq.l    #0,d5
  464.     moveq.l    #0,d6
  465.     moveq.l    #0,d7
  466.     sub.l    a2,a2
  467.     sub.l    a3,a3
  468.     sub.l    a4,a4
  469.     sub.l    a5,a5
  470.  
  471.     jsr    4(a1)            ;routine afwerken
  472.     movem.l    (sp)+,d3-d7/a1-a6
  473.  
  474.     ;Routine:
  475.     ;
  476.     ;Input:
  477.     ;a0=variabelentabel
  478.     ;d0=routinemode
  479.     ;
  480.     ;Output:
  481.     ;a0=picture
  482.     ;d1=copperlist
  483.     ;d2=interruptdelay        (NOT used till now)
  484.     
  485.     move.w    #$0020,$dff09a        ;vb off !
  486.  
  487.     move.l    d2,intdel        ;delay
  488.  
  489.     lea    cprjmp,a3
  490.     move.l    #cprbck-8,d0
  491.  
  492.     cmp.l    (a2),a1            ;routine ondertussen gewipt ?
  493.     bne.s    rotplyr.nocop
  494.     tst.l    d1            ;copperlist ?
  495.     beq.s    rotplyr.nocop
  496.     move.l    d1,d0
  497. rotplyr.nocop
  498.     move.w    d0,6(a3)
  499.     swap    d0
  500.     move.w    d0,2(a3)
  501.  
  502.     cmp.l    #0,a0            ;picture ?
  503.     beq.s    rotplyr.endvb
  504.  
  505.     move.l    a0,curpic1        ;current picture (cycle)
  506.     move.l    a0,curpal1        ;current palette
  507.  
  508.     tst.b    rotdpl            ;plane is geleverd
  509.     beq.s    rotplyr.set
  510.     clr.b    rotdpl
  511.     clr.l    cycdel1            ;cycle info wissen
  512.     clr.l    4+cycdel1
  513.     clr.l    curfrm1            ;curfrm1, altijd planes zetten
  514. rotplyr.set
  515.     clr.b    dplctr
  516.     bsr.s    grap
  517.     bsr    grac            ;colorset
  518. rotplyr.endvb
  519.     move.w    #$8020,$dff09a
  520. rotplyr.end
  521.     movem.l    (sp)+,d0-d7/a1-a6
  522.     rts
  523.  
  524.     ;removes possible routine-coppers
  525.     
  526. gracpr
  527.     movem.l    d0-d7/a0-a6,-(sp)
  528.     lea    cprjmp,a3
  529.     move.l    #cprbck-8,d0        ;copperlist resetten
  530.     move.w    d0,6(a3)
  531.     swap    d0
  532.     move.w    d0,2(a3)
  533.     movem.l    (sp)+,d0-d7/a0-a6
  534.     rts
  535.  
  536.     ;picture-to-copper routine, communicates with the
  537.     ;anim-player
  538.     
  539. grap                    ;d7=anim
  540.     movem.l    d0-d7/a0-a6,-(sp)
  541.  
  542.     clr.l    d7
  543.     
  544.     tst.l    curpic1            ;current picture ?
  545.     beq    grap.end
  546.  
  547.     move.l    curpic1,a2        ;normal pic halen
  548.  
  549.     lea    gracprscr,a1        ;window neerzetten
  550.     move.l    hogscr,d1
  551.  
  552.     move.w    pic_hgt(a2),d3        ;pic hoogte
  553.     move.w    pic_vew(a2),d5
  554.     btst    #2,d5            ;interlace ?
  555.     beq.s    grap.nohi4
  556.     lsr.w    #1,d3            ;/2
  557. grap.nohi4
  558.     cmp.w    d3,d1
  559.     bge.s    grap.hog
  560.     move.w    d1,d3
  561. grap.hog
  562.     sub.w    d3,d1
  563.     lsr.w    #1,d1
  564.     add.w    #win_str,d1
  565.     move.w    d1,d2
  566.     add.w    d3,d2
  567.  
  568.  
  569.     move.b    d1,2(a1)        ;y start
  570.     move.b    d2,6(a1)        ;y end
  571.  
  572.     move.w    pic_wid(a2),d4        ;pic breedte in bytes
  573.     lsl.l    #3,d4
  574.  
  575.     move.l    #vew_wid*8,d0
  576.     move.l    #0,d1
  577.     move.l    #$71,d6
  578.  
  579.     move.w    pic_vew(a2),d5
  580.     btst    #15,d5            ;hires ?
  581.     beq.s    grap.nohi2
  582.  
  583.     move.l    #(vew_wid-4)*8*2,d0
  584.     move.l    #1,d1
  585.     move.l    #$81,d6
  586.  
  587.     cmp.w    #80,pic_wid(a2)        ;overscan ?
  588.     ble.s    grap.nohi2
  589.     move.l    #(vew_wid)*8*2,d0
  590.     move.l    #$61,d6
  591.  
  592. grap.nohi2    
  593.     btst    #6,d5            ;super hires ?
  594.     beq.s    grap.noshi2
  595.  
  596.     move.l    #(vew_wid-4)*8*4,d0
  597.     move.l    #2,d1
  598.     move.l    #$81,d6
  599.  
  600.     cmp.w    #80*2,pic_wid(a2)    ;overscan ?
  601.     ble.s    grap.noshi2
  602.     move.l    #(vew_wid)*8*4,d0
  603.     move.l    #$61,d6
  604.  
  605. grap.noshi2    
  606.  
  607.     clr.w    d5
  608.     cmp.w    d0,d4            ;breeder dan scherm ?
  609.     ble.s    grap.c
  610.     move.w    d4,d5
  611.     move.w    d0,d4
  612.     sub.w    d0,d5            ;modulo
  613.     lsr.w    #3,d5            ;/8
  614. grap.c
  615.     lsr.w    d1,d0
  616.     lsr.w    d1,d4
  617.  
  618.     move.w    d0,d2
  619.     sub.w    d4,d2
  620.     lsr.w    #1,d2            ;/2
  621.  
  622.     add.w    d6,d2
  623.     move.b    d2,3(a1)        ;x start
  624.     move.w    d2,d3            ;d3 bewaren !
  625.  
  626.     add.w    d4,d2            ;d4 bewaren !
  627.     move.b    d2,7(a1)        ;x end
  628.     
  629.     move.w    pic_vew(a2),d6
  630.     btst    #15,d6            ;hires ?
  631.     beq.s    grap.nohi5    
  632.     add.l    d4,d4            ;*2
  633. grap.nohi5
  634.     btst    #6,d6            ;super hires ?
  635.     beq.s    grap.noshi5    
  636.     add.l    d4,d4            ;*4
  637. grap.noshi5
  638.  
  639.     move.l    d7,-(sp)
  640.     move.w    pic_vew(a2),d6
  641.     move.l    #17,d0
  642.     move.l    #1,d1
  643.     move.l    #3,d7
  644.  
  645.     btst    #15,d6            ;hires ?
  646.     beq.s    grap.nohi3    
  647.     move.l    #9,d0
  648.     move.l    #2,d1
  649.     move.l    #2,d7
  650. grap.nohi3
  651.     btst    #6,d6            ;super hires ?
  652.     beq.s    grap.noshi3    
  653.     move.l    #9,d0
  654.     move.l    #2,d1
  655.     move.l    #1,d7
  656. grap.noshi3
  657.     sub.w    d0,d3
  658.     lsr.w    #1,d3
  659.     move.w    d3,10(a1)        ;ddfstrt
  660.     
  661.     move.w    d4,d2            ;pic breedte in pixels
  662.     lsr.w    #4,d2            ;/16
  663.     sub.w    d1,d2            ;-1
  664.  
  665.     lsl.w    d7,d2            ;*8
  666.     add.w    d2,d3
  667.     move.w    d3,14(a1)        ;ddfstop
  668.     move.l    (sp)+,d7
  669.     
  670.     lea    pic_raw(a2),a0
  671.  
  672.     moveq.l    #0,d2
  673.     move.w    pic_dpt(a2),d2
  674.     sub.l    #1,d2
  675.     muls    pic_wid(a2),d2
  676.     add.w    d2,d5
  677.  
  678.     move.w    pic_vew(a2),d2        ;viewmode add
  679.     btst    #2,d2
  680.     beq.s    grap.nolace4
  681.  
  682.     moveq.l    #0,d2
  683.     move.w    pic_dpt(a2),d2
  684.     muls    pic_wid(a2),d2
  685.     add.w    d2,d5            ;interlace gedoe
  686. grap.nolace4
  687.  
  688.     lea    gracprbpl,a4        ;iffpln neerzetten
  689.     lea    gracprpln,a0        ;iffpln neerzetten
  690.     moveq.l    #0,d2
  691.     move.w    pic_dpt(a2),d2        ;plnnummer 1 halen
  692.     move.l    #8,d6            ;copper step !
  693.  
  694.     tst.l    curpic2            ;2de picture ?
  695.     bne.s    grap.pic2
  696. grap.nopic2
  697.     move.w    d5,34(a1)        ;modulo oneven zetten
  698.     bra    grap.nodpl
  699. grap.pic2
  700.     move.l    curpic2,a3        ;oneven plane
  701.     move.l    currot2,a5        ;oneven plane
  702.     clr.l    curpic2            ;mischien niet goed
  703.     clr.l    curpal2            ;mischien niet goed
  704.     clr.l    currot2            ;mischien niet goed
  705.  
  706.     cmp.l    curpic1,a3        ;picture hetzelfde ?
  707.     beq    grap.nopic2
  708.     
  709.     cmp.l    #0,currot1        ;routine ?    
  710.     beq.s    grap.norot
  711.     cmp.l    currot1,a5        ;routine hetzelfde ?
  712.     beq    grap.nopic2
  713. grap.norot
  714.  
  715.     cmp.b    #3,d2            ;> 8 kleuren ?
  716.     bgt    grap.nopic2
  717.     move.w    pic_dpt(a3),d3        ;plnnummer 2 halen
  718.     cmp.b    d2,d3            ;gelijke plnummers ?
  719.     bne    grap.nopic2
  720.     move.w    pic_vew(a2),d1
  721.     cmp.w    pic_vew(a3),d1        ;view gelijk ?
  722.     bne    grap.nopic2
  723.  
  724.     move.w    pic_vew(a2),d1        ;groter dan view test
  725.     btst    #6,d1            ;super hires ?
  726.     beq.s    grap.nohi2a
  727.     move.l    #vew_wid*4,d1
  728.     bra.s    grap.nohi2b
  729. grap.nohi2a
  730.     btst    #15,d1            ;hires ?
  731.     beq.s    grap.noshi2a
  732.     move.l    #vew_wid*2,d1
  733.     bra.s    grap.nohi2b
  734. grap.noshi2a
  735.     move.l    #vew_wid,d1
  736. grap.nohi2b
  737.     cmp.w    pic_wid(a2),d1        ;breder dan view ?
  738.     bgt.s    grap.small
  739.     cmp.w    pic_wid(a3),d1        ;breder dan view ?
  740.     bgt.s    grap.small
  741.  
  742.     move.w    pic_vew(a2),d1
  743.     btst    #2,d1
  744.     beq.s    grap.nolace8a
  745.     move.l    hogscr,d1
  746.     add.l    d1,d1
  747.     bra.s    grap.nolace8b
  748. grap.nolace8a
  749.     move.l    hogscr,d1
  750. grap.nolace8b
  751.     cmp.w    pic_hgt(a2),d1        ;hoger dan view ?
  752.     bgt.s    grap.small
  753.     cmp.w    pic_hgt(a3),d1        ;hoger dan view ?
  754.     bgt.s    grap.small
  755.     bra.s    grap.big
  756.  
  757. grap.small
  758.     move.w    pic_hgt(a2),d1        ;wid+hgt<vew
  759.     cmp.w    pic_hgt(a3),d1        ;hoogte gelijk ?
  760.     bne    grap.nopic2
  761.     move.w    pic_wid(a2),d1
  762.     cmp.w    pic_wid(a3),d1        ;breedte gelijk ?
  763.     bne    grap.nopic2
  764.  
  765. grap.big
  766.     move.l    a3,curpic2
  767.     move.l    a3,curpal2
  768.     move.l    a5,currot2
  769.  
  770.     tst.b    dplctr            ;double playfield al gezet ?
  771.     beq.s    grap.nocop
  772.  
  773.     move.w    30(a1),34(a1)        ;modulo copieren
  774.  
  775.     move.w    2(a4),d1        ;bplcon0
  776.     btst    #10,d1            ;al double playfield ?
  777.     beq.s    grap.ta
  778.  
  779.     move.w    2(a0),10(a0)        ;plane 0>1 copieren
  780.     move.w    6(a0),14(a0)
  781.  
  782.     move.w    18(a0),26(a0)        ;plane 2>3 copieren
  783.     move.w    22(a0),30(a0)
  784.  
  785.     move.w    34(a0),42(a0)        ;plane 4>5 copieren
  786.     move.w    38(a0),46(a0)
  787.  
  788.     bra.s    grap.tb
  789. grap.ta
  790.     move.w    18(a0),42(a0)        ;plane 2>5 copieren
  791.     move.w    22(a0),46(a0)
  792.  
  793.     move.w    10(a0),26(a0)        ;plane 1>3 copieren
  794.     move.w    14(a0),30(a0)
  795.  
  796.     move.w    2(a0),10(a0)        ;plane 0>1 copieren
  797.     move.w    6(a0),14(a0)
  798.  
  799. grap.tb
  800.     move.l    #palette,a3        ;palette copieren
  801.  
  802.     move.w    #8-1,d1
  803. grap.pal
  804.     move.w    (a3)+,14(a3)
  805.     dbra    d1,grap.pal
  806.  
  807. grap.nocop
  808.     add.w    d3,d2
  809.     lsl.w    #8,d2
  810.     lsl.w    #4,d2
  811.     or.w    #$400,d2
  812.     move.w    d2,2(a4)        ;bplcon0
  813.  
  814.     movem.l    d0-d7/a0-a6,-(sp)
  815.  
  816.     move.l    curpic,a2        ;animpic ?
  817.     move.l    curfrm,d7
  818.     cmp.l    #0,a2
  819.     bne.s    grap.noanipic
  820.  
  821.     move.l    curpic2,a2        ;normal pic ?
  822.     move.l    curfrm2,d7
  823.     cmp.l    #0,a2
  824.     beq.s    grap.nodplpic
  825.  
  826. grap.noanipic
  827.     add.l    d6,a0
  828.     add.w    d6,d6
  829.     bsr.s    grappln            ;a2,d6,d7,d0
  830. grap.nodplpic
  831.     movem.l    (sp)+,d0-d7/a0-a6
  832.     add.w    d6,d6
  833.     bra.s    grap.nodpla
  834.  
  835.  
  836. grap.nodpl                ;geen double playfield
  837.     lsl.w    #8,d2
  838.     lsl.w    #4,d2
  839.     move.w    d2,2(a4)        ;bplcon0
  840.  
  841. grap.nodpla
  842.     move.w    d5,30(a1)        ;modulo even
  843.  
  844.     moveq.l    #0,d3
  845.     add.w    pic_vew(a2),d3        ;viewmode add
  846.     moveq.l    #0,d2
  847.     move.w    2(a4),d2
  848.     or.l    d3,d2
  849.     or.l    #$300,d2        ;genlock info
  850.     move.w    d2,2(a4)
  851.     
  852.     bsr.s    grappln            ;a2,d6,d7,d0
  853.  
  854. grap.end
  855.     
  856.     movem.l    (sp)+,d0-d7/a0-a6
  857.     rts
  858.         
  859.  
  860.     ;sets on of the 2 possible pictures to the copper
  861.     ;handles interlace
  862.  
  863.     ;d7=framenummer
  864.     ;d6=copperliststap
  865.     ;d0=raw planes positie
  866.     ;a2=current picture
  867. grappln                    ;planes invullen 
  868.     movem.l    d0-d7/a0-a6,-(sp)
  869.  
  870.     lea    pic_raw(a2),a1
  871.     move.l    a1,d0            ;raw planes
  872.     
  873.     moveq.l    #0,d2            ;x*y
  874.     move.w    pic_wid(a2),d2
  875.     lsr.l    #1,d2            ;/2
  876.     moveq.l    #0,d3
  877.     move.w    pic_hgt(a2),d3
  878.     muls    d3,d2
  879.     
  880.     move.l    d2,d4
  881.     add.l    d2,d2
  882.  
  883.     move.w    pic_dpt(a2),d3
  884.     muls    d3,d4            ;hele picture size
  885.     muls    d7,d4            ;frame*size d7 !
  886.  
  887.     add.l    d4,d4
  888.  
  889.     add.l    d4,d0
  890.  
  891.     move.l    #vew_wid,d5        ;max x view
  892.     move.l    hogscr,d4        ;max y view
  893.     move.w    pic_vew(a2),d1        ;viewmode add
  894.     btst    #2,d1
  895.     beq.s    grappln.nolace
  896.     add.l    d4,d4            ;max y view
  897. grappln.nolace
  898.     btst    #15,d1            ;hires ?
  899.     beq.s    grappln.nohi
  900.     move.l    #vew_wid*2,d5        ;max x view
  901. grappln.nohi
  902.     btst    #6,d1            ;super hires ?
  903.     beq.s    grappln.noshi
  904.     move.l    #vew_wid*4,d5        ;max x view
  905. grappln.noshi
  906.  
  907.     moveq.l    #0,d3            ;scherm centreren
  908.     move.w    pic_wid(a2),d3        ;pic breedte in bytes
  909.     cmp.w    d5,d3            ;breder dan scherm ?
  910.     ble.s    grappln.qa
  911.     sub.w    d5,d3            ;-scherm breedte
  912.     lsr.w    #2,d3            ;/4
  913.  
  914.     add.l    d3,d3
  915.  
  916.     add.l    d3,d0
  917. grappln.qa
  918.     move.w    pic_hgt(a2),d3        ;pic hoogte in bytes
  919.     cmp.w    d4,d3            ;hoger dan scherm ?
  920.     ble.s    grappln.qb
  921.     sub.w    d4,d3            ;-scherm breedte
  922.     lsr.w    #1,d3            ;/2
  923.     moveq.l    #0,d5
  924.     move.w    pic_wid(a2),d5        ;pic breedte in bytes
  925.     muls    pic_dpt(a2),d5
  926.     muls    d5,d3
  927.     add.l    d3,d0
  928. grappln.qb
  929.     moveq.l    #0,d2
  930.     move.w    pic_wid(a2),d2
  931.  
  932.     move.w    pic_vew(a2),d5        ;interlace flipping ?
  933.     btst    #2,d5
  934.     beq.s    grappln.nolac7b
  935.  
  936.     move.w    $04(a6),d5        ;even/oneven ?
  937.     btst    #15,d5
  938.     beq.s    grappln.nolac7b
  939.     
  940.     moveq.l    #0,d3
  941.     move.w    pic_wid(a2),d3
  942.     muls    pic_dpt(a2),d3
  943.     add.l    d3,d0
  944. grappln.nolac7b
  945.  
  946.     move.w    pic_dpt(a2),d1        ;plnnummer 1 halen
  947.     tst.w    d1            ;0 planes ?
  948.     beq.s    grappln.end
  949.     sub.w    #1,d1
  950. grappln.a
  951.     move.w    d0,3*2(a0)
  952.     swap    d0
  953.     move.w    d0,1*2(a0)
  954.     swap    d0
  955.     add.l    d6,a0            ;d6=copper step !
  956.     add.l    d2,d0
  957.     dbra    d1,grappln.a
  958. grappln.end
  959.     movem.l    (sp)+,d0-d7/a0-a6
  960.     rts
  961.  
  962.     ;sets palettes to copper
  963.     
  964. grac
  965.     movem.l    d0-d7/a0-a6,-(sp)
  966.  
  967.     lea    curpal1,a3        ;palette 1
  968.     move.l    #palette,a1
  969.     bsr.s    gracfrm
  970.  
  971.     lea    curpal2,a3        ;palette 2 (dpl)
  972.     move.l    #8*2+palette,a1
  973.     bsr.s    gracfrm
  974.     
  975.     bsr.s    palctr            ;palette-buffer to copper
  976. grac.end
  977.     movem.l    (sp)+,d0-d7/a0-a6
  978.     rts
  979.         
  980.     ;moves palette from picture to palette-buffer
  981.  
  982. gracfrm
  983.     movem.l    d0-d7/a0-a6,-(sp)
  984.     tst.l    (a3)            ;palette aanwezig ?
  985.     beq.s    gracfrm.end
  986.  
  987.     move.l    (a3),a2            ;current palette
  988.     
  989.     cmp.l    #'PALE',(a2)        ;palette ?
  990.     bne.s    gracfrm.pict
  991.     lea    6(a2),a0        ;palette
  992.     move.w    4(a2),d0        ;aantal kleuren
  993.     bra.s    gracfrm.col
  994. gracfrm.pict
  995.     cmp.l    #'ANIM',(a2)        ;animatie ?
  996.     bne.s    gracfrm.noanim
  997.  
  998.     moveq.l    #0,d1
  999.     move.w    pic_ani(a2),d1
  1000.     bclr    #7,d1            ;behandelbit weghalen
  1001.  
  1002.     moveq.l    #0,d3
  1003.     move.w    pic_wid(a2),d3
  1004.     lsr.w    #1,d3            ;/2
  1005.     muls    pic_hgt(a2),d3
  1006.     muls    pic_dpt(a2),d3
  1007.  
  1008.     add.l    d3,d3
  1009.  
  1010.     add.l    #pic_raw,d3
  1011.     move.l    d3,d5
  1012.  
  1013.     btst    #0,d1
  1014.     bne.s    gracfrm.buf2
  1015.     moveq.l    #0,d5
  1016. gracfrm.buf2
  1017.     add.l    d5,a2
  1018. gracfrm.noanim
  1019.     lea    pic_pal(a2),a0        ;palette
  1020.     move.w    pic_palnum(a2),d0
  1021.  
  1022.     cmp.w    #32-1,d0        ;niet meer dan 32 kleuren
  1023.     ble    gracfrm.sub
  1024.     move.w    #32-1,d0
  1025. gracfrm.sub
  1026.  
  1027.     tst.w    d0            ;0 planes ?
  1028.     beq.s    gracfrm.end
  1029. gracfrm.col
  1030. gracfrm.fa
  1031.     move.w    (a0)+,(a1)+
  1032.     dbra    d0,gracfrm.fa
  1033. gracfrm.end
  1034.     movem.l    (sp)+,d0-d7/a0-a6
  1035.     rts
  1036.     
  1037.     ;handles colorcycling in the palette-buffer
  1038.     ;and copies palette-buffer to copper
  1039.  
  1040. palctr
  1041.     movem.l    d0-d7/a0-a6,-(sp)
  1042.  
  1043.     move.l    curpic1,a2        ;current raw
  1044.     cmp.l    #0,a2
  1045.     beq.s    palctr.qb
  1046.     lea    cycdel1,a3        ;cycle delays
  1047.     move.l    #palette,a4
  1048.     bsr    palcyc
  1049. palctr.qb
  1050.     move.l    curpic2,a2        ;current raw
  1051.     cmp.l    #0,a2
  1052.     beq.s    palctr.c
  1053.     lea    cycdel2,a3        ;cycle delays
  1054.     move.l    #8*2+palette,a4
  1055.     bsr    palcyc
  1056.  
  1057. palctr.c
  1058.     lea    gracprcol,a1
  1059.     move.l    #palette,a0
  1060.  
  1061.     move.w    00(a0),00*4+2(a1)
  1062.     move.w    02(a0),01*4+2(a1)
  1063.     move.w    04(a0),02*4+2(a1)
  1064.     move.w    06(a0),03*4+2(a1)
  1065.     move.w    08(a0),04*4+2(a1)
  1066.     move.w    10(a0),05*4+2(a1)
  1067.     move.w    12(a0),06*4+2(a1)
  1068.     move.w    14(a0),07*4+2(a1)
  1069.     move.w    16(a0),08*4+2(a1)
  1070.     move.w    18(a0),09*4+2(a1)
  1071.  
  1072.     move.w    20(a0),10*4+2(a1)
  1073.     move.w    22(a0),11*4+2(a1)
  1074.     move.w    24(a0),12*4+2(a1)
  1075.     move.w    26(a0),13*4+2(a1)
  1076.     move.w    28(a0),14*4+2(a1)
  1077.     move.w    30(a0),15*4+2(a1)
  1078.     move.w    32(a0),16*4+2(a1)
  1079.     move.w    34(a0),17*4+2(a1)
  1080.     move.w    36(a0),18*4+2(a1)
  1081.     move.w    38(a0),19*4+2(a1)
  1082.  
  1083.     move.w    40(a0),20*4+2(a1)
  1084.     move.w    42(a0),21*4+2(a1)
  1085.     move.w    44(a0),22*4+2(a1)
  1086.     move.w    46(a0),23*4+2(a1)
  1087.     move.w    48(a0),24*4+2(a1)
  1088.     move.w    50(a0),25*4+2(a1)
  1089.     move.w    52(a0),26*4+2(a1)
  1090.     move.w    54(a0),27*4+2(a1)
  1091.     move.w    56(a0),28*4+2(a1)
  1092.     move.w    58(a0),29*4+2(a1)
  1093.  
  1094.     move.w    60(a0),30*4+2(a1)
  1095.     move.w    62(a0),31*4+2(a1)
  1096.  
  1097.     movem.l    (sp)+,d0-d7/a0-a6
  1098.     rts
  1099.  
  1100.     ;colorcyclinghandling of a palette
  1101.  
  1102. palcyc
  1103.     movem.l    d0-d7/a0-a6,-(sp)
  1104.     move.w    #4-1,d7            ;4 cycles
  1105. palcyc.d
  1106.     tst.w    (a3)+            ;delay klaar ?
  1107.     bne.s    palcyc.c
  1108.     
  1109.     moveq.l    #0,d1
  1110.     move.b    pic_cycstr(a2),d1    ;start color
  1111.     lsl.b    #1,d1        ;*2
  1112.  
  1113.     moveq.l    #0,d2
  1114.     move.b    pic_cycend(a2),d2    ;end color
  1115.     lsl.b    #1,d2        ;*2
  1116.  
  1117.     moveq.l    #0,d3
  1118.     move.b    pic_cycadd(a2),d3    ;richting
  1119.  
  1120.     move.l    a4,a0            ;palette pointer
  1121.     move.l    a0,a1
  1122.     add.l    d1,a0            ;startcolor
  1123.     add.l    d2,a1            ;endcolor
  1124.     
  1125.     cmp.b    #1,d3            ;omhoog
  1126.     beq.s    palcyc.up
  1127.     cmp.b    #3,d3            ;omlaag
  1128.     beq.s    palcyc.down
  1129.     bra.s    palcyc.i
  1130.  
  1131. palcyc.up                ;kleuren copieren
  1132.     move.w    (a1),d4            ;laatst color bewaren
  1133. palcyc.f                ;kleuren copieren
  1134.     cmp.l    a0,a1
  1135.     beq.s    palcyc.fa
  1136.     move.w    -(a1),2(a1)
  1137.     bra    palcyc.f
  1138. palcyc.fa
  1139.     move.w    d4,(a1)
  1140.     bra.s    palcyc.g    
  1141.     
  1142. palcyc.down
  1143.     move.w    (a0),d4            ;laatst color bewaren
  1144. palcyc.h                ;kleuren copieren
  1145.     cmp.l    a0,a1
  1146.     beq.s    palcyc.ha
  1147.     move.w    2(a0),(a0)+
  1148.     bra    palcyc.h
  1149. palcyc.ha
  1150.     move.w    d4,(a1)
  1151.  
  1152. palcyc.g
  1153.     move.b    pic_cycspd(a2),-1(a3)    ;delay zetten
  1154.     bra.s    palcyc.i
  1155. palcyc.c
  1156.     sub.w    #1,-2(a3)        ;cycle delay aftellen
  1157. palcyc.i
  1158.     add.l    #4,a2            ;next cycle info
  1159.     dbra    d7,palcyc.d
  1160.  
  1161. palcyc.qb
  1162.     movem.l    (sp)+,d0-d7/a0-a6
  1163.     rts
  1164.  
  1165.  
  1166. ;    SECTION    variabelen,DATA_c
  1167.  
  1168.     cnop    0,2
  1169. curtsk        dc.l    0
  1170. tskpri        dc.l    0
  1171. duplok        dc.l    0
  1172. inttel        dc.l    0
  1173. intdel        dc.l    0
  1174.  
  1175. form        dc.l    0
  1176. ifffil        dc.l    0
  1177. intvbold    dc.l    0
  1178. inttbeold    dc.l    0
  1179. patpos        dc.l    0
  1180. gfxlib        dc.l    0
  1181. doslib        dc.l    0
  1182. wbview      dc.l    0
  1183. mt_data        dc.l    0
  1184. memvid        dc.l    0
  1185. oldcprlist    dc.l    0
  1186. hogscr        dc.l    vew_hgt
  1187.  
  1188. inspos        dc.l    -1
  1189. anispd1        dc.w    1    ;nooit op 0 !
  1190. anispd2        dc.w    1
  1191.  
  1192.         cnop    0,2
  1193. varclr.s            ;start wissen
  1194. oldrot        dc.l    0
  1195. curpic        dc.l    0
  1196. curfrm        dc.l    0
  1197. cycdel1        ds.w    4
  1198. cycdel2        ds.w    4
  1199.  
  1200. rotinf1        dc.w    0
  1201. rotinf2        dc.w    0
  1202.  
  1203. effspd        dc.w    0
  1204. efflop        dc.b    0
  1205. anilop1        dc.b    0
  1206. anilop2        dc.b    0
  1207. anipal1        dc.b    0
  1208. anipal2        dc.b    0
  1209. rotdpl        dc.b    1
  1210. dplctr        dc.b    0
  1211.         cnop    0,2
  1212.  
  1213. insdat        ds.l    4
  1214. inspri        dc.l    0
  1215. instel        dc.w    0
  1216.  
  1217. cureff        dc.l    0
  1218. efftel        dc.w    0
  1219.  
  1220. curpal1        dc.l    0
  1221. curpal2        dc.l    0
  1222. currot1        dc.l    0
  1223. currot2        dc.l    0
  1224. curpic1        dc.l    0
  1225. curpic2        dc.l    0
  1226. anitel1        dc.w    0
  1227. anitel2        dc.w    0
  1228. curfrm1        dc.l    0
  1229. curfrm2        dc.l    0
  1230. oldfrm1        dc.l    0
  1231. oldfrm2        dc.l    0
  1232.  
  1233. varclr.e
  1234.         dc.l    0            ;wisruimte
  1235.     
  1236. varclr.ql    equ    varclr.e-varclr.s    ;wislengte
  1237.     
  1238. ;ownblit    dc.b    0
  1239. ntscmode    dc.b    0
  1240. end        dc.b    0
  1241.  
  1242. pronam    dc.b    'VideoTracker',0
  1243.     cnop    0,2
  1244. dosnam    dc.b    'dos.library',0
  1245.     cnop    0,4
  1246. gfxnam    dc.b    'graphics.library',0
  1247.     cnop    0,4
  1248.     
  1249.     cnop    0,4
  1250. gra.s
  1251. gracprscr
  1252.     dc.w    $8e,$3381,$90,$81c1,$92,$003c,$94,$00d0
  1253. gracprbpl
  1254.     dc.w    $100,$9000,$102,$0000,$104,$0020
  1255.     dc.w    $108,$0000,$10a,$0000
  1256. gracprpln
  1257.     dc.w    $e0,$0000,$e2,$0000
  1258.     dc.w    $e4,$0000,$e6,$0000
  1259.     dc.w    $e8,$0000,$ea,$0000
  1260.     dc.w    $ec,$0000,$ee,$0000
  1261.     dc.w    $f0,$0000,$f2,$0000
  1262.     dc.w    $f4,$0000,$f6,$0000
  1263. gracprcol
  1264.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1265.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1266.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1267.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1268. cprjmp
  1269.     dc.w    $080,0,$082,0
  1270. gra.e
  1271. gra.ql    equ    gra.e-gra.s        ;block lengte
  1272.  
  1273.  
  1274. cpr
  1275.     dc.w    $0001,$fffe
  1276.     dc.w    $09c,$8001        ;tbeint
  1277. cprspr
  1278.     dc.w    $120,$0000,$122,$0000
  1279.     dc.w    $124,$0000,$126,$0000
  1280.     dc.w    $128,$0000,$12a,$0000
  1281.     dc.w    $12c,$0000,$12e,$0000
  1282.     dc.w    $130,$0000,$132,$0000
  1283.     dc.w    $134,$0000,$136,$0000
  1284.     dc.w    $138,$0000,$13a,$0000
  1285.     dc.w    $13c,$0000,$13e,$0000
  1286.  
  1287. cprbuf
  1288.     dc.w    $8e,$3381,$90,$81c1,$92,$003c,$94,$00d0
  1289.     dc.w    $100,$9000,$102,$0000,$104,$0020
  1290.     dc.w    $108,$0000,$10a,$0000
  1291.     dc.w    $e0,$0000,$e2,$0000
  1292.     dc.w    $e4,$0000,$e6,$0000
  1293.     dc.w    $e8,$0000,$ea,$0000
  1294.     dc.w    $ec,$0000,$ee,$0000
  1295.     dc.w    $f0,$0000,$f2,$0000
  1296.     dc.w    $f4,$0000,$f6,$0000
  1297.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1298.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1299.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1300.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1301.     dc.w    $080,0,$082,0
  1302. cprbuf.e
  1303.  
  1304.     dc.w    $088,$0000        ;copjmp2
  1305.     dc.w    $080,0,$082,0        ;moet achter cprbck blijven !
  1306. cprbck
  1307. sprdat
  1308.     dc.w    $ffff,$fffe
  1309.  
  1310.  
  1311. prf_pat    equ    7            ;pref sample size
  1312. prf_patnum    equ    128        ;aantal songpos's
  1313. prf_len    equ    ((prf_pat*prf_patnum)+1)
  1314.  
  1315. prf_pos    equ    0            ;eff position (teller)
  1316.  
  1317. prf_effs    equ    1        ;start effect (*prf_patnum)
  1318. prf_effe    equ    2        ;end effect   (*prf_patnum)
  1319. prf_pri    equ    3            ;priority     (*prf_patnum)
  1320. prf_spd    equ    4            ;eff speed    (*prf_patnum)
  1321. prf_ani    equ    5            ;ani speed    (*prf_patnum)
  1322. prf_roth    equ    6        ;routine info (*prf_patnum)
  1323. prf_rotl    equ    7        ;routine info (*prf_patnum)
  1324.  
  1325. eff_num    equ    256            ;aantal effects
  1326.  
  1327. pic_wid        equ    4        ;wide in bytes
  1328. pic_hgt        equ    6        ;hoogte
  1329. pic_dpt        equ    8        ;number planes
  1330. pic_ani        equ    10        ;aantal effes (anim)
  1331. pic_vew        equ    12        ;viewmode
  1332. pic_cycstr    equ    14        ;cycle start (*4)
  1333. pic_cycend    equ    15        ;cycle end (*4)
  1334. pic_cycspd    equ    16        ;cycle speed (*4)
  1335. pic_cycadd    equ    17        ;cycle add (*4)
  1336. pic_palnum    equ    30        ;aantal kleuren
  1337. pic_pal        equ    32        ;palette start
  1338. pic_palsiz    equ    256*2        ;vaste palette size
  1339. pic_raw        equ    pic_pal+pic_palsiz    ;palette start
  1340.  
  1341. fil_namlen    equ    24        ;naamlengte
  1342. fil_len    equ    (fil_namlen+4+4)    ;effect info length
  1343. fil_num    equ    2+eff_num        ;aantal files
  1344. fil_fil    equ    0            ;file naam 
  1345. fil_dir    equ    24            ;pointer naar directory
  1346. fil_pnt    equ    28            ;pointer naar meminfo
  1347.  
  1348. palette    ds.w    64    ;palette
  1349.  
  1350. var_len        equ    $300        ;lengte vartabel
  1351.  
  1352. var__GfxBase    equ    $000        ;graphics lib
  1353. var_pic1    equ    $004        ;current picture
  1354. var_anispd1    equ    $008        ;animspeed
  1355. var_anitel1    equ    $00c        ;animspeed
  1356. var_cprbck    equ    $010        ;copperback
  1357. var_bck        equ    $014        ;background
  1358. var_pic2    equ    $018        ;current picture
  1359. var_ntsc    equ    $01c        ;ntsc/pal frequence
  1360. var_lnd        equ    $020        ;landscape
  1361. var_txt1    equ    $040        ;text
  1362. var_txt16    equ    15*4+var_txt1
  1363. var_vec1    equ    $080        ;vectors
  1364. var_vec16    equ    15*4+var_vec1
  1365. var_fon1    equ    $0c0        ;fonts
  1366. var_fon16    equ    15*4+var_fon1
  1367. var_cols1    equ    $100        ;colorsets
  1368. var_cols16    equ    15*4+var_cols1
  1369. var_obj1    equ    $180        ;objects
  1370. var_obj16    equ    15*4+var_obj1
  1371.  
  1372. fon_hgt        equ    4        ;font hoogte
  1373. fon_wid        equ    8        ;plane breedte in bytes
  1374. fon_dpt        equ    12        ;depth
  1375. fon_chrf    equ    16        ;eerste character
  1376. fon_chrl    equ    20        ;laatste character
  1377. fon_widtab    equ    24        ;font breedte per char
  1378. fon_rawpos    equ    256*2+fon_widtab    ;start raw char position
  1379. fon_raw        equ    256*4+fon_rawpos    ;start raw planes
  1380.  
  1381.     cnop    0,2
  1382. var    ds.b    $300    ;variabelen voor routines
  1383.  
  1384.     
  1385. ;    SECTION    10,CODE_C
  1386.         endc
  1387.  
  1388. ; this is the routine-source
  1389. ;**********************************************************************
  1390.  
  1391.         ifnd    rout
  1392. pic_wid        equ    4        ;wide in bytes
  1393. pic_hgt        equ    6        ;hoogte
  1394. pic_dpt        equ    8        ;number planes
  1395. pic_ani        equ    10        ;aantal effes (anim)
  1396. pic_vew        equ    12        ;viewmode
  1397. pic_cycstr    equ    14        ;cycle start (*4)
  1398. pic_cycend    equ    15        ;cycle end (*4)
  1399. pic_cycspd    equ    16        ;cycle speed (*4)
  1400. pic_cycadd    equ    17        ;cycle add (*4)
  1401. pic_palnum    equ    30        ;aantal kleuren
  1402. pic_pal        equ    32        ;palette start
  1403. pic_palsiz    equ    256*2        ;vaste palette size
  1404. pic_raw        equ    pic_pal+pic_palsiz    ;palette start
  1405.  
  1406. var_len        equ    $300        ;lengte vartabel
  1407.  
  1408. var__GfxBase    equ    $000        ;graphics lib
  1409. var_pic1    equ    $004        ;current picture
  1410. var_anispd1    equ    $008        ;animspeed
  1411. var_anitel1    equ    $00c        ;animspeed
  1412. var_cprbck    equ    $010        ;copperback
  1413. var_bck        equ    $014        ;background
  1414. var_pic2    equ    $018        ;current picture
  1415. var_ntsc    equ    $01c        ;ntsc/pal frequence
  1416. var_lnd        equ    $020        ;landscape
  1417. var_txt1    equ    $040        ;text
  1418. var_txt16    equ    15*4+var_txt1
  1419. var_vec1    equ    $080        ;vectors
  1420. var_vec16    equ    15*4+var_vec1
  1421. var_fon1    equ    $0c0        ;fonts
  1422. var_fon16    equ    15*4+var_fon1
  1423. var_cols1    equ    $100        ;colorsets
  1424. var_cols16    equ    15*4+var_cols1
  1425. var_obj1    equ    $180        ;objects
  1426. var_obj16    equ    15*4+var_obj1
  1427.  
  1428. fon_hgt        equ    4        ;font hoogte
  1429. fon_wid        equ    8        ;plane breedte in bytes
  1430. fon_dpt        equ    12        ;depth
  1431. fon_chrf    equ    16        ;eerste character
  1432. fon_chrl    equ    20        ;laatste character
  1433. fon_widtab    equ    24        ;font breedte per char
  1434. fon_rawpos    equ    256*2+fon_widtab    ;start raw char position
  1435. fon_raw        equ    256*4+fon_rawpos    ;start raw planes
  1436.  
  1437. vew_wid    equ    44
  1438. vew_hgt    equ    290
  1439. win_hgt    equ    117
  1440. win_str    equ    $1a
  1441.         endc
  1442.  
  1443. ;    a0=variabelen tabel
  1444. ;    d0=routinfo
  1445.  
  1446. ;rotbigscroll
  1447. ;ntscver
  1448.  
  1449. rots_high    equ    0;$8000
  1450. rots_lace    equ    0;$0004
  1451. rots_vew    equ    rots_high+rots_lace
  1452. rots_dpt    equ    1
  1453. rots_del    equ    0
  1454.  
  1455.     ifeq    rots_high-0
  1456. rotv_wid    equ    (48/1)        ;actual view lores
  1457. rots_cen    equ    0
  1458.     endc
  1459.     ifeq    rots_high-$8000
  1460. rotv_wid    equ    (96/1)        ;actual view hires
  1461. rots_cen    equ    8
  1462.     endc
  1463.     
  1464.     ifnd    ntscver
  1465.     ifeq    rots_lace-0
  1466. rotv_hgt    equ    290+64        ;actual view nolace
  1467.     endc
  1468.     ifeq    rots_lace-4
  1469. rotv_hgt    equ    (290*2)+64        ;actual view lace
  1470.     endc
  1471.     endc
  1472.     ifd    ntscver
  1473.     ifeq    rots_lace-0
  1474. rotv_hgt    equ    290+64-56        ;actual view nolace
  1475.     endc
  1476.     ifeq    rots_lace-4
  1477. rotv_hgt    equ    ((290-56)*2)+64    ;actual view lace
  1478.     endc
  1479.     endc
  1480.         
  1481.     ifeq    rots_vew-0        ;lo-res
  1482.  
  1483.     ifeq    rots_dpt-1
  1484.     ifnd    ntscver
  1485. rotc_hgtx    equ    160        ;maximale characterhoogte
  1486. rotc_hgty    equ    80+8        ;maximale characterhoogte
  1487. rotc_wid    equ    ((rotc_hgtx*2)+15)/16*2    ;maximale characterbreedte
  1488. rots_scrwid equ    (0/1)        ;aantal -bytes voor y-scroll
  1489.     endc
  1490.     ifd    ntscver
  1491. rotc_hgtx    equ    144        ;maximale characterhoogte
  1492. rotc_hgty    equ    24+8        ;maximale characterhoogte
  1493. rotc_wid    equ    ((rotc_hgtx*2)+15)/16*2    ;maximale characterbreedte
  1494. rots_scrwid equ    16        ;aantal -bytes voor y-scroll
  1495.     endc
  1496.     endc
  1497.  
  1498.     ifeq    rots_dpt-2
  1499. rotc_hgtx    equ    80        ;maximale characterhoogte
  1500. rotc_hgty    equ    88+8        ;maximale characterhoogte
  1501. rotc_wid    equ    ((rotc_hgtx*2)+15)/16*2    ;maximale characterbreedte
  1502. rots_scrwid equ    (0/1)        ;aantal -bytes voor y-scroll
  1503.     endc
  1504.  
  1505.     ifeq    rots_dpt-3
  1506.     ifnd    rotbigscroll
  1507.     ifnd    ntscver
  1508. rotc_hgtx    equ    36        ;maximale characterhoogte
  1509. rotc_hgty    equ    40+8        ;maximale characterhoogte
  1510. rots_scrwid equ    8        ;aantal -bytes voor y-scroll
  1511.     endc
  1512.     ifd    ntscver
  1513. rotc_hgtx    equ    16        ;maximale characterhoogte
  1514. rotc_hgty    equ    16+8        ;maximale characterhoogte
  1515. rots_scrwid equ    8        ;aantal -bytes voor y-scroll
  1516.     endc
  1517.     endc
  1518.     ifd    rotbigscroll
  1519.     ifnd    ntscver
  1520. rotc_hgtx    equ    80        ;maximale characterhoogte
  1521. rotc_hgty    equ    88+8        ;maximale characterhoogte
  1522. rots_scrwid equ    0        ;aantal -bytes voor y-scroll
  1523.     endc
  1524.     ifd    ntscver
  1525. rotc_hgtx    equ    110        ;maximale characterhoogte
  1526. rotc_hgty    equ    88+8        ;maximale characterhoogte
  1527. rots_scrwid equ    0        ;aantal -bytes voor y-scroll
  1528.     endc
  1529.     endc
  1530. rotc_wid    equ    ((rotc_hgtx*2)+15)/16*2    ;maximale characterbreedte
  1531.     endc
  1532.  
  1533.     ifeq    rots_dpt-4
  1534.     ifnd    ntscver
  1535. rotc_hgtx    equ    56        ;maximale characterhoogte
  1536. rotc_hgty    equ    56+8        ;maximale characterhoogte
  1537. rotc_wid    equ    ((rotc_hgtx*2)+15)/16*2    ;maximale characterbreedte
  1538. rots_scrwid equ    (0/1)        ;aantal -bytes voor y-scroll
  1539.     endc
  1540.     ifd    ntscver
  1541. rotc_hgtx    equ    40        ;maximale characterhoogte
  1542. rotc_hgty    equ    40+8        ;maximale characterhoogte
  1543. rotc_wid    equ    ((rotc_hgtx*2)+15)/16*2    ;maximale characterbreedte
  1544. rots_scrwid equ    (0/1)        ;aantal -bytes voor y-scroll
  1545.     endc
  1546.     endc
  1547.  
  1548.     ifeq    rots_dpt-5
  1549.     ifnd    ntscver
  1550. rotc_hgtx    equ    36        ;maximale characterhoogte
  1551. rotc_hgty    equ    40+8        ;maximale characterhoogte
  1552. rotc_wid    equ    ((rotc_hgtx*2)+15)/16*2    ;maximale characterbreedte
  1553. rots_scrwid equ    (0/1)    ;aantal -bytes voor y-scroll
  1554.     endc
  1555.     ifd    ntscver
  1556. rotc_hgtx    equ    32        ;maximale characterhoogte
  1557. rotc_hgty    equ    40+8        ;maximale characterhoogte
  1558. rotc_wid    equ    ((rotc_hgtx*2)+15)/16*2    ;maximale characterbreedte
  1559. rots_scrwid equ    (0/1)    ;aantal -bytes voor y-scroll
  1560.     endc
  1561.     endc
  1562.     endc
  1563.     
  1564.     ifeq    rots_vew-$8004    ;hi-res interlace
  1565.     ifeq    rots_dpt-1
  1566. rotc_hgtx    equ    80        ;maximale characterhoogte
  1567. rotc_hgty    equ    56+8        ;maximale characterhoogte
  1568. rotc_wid    equ    ((rotc_hgtx*2)+15)/16*2    ;maximale characterbreedte
  1569. rots_scrwid equ    16        ;aantal -bytes voor y-scroll
  1570.     endc
  1571.  
  1572.     ifeq    rots_dpt-2
  1573.     ifnd    ntscver
  1574. rotc_hgtx    equ    72        ;maximale characterhoogte
  1575. rotc_hgty    equ    72+8        ;maximale characterhoogte
  1576. rotc_wid    equ    ((rotc_hgtx*2)+15)/16*2    ;maximale characterbreedte
  1577. rots_scrwid equ    16    ;aantal -bytes voor y-scroll
  1578.     endc
  1579.     ifd    ntscver
  1580. rotc_hgtx    equ    48        ;maximale characterhoogte
  1581. rotc_hgty    equ    48+8        ;maximale characterhoogte
  1582. rotc_wid    equ    ((rotc_hgtx*2)+15)/16*2    ;maximale characterbreedte
  1583. rots_scrwid equ    16    ;aantal -bytes voor y-scroll
  1584.     endc
  1585.     endc
  1586.  
  1587.     ifeq    rots_dpt-3
  1588. rotc_hgtx    equ    48        ;maximale characterhoogte
  1589. rotc_hgty    equ    48+8        ;maximale characterhoogte
  1590. rotc_wid    equ    ((rotc_hgtx*2)+15)/16*2    ;maximale characterbreedte
  1591. rots_scrwid equ    16    ;aantal -bytes voor y-scroll
  1592.     endc
  1593.  
  1594.     ifeq    rots_dpt-4
  1595. rotc_hgtx    equ    48        ;maximale characterhoogte
  1596. rotc_hgty    equ    48+8        ;maximale characterhoogte
  1597. rotc_wid    equ    ((rotc_hgtx*2)+15)/16*2    ;maximale characterbreedte
  1598. rots_scrwid equ    16    ;aantal -bytes voor y-scroll
  1599.     endc
  1600.     endc
  1601.     
  1602. rots_hgt    equ    (rotv_hgt+(2*rotc_hgty))
  1603. rots_wid    equ    (rotv_wid+(2*rotc_wid))
  1604.  
  1605. rots_blit    equ    8    ;aantal -bytes voor y-scroll
  1606.  
  1607.     SECTION    3,CODE_C
  1608.  
  1609. rot
  1610.     dc.l    'ROUT'
  1611.     movem.l    d3-d7/a1-a6,-(sp)
  1612.  
  1613.     lea    ($dff000).l,a6    ;hardware
  1614.     lea    rot,a5        ;prog base
  1615.  
  1616. ;    ifeq    rots_dpt-1
  1617. ;    eor.l    #rotpic2-rotpic1,rotdub-rot(a5)
  1618. ;    endc
  1619.     
  1620.     move.l    a0,rotvar-rot(a5)    ;var table
  1621.     moveq.l    #0,d1        ;info ombouwen
  1622.  
  1623.     bsr    rotfonset        ;set current font
  1624.     lea    var_txt1(a0),a0
  1625.  
  1626.     move.l    #0,d2        ;test bit
  1627.     lea    rottnew,a1        ;new text
  1628.     lea    rottpos,a2        ;pos text
  1629.     lea    rotscr,a4        ;rout scroll
  1630.     bsr    rotctr
  1631.  
  1632.     lea    rotpic1,a0
  1633.     add.l    rotdub-rot(a5),a0
  1634.     moveq.l    #0,d1
  1635.  
  1636. ;    ifne    rots_dpt-1
  1637.     eor.l    #rotpic2-rotpic1,rotdub-rot(a5)
  1638. ;    endc
  1639.     
  1640.     move.l    #rots_del,d2    ;interrupt delay
  1641.     cmp.l    #3,rotmod-rot(a5)    ;y scroll ?
  1642.     beq    rotstr.y
  1643.     cmp.l    #4,rotmod-rot(a5)    ;y scroll ?
  1644.     beq    rotstr.y
  1645.     moveq.l    #0,d2        ;no delay
  1646. rotstr.y
  1647.     movem.l    (sp)+,d3-d7/a1-a6
  1648.     rts
  1649.  
  1650. rotctr
  1651.     move.l    (a0)+,d0
  1652.     tst.l    d0
  1653.     beq    rotctr.end        ;leeg ?
  1654.  
  1655.     cmp.l    (a1),d0        ;zelfde text ?
  1656.     beq    rotctr.aa
  1657.     move.l    d0,(a1)        ;nieuwe text
  1658.     move.l    d0,(a2)        ;start text
  1659. rotctr.aa
  1660.     jsr    (a4)        ;scrollen
  1661. rotctr.end
  1662.     rts
  1663.     
  1664. rotchg                ;change font (a2 komt terug)
  1665.     movem.l    d0-d7/a0/a1/a3-a6,-(sp)
  1666.  
  1667.     move.b    (a2)+,d1
  1668.     bsr    rotnum        ;a2=string = d0=nummer
  1669.  
  1670.     cmp.b    #'F',d1
  1671.     beq    rotchg.bb
  1672.     cmp.b    #'f',d1
  1673.     beq    rotchg.bb
  1674.  
  1675.     cmp.b    #'C',d1
  1676.     beq    rotchg.c
  1677.     cmp.b    #'c',d1
  1678.     beq    rotchg.c
  1679.  
  1680.     cmp.b    #'S',d1
  1681.     beq    rotchg.d
  1682.     cmp.b    #'s',d1
  1683.     beq    rotchg.d
  1684.  
  1685.     cmp.b    #'M',d1
  1686.     beq    rotchg.e
  1687.     cmp.b    #'m',d1
  1688.     beq    rotchg.e
  1689.  
  1690.     cmp.b    #'X',d1
  1691.     beq    rotchg.f
  1692.     cmp.b    #'x',d1
  1693.     beq    rotchg.f
  1694.  
  1695.     cmp.b    #'Y',d1
  1696.     beq    rotchg.g
  1697.     cmp.b    #'y',d1
  1698.     beq    rotchg.g
  1699.  
  1700.     cmp.b    #'E',d1
  1701.     beq    rotchg.h
  1702.     cmp.b    #'e',d1
  1703.     beq    rotchg.h
  1704.  
  1705.     cmp.b    #'D',d1
  1706.     beq    rotchg.i
  1707.     cmp.b    #'d',d1
  1708.     beq    rotchg.i
  1709.  
  1710.     bra    rotchg.end
  1711.  
  1712. rotchg.bb                ;change font
  1713. ;    lsl.l    #2,d0        ;*4
  1714.     add.l    d0,d0
  1715.     add.l    d0,d0
  1716.     
  1717.     move.l    d0,rotc_fonnum-rot(a5)
  1718.     bsr    rotfonset
  1719.     bra    rotchg.end
  1720.     
  1721. rotchg.c                ;change color
  1722.     move.l    d0,rotcol-rot(a5)
  1723.     bra    rotchg.end
  1724.     
  1725. rotchg.d                ;change speed
  1726.     move.l    d0,rotspd-rot(a5)
  1727.     bra    rotchg.end
  1728.     
  1729. rotchg.e                ;change mode
  1730.     move.l    d0,rotmod-rot(a5)
  1731.     bra    rotchg.end
  1732.     
  1733. rotchg.f                ;change x pos
  1734.     add.l    #rotc_wid*8,d0
  1735.     move.l    d0,rotpsx-rot(a5)
  1736.     bra    rotchg.end
  1737.     
  1738. rotchg.g                ;change y pos
  1739.     add.l    #rotc_hgty,d0
  1740.     move.l    #rotv_hgt+rotc_hgty,d1    ;max check
  1741.     cmp.w    d1,d0
  1742.     ble    rotchg.ga
  1743.     move.l    d1,d0
  1744. rotchg.ga
  1745.     move.l    d0,rotpsy-rot(a5)
  1746.     bra    rotchg.end
  1747.     
  1748. rotchg.h                ;screenclear
  1749. ;    lea    rotpln1,a1
  1750. ;    move.l    #rots_hgt*rots_wid*rots_dpt,d0
  1751. ;    move.l    rotvar-rot(a5),a0    ;vartab
  1752. ;    move.l    var_gfxlib(a0),a6    ;graphics lib halen
  1753. ;    move.l    #$0000,d1        ;fill ?
  1754. ;    movem.l    d0-d7/a0-a6,-(sp)
  1755. ;    jsr    -$12c(a6)        ;blitter clear scherm 1
  1756. ;    movem.l    (sp)+,d0-d7/a0-a6
  1757. ;    bsr    rotwit        ;blitwait
  1758. ;    lea    rotpln1,a1
  1759. ;    add.l    #rotpln2-rotpln1,a1
  1760. ;    movem.l    d0-d7/a0-a6,-(sp)
  1761. ;    jsr    -$12c(a6)        ;blitter clear scherm 1
  1762. ;    movem.l    (sp)+,d0-d7/a0-a6
  1763. ;    bsr    rotwit        ;blitwait
  1764.  
  1765.     lea    rotpln1,a0
  1766.     add.l    #(rots_wid-rotv_wid)/2,a0    ;xstart
  1767.     add.l    #rotc_hgty*rots_wid*rots_dpt,a0    ;ystart
  1768.  
  1769.     move.l    rotdub-rot(a5),d0
  1770.     add.l    d0,a0            ;destination
  1771.  
  1772.     move.l    #rotv_hgt/rots_blit,d5 ;in rots_blit stappen
  1773.  
  1774.     muls    #rots_dpt,d5
  1775.     move.l    d5,d1
  1776.     muls    #rots_wid,d1
  1777.     lsl.l    #6,d5            ;*64
  1778.     add.l    #(rotv_wid)/2,d5
  1779.  
  1780.     move.w    #0,$042(a6)
  1781.     move.w    #$100+$f0,$040(a6)
  1782.  
  1783.     move.w    #rots_wid-rotv_wid,$064(a6)
  1784.     move.w    #rots_wid-rotv_wid,$066(a6)
  1785.  
  1786. ;    move.w    #0,$070(a6)        ;c dat
  1787. ;    move.w    #0,$072(a6)        ;b dat
  1788.  
  1789.     move.w    #0,$074(a6)        ;a dat
  1790.  
  1791.     move.l    #0,$044(a6)        ;mask
  1792.  
  1793.     move.w    #rots_blit-1,d0
  1794. rotchg.blit
  1795.     move.l    a0,$054(a6)        ;destination
  1796.     move.w    d5,$058(a6)
  1797.     bsr    rotwit
  1798.  
  1799.     add.l    d1,a0
  1800.     dbra    d0,rotchg.blit
  1801.  
  1802.     bra    rotchg.end
  1803.  
  1804. rotchg.i                ;set delay
  1805.     move.l    d0,rotdel-rot(a5)
  1806.     bra    rotchg.end
  1807.     
  1808. rotchg.end
  1809.     movem.l    (sp)+,d0-d7/a0/a1/a3-a6
  1810.     rts
  1811.  
  1812. rotchgc                ;change font (a2 komt terug)
  1813.     movem.l    d0-d7/a0/a1/a3-a6,-(sp)
  1814.  
  1815.     move.b    (a2)+,d1
  1816.     bsr    rotnum
  1817.  
  1818.     cmp.b    #'F',d1        ;fontchange
  1819.     beq    rotchgc.bb
  1820.     cmp.b    #'f',d1
  1821.     beq    rotchgc.bb
  1822.  
  1823.     cmp.b    #'R',d1        ;reverse centreren
  1824.     beq    rotchgc.j
  1825.     cmp.b    #'r',d1
  1826.     beq    rotchgc.j
  1827.  
  1828.     bra    rotchgc.end
  1829.  
  1830. rotchgc.bb                ;change font
  1831. ;    lsl.l    #2,d0        ;*4
  1832.     add.l    d0,d0
  1833.     add.l    d0,d0
  1834.  
  1835.     move.l    d0,rotc_fonnum-rot(a5)
  1836.     bsr    rotfonset
  1837.     bra    rotchgc.end
  1838.     
  1839. rotchgc.j                ;reverse centering
  1840.     add.l    #rotc_wid*8,d0
  1841.     move.l    d0,rotrev-rot(a5)
  1842.     bra    rotchgc.end
  1843.     
  1844. rotchgc.end
  1845.     movem.l    (sp)+,d0-d7/a0/a1/a3-a6
  1846.     rts
  1847.  
  1848. rotfonset                ;set current font
  1849.     movem.l    d0-d7/a0-a6,-(sp)
  1850.  
  1851.     move.l    rotvar-rot(a5),a1    ;vartab
  1852.     add.l    rotc_fonnum-rot(a5),a1    ;fontnummer
  1853.     move.l    var_fon1(a1),a2    ;fonttabel
  1854.  
  1855.     clr.l    rotc_fon-rot(a5)    ;huidige font wissen
  1856.  
  1857.     cmp.l    #'FONT',(a2)    ;is ut fontje ?
  1858.     bne    rotfonset.end
  1859.  
  1860.     move.l    a2,rotc_fon-rot(a5)    ;huidige font zetten
  1861.  
  1862. ;    move.l    fon_wid(a2),rotc_maxx-rot(a5)
  1863. rotfonset.bb
  1864.  
  1865. rotfonset.end
  1866.     movem.l    (sp)+,d0-d7/a0-a6
  1867.     rts
  1868.  
  1869. rotscr
  1870.     movem.l    d0-d7/a0-a6,-(sp)
  1871.  
  1872.     tst.l    rotdel-rot(a5)    ;delay ?
  1873.     beq    rotscr.nodel
  1874.     sub.l    #1,rotdel-rot(a5)    ;delay aftellen
  1875. rotscr.nodel
  1876.  
  1877.     tst.l    rottnew-rot(a5)    ;leeg text ?
  1878.     bne    rotscr.a
  1879.     tst.l    rottpos-rot(a5)    ;leeg text ?
  1880.     beq    rotscr.end
  1881.     clr.l    rottpos-rot(a5)
  1882.     bra    rotscr.end
  1883.  
  1884. rotscr.a
  1885.     cmp.l    #3,rotmod-rot(a5)    ;y scroll ?
  1886.     beq    rotscr.y
  1887.     cmp.l    #4,rotmod-rot(a5)    ;y scroll ?
  1888.     bne    rotscr.noy
  1889. rotscr.y
  1890.     bsr    roty
  1891.     bra    rotscr.end
  1892. rotscr.noy
  1893.     cmp.l    #5,rotmod-rot(a5)    ;page ?
  1894.     bne    rotscr.nop
  1895.     bsr    rotp
  1896.     bra    rotscr.end
  1897. rotscr.nop
  1898.     clr.l    rotchrn-rot(a5)    ;geen geblerk met y
  1899.     bsr    rotx        ;x scroll
  1900. rotscr.end
  1901.     movem.l    (sp)+,d0-d7/a0-a6
  1902.     rts
  1903.     
  1904.  
  1905.  
  1906.  
  1907.  
  1908. rotp
  1909.     movem.l    d0-d7/a0-a6,-(sp)        ;page
  1910.     
  1911.     tst.l    rotc_fon-rot(a5)        ;font leeg ?
  1912.     beq    rotp.end
  1913.     move.l    rotc_fon-rot(a5),a1
  1914.  
  1915.     lea    rotpln1,a2
  1916.     add.l    #(rots_wid-rotv_wid)/2,a2;xstart
  1917.     add.l    #rotc_hgty*rots_wid*rots_dpt,a2    ;ystart
  1918.     move.l    a2,a0            ;destination
  1919.  
  1920.     move.l    rotdub-rot(a5),d0
  1921.     add.l    d0,a0            ;destination
  1922.     eor.l    #rotpic2-rotpic1,d0
  1923.     add.l    d0,a2            ;source
  1924.  
  1925.     move.l    #rotv_hgt/rots_blit,d5 ;in rots_blit stappen
  1926.  
  1927.     muls    #rots_dpt,d5
  1928.     move.l    d5,d1
  1929.     muls    #rots_wid,d1
  1930.     lsl.l    #6,d5            ;*64
  1931.     add.l    #(rotv_wid)/2,d5
  1932.  
  1933. ;    move.w    #$4000,$09a(a6)    ;masterinterrupt
  1934.  
  1935.     move.w    #0,$042(a6)
  1936.     move.w    #$900+$f0,$040(a6)
  1937.  
  1938.     move.w    #rots_wid-rotv_wid,$064(a6)
  1939.     move.w    #rots_wid-rotv_wid,$066(a6)
  1940.     move.w    #%1111111111111111,$044(a6)
  1941.     move.w    #%1111111111111111,$046(a6)
  1942.  
  1943.     move.w    #rots_blit-1,d0
  1944. rotp.blit
  1945.     move.l    a2,$050(a6)        ;source
  1946.     move.l    a0,$054(a6)        ;destination
  1947.     move.w    d5,$058(a6)
  1948.     bsr    rotwit
  1949. ;    move.w    #$c000,$09a(a6)    ;masterinterrupt
  1950.  
  1951.     add.l    d1,a0
  1952.     add.l    d1,a2
  1953.     dbra    d0,rotp.blit
  1954.  
  1955.     tst.l    rotdel-rot(a5)    ;delay ?
  1956.     bne    rotp.end
  1957.  
  1958. rotp.char
  1959.     move.l    rottpos-rot(a5),a2    ;textpos
  1960.     move.l    #8,rotmaxr-rot(a5)    ;max regelhoogte wissen
  1961.  
  1962.     lea    fon_widtab(a1),a3
  1963.     moveq.l    #0,d1        ;text lengte
  1964.     moveq.l    #0,d2        ;aantal chars
  1965.     moveq.l    #0,d3        ;reverse
  1966. rotp.a                ;text lengte tellen
  1967.     tst.b    (a2)+        ;einde text ?
  1968.     beq    rotp.bb
  1969.     cmp.b    #$a,-1(a2)
  1970.     beq    rotp.bb
  1971.  
  1972.     moveq.l    #0,d7
  1973.     move.b    -1(a2),d7
  1974.     cmp.b    #'_',d7
  1975.     bne    rotp.nocom
  1976.  
  1977.     bsr    rotchgc        ;handle command
  1978.  
  1979.     tst.l    rotrev-rot(a5)    ;reverse centreren ?
  1980.     beq    rotp.norev
  1981.     move.l    rotrev-rot(a5),d0    ;reverse punt
  1982.     clr.l    rotrev-rot(a5)    ;reverse wissen
  1983.     sub.l    d1,d0        ;-huidige lengte
  1984.     cmp.w    #0,d0
  1985.     bge    rotp.revk
  1986.     moveq.l    #0,d0
  1987. rotp.revk
  1988.     move.l    d0,d3
  1989.  
  1990. rotp.norev
  1991.     tst.l    rotc_fon-rot(a5)    ;font opnieuw halen
  1992.     beq    rotp.end
  1993.     move.l    rotc_fon-rot(a5),a1
  1994.     lea    fon_widtab(a1),a3
  1995.     bra    rotp.a
  1996.  
  1997. rotp.nocom
  1998.     move.l    fon_hgt(a1),d0
  1999.     cmp.w    2+rotmaxr-rot(a5),d0    ;maxy check
  2000.     blt    rotp.notbigger2
  2001.     move.l    d0,rotmaxr-rot(a5)
  2002. rotp.notbigger2
  2003.  
  2004. ;    lsl.l    #1,d7
  2005.     add.l    d7,d7
  2006.  
  2007.     add.w    (a3,d7),d1        ;breedte karakter optellen
  2008.     add.l    #1,d2        ;aantal karakters
  2009.     bra    rotp.a
  2010.  
  2011.  
  2012. rotp.bb
  2013.     cmp.l    #(rotv_wid)*8,d1    ;beeld breedte
  2014.     ble    rotp.cx
  2015.     move.l    #(rotv_wid)*8,d1
  2016. rotp.cx
  2017.     tst.l    d3        ;reverse centreren ?
  2018.     beq    rotp.mid 
  2019.     move.l    d3,rotpsx-rot(a5)
  2020.     bra    rotp.rev
  2021.  
  2022. rotp.mid
  2023.     move.l    #(rots_wid+rots_cen)*4,d5    ;beeld breedte
  2024.     lsr.l    #1,d1        ;/2
  2025.     sub.l    d1,d5        ;xpos
  2026.     move.l    d5,rotpsx-rot(a5)
  2027. rotp.rev
  2028.  
  2029.     move.l    d2,rotchrn-rot(a5)    ;aantal characters
  2030.     move.l    rotmaxr-rot(a5),d0    ;hoogte regel
  2031.     move.l    rotspd-rot(a5),d1    ;snelheid
  2032.     add.l    #1,d1
  2033.     divs    d1,d0        ;hoogte/snelheid
  2034.     and.l    #$ffff,d0
  2035.     divs    d0,d2        ;aantal chars/(hoogte/snelheid)
  2036.     add.w    #1,d2
  2037.     move.w    d2,2+rotchrvb-rot(a5)    ;aantal per vb
  2038.  
  2039.     clr.l    rotchrp-rot(a5)
  2040. rotp.print
  2041.     lea    fon_widtab(a1),a3
  2042.  
  2043.     lea    rotpln1,a0        ;text printen
  2044.     add.l    rotdub-rot(a5),a0
  2045.  
  2046.     move.l    rotchrvb-rot(a5),d1    ;aantal chars per keer
  2047.     move.l    rottpos-rot(a5),a2    ;textpos
  2048.     move.l    rotchrp-rot(a5),d3    ;hoogte aanpassing
  2049.  
  2050.     move.l    rotspd-rot(a5),d0
  2051.     add.l    #1,d0
  2052.     muls    d0,d3
  2053.  
  2054.     add.l    #1,rotchrp-rot(a5)
  2055. rotp.c
  2056.     tst.b    (a2)+
  2057.     beq    rotp.gb
  2058.     cmp.b    #$a,-1(a2)
  2059.     beq    rotp.d
  2060.  
  2061.     moveq.l    #0,d7
  2062.     move.b    -1(a2),d7
  2063.  
  2064.     cmp.b    #'_',d7
  2065.     bne    rotp.nocom2
  2066.     bsr    rotchg        ;handle command
  2067.  
  2068.     cmp.l    #5,rotmod-rot(a5)    ;andere mode ?
  2069.     bne    rotp.reset
  2070.  
  2071.  
  2072.     tst.l    rotc_fon-rot(a5)    ;font opnieuw halen
  2073.     beq    rotp.end
  2074.     move.l    rotc_fon-rot(a5),a1
  2075.     lea    fon_widtab(a1),a3    ;breedte opnieuw halen
  2076.     bra    rotp.c
  2077. rotp.nocom2
  2078.     move.l    d7,d2
  2079.  
  2080. ;    lsl.l    #1,d2
  2081.     add.l    d2,d2
  2082.     
  2083.     tst.w    (a3,d2)        ;karakter leeg ?
  2084.     beq    rotp.c
  2085.  
  2086.     move.l    fon_hgt(a1),d4
  2087.     cmp.w    2+rotmaxr-rot(a5),d4    ;maxy check
  2088.     blt    rotp.notbigger
  2089.     move.l    d4,rotmaxr-rot(a5)
  2090. rotp.notbigger
  2091.  
  2092.     move.l    rotpsx-rot(a5),d4    ;huidige x-positie
  2093.     add.w    (a3,d2),d4
  2094.  
  2095.     cmp.w    #(rotc_wid+rotv_wid)*8,d4    ;beeld breedte
  2096.     bgt    rotp.caa        ;randje bereikt ?
  2097.  
  2098.     move.l    rotmaxr-rot(a5),d6    maxy
  2099.     sub.l    fon_hgt(a1),d6    ;-huidige y
  2100.     lsr.l    #1,d6        ;/2
  2101.     add.l    rotpsy-rot(a5),d6    ;huidig ypos
  2102.     sub.l    d3,d6        ;hoogte aanpassing
  2103.  
  2104.     move.l    #rotv_hgt+rotc_hgty,d4
  2105.     cmp.l    d4,d6
  2106.     ble    rotp.nomaxy
  2107.     move.l    d4,d6
  2108. rotp.nomaxy
  2109.  
  2110.     move.l    rotcol-rot(a5),d4    ;kleur
  2111.     move.l    rotpsx-rot(a5),d5    ;huidge x-pos halen
  2112.     bsr    rotchr
  2113.  
  2114. rotp.caa
  2115.     move.w    (a3,d2),d4
  2116.     add.w    d4,2+rotpsx-rot(a5)    ;xpos
  2117.  
  2118.     sub.l    #1,rotchrn-rot(a5)    ;chars aftellen
  2119.     tst.l    rotchrn-rot(a5)
  2120.     beq    rotp.d        ;klaar voor nu
  2121.     bra    rotp.c
  2122.  
  2123. rotp.gb
  2124.     move.l    rottnew-rot(a5),rottpos-rot(a5)    ;einde scroll
  2125.     bra    rotp.end
  2126.  
  2127. rotp.d
  2128.     clr.l    rotchrvb-rot(a5)
  2129.     clr.l    rotchrn-rot(a5)
  2130.     move.l    a2,rottpos-rot(a5)
  2131.  
  2132.     move.l    rotmaxr-rot(a5),d0    ;max hoogte
  2133.     add.l    d0,rotpsy-rot(a5)    ;huidig ypos
  2134.  
  2135.     tst.l    rotdel-rot(a5)    ;geen delay=volgend regel
  2136.     beq    rotp.char
  2137.     bra    rotp.end
  2138.     
  2139. rotp.reset
  2140.     bsr    rotres
  2141. rotp.end
  2142.     movem.l    (sp)+,d0-d7/a0-a6
  2143.     rts
  2144.  
  2145.  
  2146. roty
  2147.     movem.l    d0-d7/a0-a6,-(sp)    ;y scroll
  2148.     
  2149.     tst.l    rotc_fon-rot(a5)    ;font leeg ?
  2150.     beq    roty.end
  2151.     move.l    rotc_fon-rot(a5),a1
  2152.  
  2153.     lea    rotpln1,a2
  2154.     add.l    #(rots_wid-(rotv_wid-rots_scrwid-rots_cen))/2,a2;xstart
  2155.     add.l    #rotc_hgty*rots_wid*rots_dpt,a2    ;ystart
  2156.     move.l    a2,a0            ;destination
  2157.  
  2158.     move.l    rotdub-rot(a5),d0
  2159.     add.l    d0,a0            ;destination
  2160.     eor.l    #rotpic2-rotpic1,d0
  2161.     add.l    d0,a2            ;source
  2162.  
  2163.     moveq.l    #0,d6
  2164.     tst.l    rotdel-rot(a5)    ;delay ?
  2165.     bne    roty.nomov
  2166.     move.l    rotspd-rot(a5),d6
  2167.     add.l    #1,d6
  2168. roty.nomov
  2169.  
  2170.     move.l    #(rotv_hgt+rotc_hgty)/rots_blit,d5 ;in rots_blit stappen
  2171.     move.l    d6,d0
  2172.     divs    #rots_blit,d0
  2173.     and.l    #$ffff,d0
  2174.     add.l    #1,d0
  2175.     sub.l    d0,d5
  2176.     muls    #rots_dpt,d5
  2177.     move.l    d5,d1
  2178.     muls    #rots_wid,d1
  2179.     lsl.l    #6,d5            ;*64
  2180.     add.l    #(rotv_wid-rots_scrwid)/2,d5
  2181.  
  2182.     muls    #rots_dpt*rots_wid,d6
  2183.     add.l    d6,a2
  2184.     
  2185. ;    move.w    #$4000,$09a(a6)    ;masterinterrupt
  2186.  
  2187.     move.w    #0,$042(a6)
  2188.     move.w    #$900+$f0,$040(a6)
  2189.  
  2190.     move.w    #rots_wid-(rotv_wid-rots_scrwid),$064(a6)
  2191.     move.w    #rots_wid-(rotv_wid-rots_scrwid),$066(a6)
  2192.     move.w    #%1111111111111111,$044(a6)
  2193.     move.w    #%1111111111111111,$046(a6)
  2194.  
  2195.     move.w    #rots_blit-1,d0
  2196. roty.blit
  2197.     move.l    a2,$050(a6)        ;source
  2198.     move.l    a0,$054(a6)        ;destination
  2199.     move.w    d5,$058(a6)
  2200.     bsr    rotwit
  2201. ;    move.w    #$c000,$09a(a6)    ;masterinterrupt
  2202.  
  2203.     add.l    d1,a0
  2204.     add.l    d1,a2
  2205.     dbra    d0,roty.blit
  2206.  
  2207.     tst.l    rotdel-rot(a5)    ;delay ?
  2208.     bne    roty.end
  2209.  
  2210.     tst.b    rotwaitx-rot(a5)    ;regel voorbij ?
  2211.     beq    roty.char
  2212.  
  2213.     tst.l    rotchrn-rot(a5)    ;nog karakters printen ?
  2214.     beq    roty.ga
  2215.     bra    roty.print
  2216.     
  2217. roty.char
  2218.     move.l    rottpos-rot(a5),a2    ;textpos
  2219.     move.l    #8,rotmaxr-rot(a5)    ;max regelhoogte wissen
  2220.  
  2221.     lea    fon_widtab(a1),a3
  2222.     moveq.l    #0,d1        ;text lengte
  2223.     moveq.l    #0,d2        ;aantal chars
  2224.     moveq.l    #0,d3        ;reverse point
  2225. roty.a                ;text lengte tellen
  2226.     tst.b    (a2)+        ;einde text ?
  2227.     beq    roty.bb
  2228.     cmp.b    #$a,-1(a2)
  2229.     beq    roty.bb
  2230.  
  2231.     moveq.l    #0,d7
  2232.     move.b    -1(a2),d7
  2233.     cmp.b    #'_',d7
  2234.     bne    roty.nocom
  2235.  
  2236.     bsr    rotchgc        ;handle command
  2237.  
  2238.     tst.l    rotrev-rot(a5)    ;reverse centreren ?
  2239.     beq    roty.norev
  2240.     move.l    rotrev-rot(a5),d0    ;reverse punt
  2241.     clr.l    rotrev-rot(a5)    ;reverse wissen
  2242.     sub.l    d1,d0        ;-huidige lengte
  2243.     cmp.w    #0,d0
  2244.     bge    roty.revk
  2245.     moveq.l    #0,d0
  2246. roty.revk
  2247.     move.l    d0,d3
  2248.  
  2249. roty.norev
  2250.  
  2251.     tst.l    rotc_fon-rot(a5)    ;font opnieuw halen
  2252.     beq    roty.end
  2253.     move.l    rotc_fon-rot(a5),a1
  2254.     lea    fon_widtab(a1),a3
  2255.     bra    roty.a
  2256.  
  2257. roty.nocom
  2258.     move.l    fon_hgt(a1),d0
  2259.     cmp.w    2+rotmaxr-rot(a5),d0    ;maxy check
  2260.     blt    roty.notbigger2
  2261.     move.l    d0,rotmaxr-rot(a5)
  2262. roty.notbigger2
  2263.  
  2264. ;    lsl.l    #1,d7
  2265.     add.l    d7,d7
  2266.     
  2267.     add.w    (a3,d7),d1        ;breedte karakter optellen
  2268.     add.l    #1,d2        ;aantal karakters
  2269.     bra    roty.a
  2270.  
  2271. roty.bb
  2272.     cmp.l    #(rotv_wid-rots_scrwid)*8,d1    ;beeld breedte
  2273.     ble    roty.cx
  2274.     move.l    #(rotv_wid-rots_scrwid)*8,d1
  2275.  
  2276. roty.cx
  2277.     tst.l    d3        ;reverse centreren ?
  2278.     beq    roty.mid
  2279.     move.l    d3,rotpsx-rot(a5)
  2280.     bra    roty.rev
  2281. roty.mid
  2282.     move.l    #(rots_wid+rots_cen)*4,d5    ;midden centreren
  2283.     lsr.l    #1,d1        ;/2
  2284.     sub.l    d1,d5        ;xpos
  2285.     move.l    d5,rotpsx-rot(a5)
  2286.  
  2287. roty.rev
  2288.     move.l    d2,rotchrn-rot(a5)    ;aantal characters
  2289.     move.l    rotmaxr-rot(a5),d0    ;hoogte regel
  2290.     cmp.w    #32,d0        ;maximaal 32 stappen
  2291.     ble    roty.nocut
  2292.     move.l    #32,d0
  2293. roty.nocut
  2294.     move.l    rotspd-rot(a5),d1    ;snelheid
  2295.     add.l    #1,d1
  2296.     divs    d1,d0        ;hoogte/snelheid
  2297.     and.l    #$ffff,d0
  2298.     divs    d0,d2        ;aantal chars/(hoogte/snelheid)
  2299.     add.w    #1,d2
  2300.     move.w    d2,2+rotchrvb-rot(a5)    ;aantal per vb
  2301.  
  2302.     clr.l    rotchrp-rot(a5)
  2303. roty.print
  2304.     lea    fon_widtab(a1),a3
  2305.  
  2306.     lea    rotpln1,a0        ;text printen
  2307.     add.l    rotdub-rot(a5),a0
  2308.  
  2309.     move.l    rotchrvb-rot(a5),d1    ;aantal chars per keer
  2310.     move.l    rottpos-rot(a5),a2    ;textpos
  2311.     move.l    rotchrp-rot(a5),d3    ;hoogte aanpassing
  2312.  
  2313.     move.l    rotspd-rot(a5),d0
  2314.     add.l    #1,d0
  2315.     muls    d0,d3
  2316.  
  2317.     add.l    #1,rotchrp-rot(a5)    ;1 lijn hoger printen
  2318. roty.c
  2319.     tst.b    (a2)+
  2320.     beq    roty.gb
  2321.     cmp.b    #$a,-1(a2)
  2322.     beq    roty.d
  2323.  
  2324.     moveq.l    #0,d7
  2325.     move.b    -1(a2),d7
  2326.  
  2327.     cmp.b    #'_',d7
  2328.     bne    roty.nocom2
  2329.     bsr    rotchg        ;handle command
  2330.  
  2331.     cmp.l    #3,rotmod-rot(a5)    ;y scroll ?
  2332.     beq    roty.cont
  2333.     cmp.l    #4,rotmod-rot(a5)    ;y scroll ?
  2334.     bne    roty.reset
  2335. roty.cont
  2336.  
  2337.     tst.l    rotc_fon-rot(a5)    ;font opnieuw halen
  2338.     beq    roty.end
  2339.     move.l    rotc_fon-rot(a5),a1
  2340.     lea    fon_widtab(a1),a3    ;breedte opnieuw halen
  2341.     bra    roty.c
  2342. roty.nocom2
  2343.     move.l    d7,d2
  2344. ;    lsl.l    #1,d2
  2345.     add.l    d2,d2
  2346.  
  2347.     tst.w    (a3,d2)        ;karakter leeg ?
  2348.     beq    roty.c
  2349.  
  2350.     move.l    fon_hgt(a1),d4
  2351.     cmp.w    2+rotmaxr-rot(a5),d4    ;maxy check
  2352.     blt    roty.notbigger
  2353.     move.l    d4,rotmaxr-rot(a5)
  2354. roty.notbigger
  2355.  
  2356.     move.l    rotpsx-rot(a5),d4    ;huidige x-positie
  2357.     add.w    (a3,d2),d4
  2358.  
  2359.     cmp.w    #(rotc_wid+rotv_wid)*8,d4    ;beeld breedte
  2360.     bgt    roty.caa        ;randje bereikt ?
  2361.  
  2362.     move.l    rotmaxr-rot(a5),d6    ;maxy
  2363.     sub.l    fon_hgt(a1),d6    ;-huidige y
  2364.     lsr.l    #1,d6        ;/2
  2365.     add.l    #rotv_hgt+rotc_hgty,d6    ;ypos
  2366.     sub.l    d3,d6        ;hoogte aanpassing
  2367.         
  2368.     move.l    rotcol-rot(a5),d4    ;kleur
  2369.     move.l    rotpsx-rot(a5),d5    ;huidge x-pos halen
  2370.     bsr    rotchr
  2371.  
  2372. roty.caa
  2373.     move.w    (a3,d2),d4
  2374.     add.w    d4,2+rotpsx-rot(a5)    ;xpos
  2375.  
  2376.     sub.l    #1,rotchrn-rot(a5)    ;chars aftellen
  2377.     tst.l    rotchrn-rot(a5)
  2378.     beq    roty.d        ;klaar voor nu
  2379.     sub.l    #1,d1        ;vblank aftellen
  2380.     tst.l    d1
  2381.     beq    roty.dj
  2382.     bra    roty.c
  2383.  
  2384. roty.gb
  2385.     move.l    rottnew-rot(a5),rottpos-rot(a5)    ;einde scroll
  2386.     bra    roty.gj
  2387. roty.d
  2388.     clr.l    rotchrvb-rot(a5)
  2389.     clr.l    rotchrn-rot(a5)
  2390. roty.dj
  2391.     move.l    a2,rottpos-rot(a5)
  2392. roty.gc
  2393.     tst.b    rotwaitx-rot(a5)    ;regel voorbij ?
  2394.     bne    roty.ga
  2395.  
  2396. roty.gj
  2397.     move.l    rotmaxr-rot(a5),d0    ;max hoogte
  2398.     move.l    rotspd-rot(a5),d1
  2399.     add.l    #1,d1
  2400.     divs    d1,d0
  2401.     move.b    d0,rotwaitx-rot(a5)
  2402.     bra    roty.end
  2403. roty.ga
  2404.     sub.b    #1,rotwaitx-rot(a5)    ;teller aftellen
  2405. ;roty.gt
  2406.     bra    roty.end
  2407. roty.reset
  2408.     bsr    rotres
  2409. roty.end
  2410.     movem.l    (sp)+,d0-d7/a0-a6
  2411.     rts
  2412.  
  2413.  
  2414. rotx
  2415.     movem.l    d0-d7/a0-a6,-(sp)
  2416.     
  2417.     bsr    rotxc
  2418.     bsr    rotxb
  2419.     
  2420.     movem.l    (sp)+,d0-d7/a0-a6
  2421.     rts
  2422.     
  2423. rotxc                ;karakter zetten
  2424.     movem.l    d0-d7/a0-a6,-(sp)
  2425.  
  2426. rotxc.a
  2427.     tst.l    rotdel-rot(a5)    ;delay ?
  2428.     bne    rotxc.end
  2429.  
  2430.     move.l    rottpos-rot(a5),a2    ;huidige scroll pointer
  2431.     
  2432. rotxc.f
  2433.     tst.b    (a2)        ;einde scroll ?
  2434.     bne    rotxc.g
  2435.     move.l    rottnew-rot(a5),rottpos-rot(a5)    ;scroll opnieuw
  2436.     bra    rotxc.a
  2437. rotxc.g
  2438.     tst.b    rotwaitx-rot(a5)    ;karakter voorbij ?
  2439.     bne    rotxc.c
  2440.  
  2441. rotxc.zb
  2442.     moveq.l    #0,d7
  2443.     move.b    (a2)+,d7
  2444.     cmp.b    #'_',d7        ;commando ?
  2445.     bne    rotxc.za
  2446.  
  2447.     bsr    rotchg        ;handle command
  2448.  
  2449.     tst.l    rotdel-rot(a5)    ;delay ?
  2450.     bne    rotxc.store
  2451.  
  2452.     cmp.l    #3,rotmod-rot(a5)    ;y scroll ?
  2453.     beq    rotxc.reset
  2454.     cmp.l    #4,rotmod-rot(a5)    ;y scroll ?
  2455.     beq    rotxc.reset
  2456.     cmp.l    #5,rotmod-rot(a5)    ;page ?
  2457.     beq    rotxc.reset
  2458.  
  2459.     bra    rotxc.zb
  2460. rotxc.za
  2461.     tst.l    rotc_fon-rot(a5)    ;font leeg ?
  2462.     beq    rotxc.end
  2463.     move.l    rotc_fon-rot(a5),a1
  2464.  
  2465.     move.l    rotpsy-rot(a5),d6    ;ypos & centreren
  2466.  
  2467.     move.l    #rotv_hgt+rotc_hgty,d1
  2468.     cmp.l    d1,d6
  2469.     ble    rotxc.nomaxy2
  2470.     move.l    d1,d6
  2471. rotxc.nomaxy2
  2472.  
  2473.     move.l    fon_hgt(a1),d1
  2474.     lsr.l    #1,d1
  2475.     sub.l    d1,d6
  2476.  
  2477.     moveq.l    #0,d1
  2478.     lea    fon_widtab(a1),a3
  2479.     move.l    d7,d2
  2480. ;    lsl.l    #1,d2        ;*2
  2481.     add.l    d2,d2
  2482.  
  2483.     move.w    (a3,d2),d1        ;karakter breedte
  2484.     tst.w    d1        ;karakter is leeg ?
  2485.     beq    rotxc.zb        ;next karakter
  2486.  
  2487.     move.l    #(rots_wid+rotv_wid)*4,d5    ;xpos
  2488.     cmp.l    #2,rotmod-rot(a5)        ;> scroll ?
  2489.     bne    rotxc.nor
  2490.     move.l    #(rots_wid-rotv_wid)*4,d5    ;xpos
  2491.     sub.l    d1,d5            ;-breedte
  2492. rotxc.nor
  2493.     move.l    rotcol-rot(a5),d4    ;kleur
  2494.  
  2495.     lea    rotpln1,a0
  2496.     move.l    rotdub-rot(a5),d0
  2497.     eor.l    #rotpic2-rotpic1,d0
  2498.     add.l    d0,a0
  2499.     bsr    rotchr        ;print karakter
  2500.  
  2501.     move.l    rotspd-rot(a5),d0
  2502.     add.l    #1,d0
  2503.     divs    d0,d1
  2504.     move.b    d1,rotwaitx-rot(a5)    ;karakter breedte
  2505.     bra    rotxc.store
  2506. rotxc.c
  2507.     sub.b    #1,rotwaitx-rot(a5)    ;karakter delay
  2508.     bra    rotxc.end
  2509. rotxc.reset
  2510.     bsr    rotres
  2511. rotxc.store
  2512.     move.l    a2,rottpos-rot(a5)
  2513. rotxc.end
  2514.     movem.l    (sp)+,d0-d7/a0-a6
  2515.     rts
  2516.  
  2517. rotxb
  2518.     movem.l    d0-d7/a0-a6,-(sp)
  2519.  
  2520.     tst.l    rotc_fon-rot(a5)    ;font leeg ?
  2521.     beq    rotxb.end
  2522.     move.l    rotc_fon-rot(a5),a1
  2523.  
  2524.     lea    rotpln1,a0        ;ycentreren
  2525.  
  2526.     move.l    rotpsy-rot(a5),d0
  2527.  
  2528. ;    move.l    #rotv_hgt+rotc_hgty,d1
  2529. ;    cmp.l    d1,d0
  2530. ;    ble    rotxb.nomaxy
  2531. ;    move.l    d1,d0
  2532. ;rotxb.nomaxy
  2533.  
  2534.     move.l    #rotc_hgtx/2,d1
  2535.     sub.l    d1,d0
  2536.     muls    #rots_wid*rots_dpt,d0
  2537.     add.l    d0,a0
  2538.  
  2539.     add.l    #(rots_wid-rotv_wid)/2,a0    ;xcentreren
  2540.  
  2541.     move.l    a0,a2        ;destination !!!
  2542.  
  2543.     move.l    rotdub-rot(a5),d0
  2544.     add.l    d0,a2        ;destination
  2545.     eor.l    #rotpic2-rotpic1,d0
  2546.     add.l    d0,a0        ;source
  2547.  
  2548.     move.l    rotspd-rot(a5),d6    ;rotate word berekenen
  2549.  
  2550.     cmp.l    #1,rotmod-rot(a5)    ;rechts scroll
  2551.     beq    rotxb.left
  2552.  
  2553.     moveq.l    #0,d0
  2554.     tst.l    rotdel-rot(a5)    ;delay ?
  2555.     bne    rotxb.del1
  2556.  
  2557.     add.l    #1,d6
  2558.     divs    #16,d6
  2559.  
  2560. ;    lsl.w    #1,d6
  2561.     add.w    d6,d6
  2562.  
  2563.     moveq.l    #0,d5
  2564.     move.w    d6,d5
  2565.     clr.w    d6
  2566.     lsr.l    #4,d6
  2567.  
  2568.     sub.l    d5,a0
  2569.     move.l    d6,d0
  2570. rotxb.del1
  2571.     
  2572.     move.w    #%1111111111111111,$044(a6)
  2573.     move.w    #%0,$046(a6)
  2574.  
  2575.     sub.l    rotc_maxx-rot(a5),a0
  2576.     sub.l    rotc_maxx-rot(a5),a2
  2577.     bra    rotxb.xblit
  2578. rotxb.left
  2579.  
  2580.     moveq.l    #0,d0
  2581.     tst.l    rotdel-rot(a5)    ;delay ?
  2582.     bne    rotxb.del2
  2583.  
  2584.     divs    #16,d6
  2585. ;    lsl.w    #1,d6
  2586.     add.w    d6,d6
  2587.     
  2588.     moveq.l    #0,d5
  2589.     move.w    d6,d5
  2590.     clr.w    d6
  2591.     lsr.l    #4,d6
  2592.  
  2593.     add.l    d5,a0        ;links scroll
  2594.     add.l    #2,a0
  2595.     
  2596.     move.l    #$f000,d0
  2597.     sub.l    d6,d0
  2598. rotxb.del2
  2599.  
  2600.     move.w    #%1111111111111111,$044(a6)
  2601.     move.w    #%1111111111111111,$046(a6)
  2602.  
  2603. rotxb.xblit
  2604. ;    move.w    #$4000,$09a(a6)    ;masterinterrupt
  2605.  
  2606.     move.w    d0,$042(a6)
  2607.     add.w    #$900+$f0,d0
  2608.     move.w    d0,$040(a6)
  2609.  
  2610.     move.l    #rots_wid-rotv_wid,d0    ;modulos
  2611.     sub.l    rotc_maxx-rot(a5),d0
  2612.     move.w    d0,$064(a6)
  2613.     move.w    d0,$066(a6)
  2614.  
  2615.     move.l    #rotc_hgtx*rots_dpt*64,d1    ;*depth
  2616. ;    move.l    rotc_maxy-rot(a5),d1    ;hoogte regel
  2617. ;    lsl.l    #6,d1
  2618.  
  2619.     move.l    #rotv_wid,d0
  2620.     add.l    rotc_maxx-rot(a5),d0
  2621.     lsr.l    #1,d0
  2622.     add.w    d1,d0
  2623.     
  2624. rotxb.ka
  2625.     move.l    a0,$050(a6)        ;source
  2626.     move.l    a2,$054(a6)        ;destination
  2627.     move.w    d0,$058(a6)
  2628.     bsr    rotwit
  2629. ;    move.w    #$c000,$09a(a6)    ;masterinterrupt
  2630.  
  2631. rotxb.end
  2632.     movem.l    (sp)+,d0-d7/a0-a6
  2633.     rts
  2634.  
  2635. rotres
  2636.     movem.l    d0-d7/a0-a6,-(sp)
  2637.     clr.l    rotmaxr-rot(a5)
  2638.     clr.l    rotmaxx-rot(a5)
  2639.     clr.l    rotchrn-rot(a5)
  2640.     clr.l    rotchrvb-rot(a5)
  2641.     clr.l    rotchrp-rot(a5)
  2642.     movem.l    (sp)+,d0-d7/a0-a6
  2643.     rts
  2644.  
  2645. rotnum                ;a2=string = d0=nummer
  2646.     movem.l    d1-d7/a0-a1/a3-a6,-(sp)
  2647.  
  2648.     moveq.l    #0,d0
  2649.     move.l    a2,a0    
  2650. rotnum.gb
  2651.     cmp.b    #'0',(a2)+        ;einde nummer zoeken
  2652.     blt    rotnum.ga    
  2653.     cmp.b    #'9',-1(a2)
  2654.     ble    rotnum.gb
  2655. rotnum.ga
  2656.     sub.l    #1,a2
  2657.     move.l    a2,a1        ;einde nummer bewaren
  2658.     
  2659.     cmp.l    a0,a1        ;helemaal niets ?
  2660.     beq    rotnum.end
  2661.     
  2662.     move.l    #1,d3        ;hoogte ascii naar decimaal
  2663. rotnum.c
  2664.     moveq.l    #0,d1
  2665.     move.b    -(a1),d1
  2666.  
  2667.     cmp.b    #'0',d1        ;nummer ?
  2668.     blt    rotnum.ca    
  2669.     cmp.b    #'9',d1
  2670.     bgt    rotnum.ca
  2671.  
  2672.     sub.w    #'0',d1
  2673.     muls    d3,d1
  2674.     add.l    d1,d0
  2675.     muls    #10,d3
  2676.     bra    rotnum.c
  2677.  
  2678. rotnum.ca
  2679. rotnum.end
  2680.     movem.l    (sp)+,d1-d7/a0-a1/a3-a6
  2681.     rts
  2682.     
  2683. ;    Karakter op scherm
  2684. ;    a0=bitplane
  2685. ;    a1=fontfile
  2686. ;    d4=kleur
  2687. ;    d5=x
  2688. ;    d6=y
  2689. ;    d7=karakter
  2690.  
  2691. rotchr
  2692.     movem.l    d0-d7/a0-a6,-(sp)
  2693.  
  2694.     lea    fon_rawpos(a1),a3
  2695.     moveq.l    #0,d0
  2696.     move.b    d7,d0
  2697.  
  2698. ;    lsl.l    #2,d0        ;*4
  2699.     add.l    d0,d0
  2700.     add.l    d0,d0
  2701.  
  2702.     move.l    a1,a2
  2703.  
  2704.     tst.l    (a3,d0)        ;is er char ?
  2705.     beq    rotchr.end
  2706.     
  2707.     add.l    (a3,d0),a2        ;raw planes
  2708.     
  2709.     lea    fon_widtab(a1),a3
  2710.     lsr.l    #1,d0        ;/2
  2711.     move.w    (a3,d0),d3
  2712.     add.w    2+fon_wid(a1),d3    ;+xpos
  2713.     add.w    #16+15,d3        ;wordboven afrond+blitruimte
  2714.     lsr.w    #4,d3        ;/16
  2715.  
  2716. ;    lsl.w    #1,d3        ;*2 D3=wid !!!!!!
  2717.     add.w    d3,d3
  2718.         
  2719.     move.l    d3,d2
  2720.     muls    2+fon_hgt(a1),d2    ;d3=x*y
  2721.  
  2722.     muls    #rots_wid*rots_dpt,d6    ;y
  2723.     add.l    d6,a0
  2724.  
  2725.     divs    #16,d5        ;x
  2726.  
  2727. ;    lsl.w    #1,d5
  2728.     add.w    d5,d5
  2729.     
  2730.     moveq.l    #0,d0
  2731.     move.w    d5,d0
  2732.     add.l    d0,a0        ;destination !
  2733.     clr.w    d5
  2734.     lsr.l    #4,d5
  2735.  
  2736. ;    move.w    #$4000,$09a(a6)
  2737.  
  2738.     move.l    #-1,$044(a6)
  2739.  
  2740.     move.w    d5,$042(a6)        ;x-rol
  2741.     add.w    #$f00+$ca,d5
  2742.     move.w    d5,$040(a6)        ;x-rol
  2743.  
  2744.     move.l    #rots_wid*rots_dpt,d0
  2745.     sub.l    d3,d0
  2746.     move.w    d0,$060(a6)
  2747.  
  2748.     move.w    #0,$062(a6)
  2749.     move.w    #0,$064(a6)
  2750.  
  2751.     move.w    d0,$066(a6)
  2752.  
  2753.     move.l    fon_dpt(a1),d7    ;font depth
  2754.  
  2755.     move.l    a2,a3        ;source=mask
  2756.     cmp.w    #1,d7        ;mask handling
  2757.     beq    rotchr.aa
  2758.     move.l    d2,d0        ;x*y
  2759.     muls    2+fon_dpt(a1),d0    ;*d
  2760.     add.l    d0,a3        ;mask
  2761. rotchr.aa
  2762.     move.l    #rots_dpt,d6
  2763.     cmp.w    d6,d7        ;fontdpt>screendpt ?
  2764.     ble    rotchr.ab
  2765.     move.w    d6,d7
  2766. rotchr.ab
  2767.     sub.w    #1,d6
  2768.     sub.w    #1,d7
  2769.     
  2770.     move.l    fon_hgt(a1),d0    ;bltsiz
  2771.     lsl.l    #6,d0
  2772.     move.l    d3,d1
  2773.     lsr.l    #1,d1
  2774.     add.l    d1,d0
  2775.  
  2776.     tst.w    d7        ;geen colorfont ?
  2777.     beq    rotchr.msk
  2778. rotchr.a    
  2779.     move.l    a0,$048(a6)        ;destination
  2780.     move.l    a2,$04c(a6)        ;source ?
  2781.     move.l    a3,$050(a6)        ;(a3) mask ?
  2782.     move.l    a0,$054(a6)        ;destination
  2783.     move.w    d0,$058(a6)
  2784.     bsr    rotwit
  2785.     add.l    d2,a2        ;x*y
  2786.     add.l    #rots_wid,a0
  2787.     sub.l    #1,d6
  2788.     dbra    d7,rotchr.a
  2789.  
  2790. rotchr.msk
  2791.     cmp.w    #-1,d6        ;alle screenframes gehad ?
  2792.     beq    rotchr.ax
  2793.     moveq.l    #0,d1
  2794. rotchr.ac
  2795.     btst    d1,d4        ;kleur ?
  2796.     beq    rotchr.ad
  2797.     move.l    a0,$048(a6)        ;destination
  2798.     move.l    a3,$04c(a6)        ;mask
  2799.     move.l    a3,$050(a6)        ;mask
  2800.     move.l    a0,$054(a6)        ;destination
  2801.     move.w    d0,$058(a6)
  2802.     bsr    rotwit
  2803. rotchr.ad
  2804.     add.l    #1,d1
  2805.     add.l    #rots_wid,a0
  2806.     dbra    d6,rotchr.ac
  2807.  
  2808. rotchr.ax
  2809. ;    move.w    #$c000,$09a(a6)
  2810. rotchr.end
  2811.     movem.l    (sp)+,d0-d7/a0-a6
  2812.     rts
  2813.  
  2814.     
  2815. rotwit
  2816. rotwit.a
  2817.     btst    #14-8,($dff002).l
  2818.     bne    rotwit.a
  2819.     rts
  2820.     
  2821. rotdub    dc.l    0
  2822.  
  2823. rotc_fon    dc.l    0    ;currentfont
  2824. rotc_fonnum    dc.l    0    ;currentfontnumber
  2825. rotc_maxy    dc.l    rotc_hgty    ;maximale y-waarde
  2826. rotc_maxx    dc.l    rotc_wid    ;maximale x-waarde
  2827.  
  2828. rotrev    dc.l    0    ;delay
  2829. rotdel    dc.l    0    ;delay
  2830. rotpsx    dc.l    0    ;huidige xpos
  2831. rotpsy    dc.l    (rots_hgt/2);huidige ypos
  2832.  
  2833. rotmaxx    dc.l    0    ;
  2834. rotmaxr    dc.l    0    ;maximale regelhoogte
  2835. rotchrn    dc.l    0    ;aantal chars per vb
  2836. rotchrvb    dc.l    0    ;aantal chars per regel
  2837. rotchrp    dc.l    0    ;hoogte aanpassing
  2838.  
  2839. rotvar    dc.l    0
  2840. rotspd    dc.l    0
  2841. rotcol    dc.l    0    ;huidige karakterkleur
  2842. rotmod    dc.l    0
  2843.  
  2844. rottnew    dc.l    0
  2845. rottpos    dc.l    0
  2846.  
  2847. rotwaitx    dc.b    0
  2848.  
  2849.  
  2850. ;pic_wid    equ    4        ;wide in bytes
  2851. ;pic_hgt    equ    6        ;hoogte
  2852. ;pic_dpt    equ    8        ;number planes
  2853. ;pic_ani    equ    10        ;aantal effes (anim)
  2854. ;pic_vew    equ    12        ;viewmode
  2855. ;pic_cycstr    equ    14        ;cycle start (*4)
  2856. ;pic_cycend    equ    15        ;cycle end (*4)
  2857. ;pic_cycspd    equ    16        ;cycle speed (*4)
  2858. ;pic_cycadd    equ    17        ;cycle add (*4)
  2859. ;pic_palnum    equ    30        ;aantal kleuren
  2860. ;pic_pal    equ    32        ;palette start
  2861. ;pic_palsiz    equ    256*2        ;vaste palette size
  2862. ;pic_raw    equ    pic_pal+pic_palsiz    ;palette start
  2863.  
  2864.  
  2865.  
  2866.     cnop    0,2
  2867. rotpic1
  2868.     dc.l    'PICT'
  2869.     dc.w    rots_wid,rots_hgt,rots_dpt,1,rots_vew
  2870.     dc.b    0,0,0,0
  2871.     dc.b    0,0,0,0
  2872.     dc.b    0,0,0,0
  2873.     dc.b    0,0,0,0
  2874.  
  2875.     ifeq    rots_dpt-1
  2876.     dc.w    2-1
  2877.     dc.w    $000,$fff
  2878.     ds.w    256-2
  2879.     endc
  2880.  
  2881.     ifeq    rots_dpt-2
  2882.     dc.w    4-1
  2883.     dc.w    $000,$fff,$bbb,$555
  2884.     ds.w    256-4
  2885.     endc
  2886.  
  2887.     ifeq    rots_dpt-3
  2888.     dc.w    8-1
  2889.     dc.w    $000,$fff,$ddd,$bbb,$999,$777,$555,$333
  2890.     ds.w    256-8
  2891.     endc
  2892.  
  2893.     ifeq    rots_dpt-4
  2894.     dc.w    16-1
  2895.     dc.w    $000,$fff,$ddd,$bbb,$999,$777,$555,$333
  2896.     dc.w    $000,$ff0,$dd0,$bb0,$990,$770,$550,$330
  2897.     ds.w    256-16
  2898.     endc
  2899.  
  2900.     ifeq    rots_dpt-5
  2901.     dc.w    32-1
  2902.     dc.w    $000,$fff,$ddd,$bbb,$999,$777,$555,$333
  2903.     dc.w    $000,$ff0,$dd0,$bb0,$990,$770,$550,$330
  2904.     dc.w    $000,$0ff,$0dd,$0bb,$099,$077,$055,$033
  2905.     dc.w    $000,$f0f,$d0d,$b0b,$909,$707,$505,$303
  2906.     ds.w    256-32
  2907.     endc
  2908.  
  2909. rotpln1
  2910.     ds.b    rots_dpt*rots_wid*rots_hgt
  2911.  
  2912. rotpic2
  2913.     dc.l    'PICT'
  2914.     dc.w    rots_wid,rots_hgt,rots_dpt,1,rots_vew
  2915.     dc.b    0,0,0,0
  2916.     dc.b    0,0,0,0
  2917.     dc.b    0,0,0,0
  2918.     dc.b    0,0,0,0
  2919.  
  2920.     ifeq    rots_dpt-1
  2921.     dc.w    2-1
  2922.     dc.w    $000,$fff
  2923.     ds.w    256-2
  2924.     endc
  2925.  
  2926.     ifeq    rots_dpt-2
  2927.     dc.w    4-1
  2928.     dc.w    $000,$fff,$bbb,$555
  2929.     ds.w    256-4
  2930.     endc
  2931.  
  2932.     ifeq    rots_dpt-3
  2933.     dc.w    8-1
  2934.     dc.w    $000,$fff,$ddd,$bbb,$999,$777,$555,$333
  2935.     ds.w    256-8
  2936.     endc
  2937.  
  2938.     ifeq    rots_dpt-4
  2939.     dc.w    16-1
  2940.     dc.w    $000,$fff,$ddd,$bbb,$999,$777,$555,$333
  2941.     dc.w    $000,$ff0,$dd0,$bb0,$990,$770,$550,$330
  2942.     ds.w    256-16
  2943.     endc
  2944.  
  2945.     ifeq    rots_dpt-5
  2946.     dc.w    32-1
  2947.     dc.w    $000,$fff,$ddd,$bbb,$999,$777,$555,$333
  2948.     dc.w    $000,$ff0,$dd0,$bb0,$990,$770,$550,$330
  2949.     dc.w    $000,$0ff,$0dd,$0bb,$099,$077,$055,$033
  2950.     dc.w    $000,$f0f,$d0d,$b0b,$909,$707,$505,$303
  2951.     ds.w    256-32
  2952.     endc
  2953.  
  2954.  
  2955. rotpln2
  2956.     ds.b    rots_dpt*rots_wid*rots_hgt
  2957.  
  2958. rot.e
  2959.  
  2960. ;**********************************************************************
  2961.  
  2962. ;and here are the incbin-files....
  2963.  
  2964.         ifd    rout
  2965.         cnop    0,2
  2966. rotincfon
  2967.         incbin    'videotracker:effect/platinum_13.fon'
  2968.         cnop    0,2
  2969. rotinctxt
  2970.         incbin    'videotracker:effect/scroll_l2.txt'
  2971.         endc
  2972.         
  2973.