home *** CD-ROM | disk | FTP | other *** search
/ Audio 4.94 - Over 11,000 Files / audio-11000.iso / amiga / midi / med210.lhw / in.adf / Source / med210src.lzh / med-newscr.a < prev    next >
Text File  |  1990-06-17  |  11KB  |  482 lines

  1. ;    MED - musiikkieditori ⌐ 1989, 1990 by Teijo Kinnunen
  2. ;    V2.00 nΣyt÷npΣivityksen assembler-rutiinit
  3.     xref    _samplenum
  4.     xref    _PaivitaSoittimennimi
  5.     xref    _piirtorp
  6.     xref    _wrp
  7.     xref    _tmpA
  8.     xref    _drawbm
  9.     xref    _GfxBase
  10.     xref    _cwid
  11.     xref    _nykyinenosio
  12.     xref    _screen
  13.     xref    _pline
  14.     xref    _pblock
  15.     xref    _TulostaLohkoJaSoitin
  16.     xref    _TulostaSoittoLohkot
  17.     xref    _cursorx
  18.     xref    _lohko
  19.     xref    _topaz8        ;fontti
  20.     xref    _plane0ptr    ;bittikartta
  21.     xref    _firstdisptrk
  22.     xref    _specialupd
  23.     xref    _SpecialUpdate
  24.     xref    _currtrk
  25.     xref    _currpos
  26.     xref    _editline
  27.     xdef    _SeurSoitin
  28.     xdef    _EdSoitin
  29.     xdef    _Korosta
  30.     xdef    _Toggle
  31.     xdef    _PaivitaNaytto
  32.     xdef    _NaytaKursori
  33.     xdef    @namet
  34.     code
  35. _SeurSoitin:
  36.     move.b    _samplenum,d0
  37.     cmp.b    #62,d0
  38.     beq.s    poisss
  39.     addq.b    #1,_samplenum
  40. paivss:    jsr    _PaivitaSoittimennimi(pc)
  41. poisss:    rts
  42. _EdSoitin:
  43.     move.b    _samplenum,d0
  44.     beq.s    poisss
  45.     subq.b    #1,_samplenum
  46.     bra.s    paivss
  47. _NaytaKursori:
  48.     movem.l    d3-d4/a3/a6,-(sp)
  49.     clr.l    d3
  50.     move.b    _cursorx,d3        ;d3 = kx
  51.     clr.l    d4
  52.     lea    _cwid,a0
  53.     move.b    0(a0,d3.w),d4        ;d4 = klevx[kx]
  54.     lsl.w    #3,d3            ;d3 = kx * 8
  55.     addq.w    #4,d3            ;d3 = absx = kx * 8 + 4
  56.     add.w    d3,d4            ;d4 = klevx[kx]+absx
  57.     movea.l    _wrp,a1            ;a1 = wrp
  58.     movea.l    a1,a3            ;a3 = wrp
  59.     move.b    #4,24(a3)        ;wrp->Mask = 4
  60.     movea.l    _GfxBase,a6
  61.     moveq.l    #2,d0
  62.     jsr    -$162(a6)    ; SetDrMd(wrp,COMPLEMENT);
  63.     move.l    d3,d0
  64.     movea.l    a3,a1
  65.     move.l    #141,d1
  66.     jsr    -$f0(a6)    ; Move()
  67.     movea.l    a3,a1
  68.     move.l    d4,d0
  69.     move.l    #141,d1
  70.     jsr    -$f6(a6)    ; Draw()
  71.     movea.l    a3,a1
  72.     move.l    d4,d0
  73.     move.l    #131,d1
  74.     jsr    -$f6(a6)    ; Draw()
  75.     movea.l    a3,a1
  76.     move.l    d3,d0
  77.     move.l    #131,d1
  78.     jsr    -$f6(a6)    ; Draw()
  79.     movea.l a3,a1
  80.     move.l    d3,d0
  81.     move.l    #140,d1        ; yksi pixeli ylemmΣs, koska COMPLEMENT
  82.     jsr    -$f6(a6)    ; Draw()
  83.     movea.l    a3,a1
  84.     moveq.l    #1,d0
  85.     jsr    -$162(a6)    ; SetDrMd(wrp,JAM2);
  86.     move.b    #$ff,24(a3)    ; wrp->Mask = 0xff
  87.     movem.l    (sp)+,d3-d4/a3/a6
  88.     rts
  89. _Toggle:        ; a0 = ptr to gadget
  90.     moveq.l #0,d0
  91.     btst     #4,$26(a0) ;test bit 12 of GadgetID (bit 4 of upper byte)
  92.     seq     d0    ; if it's clear, we must highlight it
  93. _Korosta:    ; a0 = gadgptr, d0 = tila
  94.     movem.l    d2-d4/a2/a6,-(sp)
  95.     movea.l    a0,a2            ;Gadgptr talteen
  96.     move.w    d0,d4            ;tila talteen
  97.     move.w    $26(a2),d1        ;gg_GadgetID
  98.     andi.w    #$0f00,d1
  99.     lsr.w    #8,d1
  100.     cmp.w    _nykyinenosio,d1
  101.     bne.s    kloppu
  102.     clr.b    d3
  103.     btst    #4,$26(a2)        ;already highlighted??
  104.     beq.s    tstv2            ;no..
  105.     tst.w    d0            ;is highlighted, should we highlight
  106.     bne.s    kloppu            ;it is already highlighted -> exit
  107.     bra.s    rev            ;remove highlighting!!
  108. tstv2:    tst.w    d0            ;not highlighted, should we do it??
  109.     beq.s    kloppu            ;no, just exit
  110. rev:    movea.l    _wrp,a1
  111.     move.b    #3,24(a1)        ;wrp->Mask = 3 (no red!!!!!)
  112.     movea.l    _GfxBase,a6
  113.     moveq.l    #2,d0
  114.     jsr    -$162(a6)        ;SetDrMd(wrp,COMPLEMENT)
  115.     move.w    4(a2),d0            ;LeftEdge
  116.     ext.l    d0
  117.     move.w    6(a2),d1            ;TopEdge
  118.     ext.l    d1
  119.     move.l    d0,d2
  120.     move.l    d1,d3
  121.     add.w    8(a2),d2            ;Width
  122.     subq.w    #1,d2
  123.     add.w    10(a2),d3            ;Height
  124.     subq.w    #1,d3
  125.     movea.l    _wrp,a1
  126.     jsr    -$132(a6)        ;RectFill()
  127.     movea.l    _wrp,a1
  128.     move.b    #$ff,24(a1)        ;normal mask again
  129.     moveq.l    #1,d0
  130.     jsr    -$162(a6)        ;SetDrMd(wrp,JAM2)
  131. kloppu:    
  132.     tst.w    d4
  133.     beq.s    gfalse
  134.     bset    #4,$26(a2)        ;set bit in GadgetID
  135.     bra.s    exitk
  136. gfalse:
  137.     bclr    #4,$26(a2)
  138. exitk:    movem.l    (sp)+,d2-d4/a2/a6
  139.     rts
  140.  
  141. _PaivitaNaytto:
  142.     movem.l    d2-d7/a2/a6,-(sp)
  143.     move.w    _pline,d7
  144.     bpl.s    nound0
  145.     clr.w    d7
  146. nound0:    move.w    _pblock,d4
  147.     movea.l    _GfxBase,a6
  148.     move.w    d7,d3
  149.     subq.w    #7,d3            ;nykylin = srivi - 7
  150.     move.w    d3,d5            ;mennytylospain = nykylin - entylin
  151.     sub.w    entylin(pc),d5
  152.     move.w    d3,entylin
  153.     cmp.w    entsolo(pc),d4
  154.     bne.s    pruus
  155.     cmp.w    #1,d0            ;piirrauusi = TRUE
  156.     beq.s    pruus
  157.     cmp.w    #6,d5
  158.     bgt.s    pruus
  159.     cmp.w    #-6,d5
  160.     bge.s    eipruus
  161. pruus:    
  162.     lea    _lohko,a0
  163.     move.w    d4,d0
  164.     lsl.w    #2,d0
  165.     movea.l 0(a0,d0.w),a0
  166.     clr.w    d0
  167.     move.b    _firstdisptrk,d0
  168.     addq.b    #4,d0
  169.     cmp.b    (a0),d0            ;firstdisptrk+4 > lohko[xx].numtracks
  170.     ble.s    no0fdt
  171.     clr.b    _firstdisptrk
  172.     move.b    _currpos,_currtrk
  173. no0fdt:    moveq.l    #14,d6            ;for(rivilaskin=0...
  174. prl1:    move.l    d6,d0
  175.     move.w    d7,d1
  176.     move.w    d4,d2
  177.     bsr    _PaivitaRivi
  178.     dbf    d6,prl1
  179.     jsr    _TulostaLohkoJaSoitin(pc)
  180.     jsr    _TulostaSoittoLohkot(pc)
  181.     bra    endpfl
  182. eipruus:
  183.     cmp.w    #1234,d0
  184.     bne.s    eipk0
  185.     move.b    #1,updedit
  186. eipk0:    movem.l    a2/d2-d7,-(sp)
  187.     lea    _drawbm,a0
  188.     moveq.l    #0,d0
  189.     movea.l    a0,a1
  190.     moveq.l    #0,d2
  191.     move.l    #312,d4
  192.     move.l    #$c0,d6
  193.     moveq.l    #1,d7
  194.     lea    _tmpA,a2
  195.     tst.w    d5            ;if(mennytylospain > 0)...
  196.     ble.s    oktst2
  197.     clr.l    d1
  198.     move.w    d5,d1
  199.     lsl.w    #3,d1
  200.     moveq.l    #0,d3
  201.     moveq.l    #120,d5        ;siirretΣΣn 120 - 8 * mennytyl÷spΣin pix.
  202.     sub.w    d1,d5
  203.     jsr    -$1e(a6)        ;BltBitMap()
  204.     bra.s    rf2
  205. oktst2:    tst.w    d5            ;if(mennytylospain < 0)...
  206.     bge.s    rf2
  207.     moveq.l    #0,d1
  208.     neg.w    d5
  209.     lsl.w    #3,d5
  210.     move.w    d5,d3
  211.     ext.l    d3
  212.     moveq.l    #120,d5        ;siirretΣΣn 120 - 8 * (-mennytyl÷spΣin) pix
  213.     sub.w    d3,d5
  214.     jsr    -$1e(a6)
  215. rf2:    movem.l    (sp)+,a2/d2-d7
  216.     tst.b    updedit
  217.     beq.s    eipk
  218.     clr.b    updedit
  219.     move.w    d4,d2
  220.     move.w    d7,d1
  221.     move.w    _editline,d0
  222.     sub.w    d7,d0
  223.     addq.w    #7,d0
  224.     bmi.s    eipk
  225.     cmp.b    #14,d0
  226.     bgt.s    eipk
  227.     bsr.s    _PaivitaRivi
  228. eipk:    tst.w    d5
  229.     ble.s    alle0            ;if(mennytylospain > 0):
  230.     move.w    d5,d6
  231.     subq.w    #1,d6
  232.     move.w    d4,d2
  233. loop2:    moveq.l    #14,d0
  234.     sub.w    d6,d0
  235.     move.w    d7,d1
  236.     bsr.s    _PaivitaRivi
  237.     dbf    d6,loop2
  238.     bra.s    endpfl
  239. alle0:    tst.w    d5
  240.     bge.s    endpfl
  241.     clr.l    d0
  242.     move.w    d5,d6
  243.     not.w    d6    ;sama kuin neg.w d6, subq.w #1,d6
  244.     move.w    d4,d2
  245. loop3:    move.w    d6,d0
  246.     move.w    d7,d1
  247.     bsr.s    _PaivitaRivi
  248.     dbf    d6,loop3
  249. endpfl:    move.w    d4,entsolo
  250.     lea    _drawbm,a0
  251.     clr.l    d0
  252.     clr.l    d1
  253.     movea.l    _screen,a1
  254.     lea    $b8(a1),a1
  255.     moveq.l    #4,d2
  256.     moveq.l    #77,d3
  257.     move.l    #312,d4
  258.     moveq.l    #120,d5
  259.     move.l    #$c0,d6
  260.     moveq.l    #1,d7
  261.     movea.l    #0,a2
  262.     jsr    -$1e(a6)            ;BltBitMap()
  263.     tst.b    _specialupd
  264.     beq.s    noupd
  265.     jsr    _SpecialUpdate(pc)
  266. noupd:    movem.l    (sp)+,d2-d7/a2/a6
  267.     rts
  268. entylin:    dc.w 0
  269. entsolo:    dc.w 0
  270. updedit:    dc.w 0
  271. ;YllΣoleva _PaivitaNaytto() viimein korjatuksi 23.10.1989
  272. ; samana pΣivΣnΣ aloitin allaolevan _PaivitaRivi():n tekemisen
  273. ; seuraavana pΣivΣnΣ (24.10.1989) sain C-kΣΣntΣjΣstΣ version 5.04!!!!!
  274. ; korjailin my÷s hiukan tΣtΣ rutiinia.
  275. ; TΣhΣn kuntoon rutiini on saatu 5.11.1989 jKr...ei vaan 31.1.1990
  276. ; Fasttext... 13.11.1989 jKr, nopeutettu hiukan 7.3.1990
  277. _PaivitaRivi:    ;d0 = rivin numero (0-14), d1 = soit. rivi ja d2 = lohko
  278.     movem.l d2-d7/a2-a3,-(sp)
  279.     moveq.l #0,d7
  280.     move.w    d0,d7
  281.     subq.w    #7,d7
  282.     add.w    d1,d7    ;relsr(d7) = srivi + (num - 7)
  283.     tst.w    d7
  284.     blt.s    blnk
  285.     lea    _lohko,a2    ;a2 = 1. lohkon osoite
  286.     lsl.w    #2,d2
  287.     movea.l 0(a2,d2.w),a2    ;lohkon osoite taulukosta
  288.     clr.w    d5
  289.     move.b    1(a2),d5
  290.     cmp.w    d5,d7
  291.     bls.s    noblnk
  292. blnk:    move.w    d0,d6
  293.     jsr    -$e4(a6)    ;WaitBlit() tehdΣΣn vasta nyt
  294.     movea.l    _plane0ptr,a0
  295.     mulu.w    #320,d6        ;alkuosoite
  296.     adda.l    d6,a0
  297.     moveq.l    #79,d0        ;80 pitkΣΣ sanaa = 320 tavua
  298. clrlp:    clr.l    (a0)+
  299.     dbf    d0,clrlp
  300.     movem.l    (sp)+,d2-d7/a2-a3    ;ja pois....
  301.     rts
  302. noblnk:    move.l    d7,d5
  303.     moveq    #'0',d2
  304.     lea    txt40(pc),a3    ;get ptr to printed text
  305.     divu    #100,d5
  306.     add.b    d2,d5        ;add '0'
  307.     move.b    d5,(a3)+
  308.     swap    d5
  309.     ext.l    d5
  310.     divu    #10,d5
  311.     add.b    d2,d5        ;add '0'
  312.     move.b    d5,(a3)+    ;kokoa numero
  313.     swap    d5
  314.     add.b    d2,d5        ;add '0'
  315.     move.b    d5,(a3)+
  316.     move.b    d7,d6
  317.     lea    4(a2),a1
  318.     moveq    #32,d4
  319.     bra.s    tsthi
  320. lowmp:    sub.b    d4,d6
  321.     addq.l    #4,a1
  322. tsthi:    cmp.b    #31,d6
  323.     bhi.s    lowmp
  324.     move.l    (a1),d4
  325.     clr.b    d2
  326.     btst    d6,d4
  327.     sne    d2
  328.     clr.w    d4
  329.     move.b    (a2),d4        ;otetaan raitojen mΣΣrΣ
  330.     lea    36(a2),a2    ;ohitetaan roskat....a2 = nyk. lohkon nuotit
  331.     mulu    #3,d4        ;yhden rivin pituus
  332.     mulu    d4,d7        ;kerrottuna nykyisellΣ rivinumerolla
  333.     adda.l    d7,a2        ;a2 = nyk. rivin alkuosoite
  334.     clr.w    d4
  335.     move.b    _firstdisptrk,d4
  336.     mulu    #3,d4
  337.     adda.l    d4,a2        ;vihdoin a2 = nyk. nuotin alkuosoite
  338.     clr.b    d6        ;raitacnt
  339.     addq.l    #1,a3        ;advance text ptr
  340. rloop:    clr.b    d1        ;ei ylempi soitin (vielΣ)
  341.     move.b    (a2)+,d4    ;d4 = numero
  342.     move.b    (a2)+,d3    ;d3 = extra (1. tavu)
  343.     lsl.w    #8,d3
  344.     move.b    (a2)+,d3    ;(2. tavu)
  345.     bclr    #6,d4
  346.     beq.s    ey1
  347.     move.b    #'1',3(a3)
  348.     bra.s    yy2
  349. ey1:    move.b    #' ',3(a3)
  350. yy2:    bclr    #7,d4
  351.     beq.s    eiyls        ;ei soitin G-V
  352.     moveq    #16,d1        ;ylempi soitin
  353. eiyls:    tst.b    d4        ;jos nuottia ei jΣΣkΣΣn jΣljelle
  354.     beq.s    noper
  355.     clr.w    d5
  356.     move.b    d4,d5
  357.     subq.b    #1,d5
  358.     lsl.b    #2,d5
  359.     lea    namet(pc),a1    ;nimen osoite
  360.     adda.w    d5,a1
  361.     move.b    (a1),(a3)
  362.     move.b    1(a1),1(a3)
  363.     move.b    2(a1),2(a3)    ;kopsataan nimi
  364.     bra.s    dspxtr
  365. noper:    move.b    #'-',(a3)    ;ei nimeΣ
  366.     move.b    #'-',1(a3)
  367.     move.b    #'-',2(a3)    ;3 viivaa
  368. dspxtr:    lea    hexat(pc),a1
  369.     move.w    d3,d5        ;d5:een kΣsiteltΣvΣksi
  370.     lsr.w    #8,d5
  371.     lsr.w    #4,d5
  372.     add.b    d1,d5
  373.     move.b    0(a1,d5.w),4(a3)    ;1. luku - lisΣtΣΣn koska ylsoitin on jo.
  374.     move.w    d3,d5
  375.     lsr.w    #8,d5
  376.     andi.w    #$000f,d5
  377.     move.b    0(a1,d5.w),5(a3)    ;2. luku
  378.     move.w    d3,d5
  379.     lsr.w    #4,d5
  380.     andi.w    #$000f,d5
  381.     move.b    0(a1,d5.w),6(a3)    ;3. luku
  382.     andi.w    #$000f,d3    ;extraa ei enΣΣ tartte
  383.     move.b    0(a1,d3.w),7(a3)
  384.     adda.w    #9,a3
  385.     addq.b    #1,d6
  386.     cmp.b    #4,d6        ;joka raita!!!
  387.     blt    rloop
  388.     lea    txt40(pc),a2    ;a2 = tekstin alku
  389.     move.w    d0,d6        ;rivin numero dkuuteen
  390.     jsr    -$e4(a6)    ;WaitBlit() tehdΣΣn vasta nyt
  391. dsptxt:    ;****************************************************************
  392.     ;****  TΣstΣ alkaa huippunopea tekstintulostus (13.11.1989)  ****
  393.     ;****************************************************************
  394.         mulu    #320,d6        ;alkuosoite
  395.         movea.l    _plane0ptr,a0    ;bitmapin alku
  396.         adda.w    d6,a0
  397.         movea.l    _topaz8,a1
  398.         move.w    38(a1),d7    ;Modulo -> d7
  399.         move.b    32(a1),d0    ;tf_LoChar -> d0
  400.         movea.l    34(a1),a1    ;tf_CharData
  401.         moveq.l    #38,d1
  402.         tst.b    d2
  403.         bne.s    txtr2    ;highlight, use different routine
  404.         clr.w    d2    ;for speed!!!
  405. charloop:    move.b    (a2)+,d2
  406.         sub.b    d0,d2        ;tf_LoChar pois
  407.         movea.l    a1,a3
  408.         moveq.l    #7,d5
  409.         adda.w    d2,a3
  410.         move.b    (a3),(a0)
  411.         adda.w    d7,a3        ;tf_Modulo lisΣtΣΣn
  412.         move.b    (a3),40(a0)
  413.         adda.w    d7,a3
  414.         move.b    (a3),80(a0)
  415.         adda.w    d7,a3
  416.         move.b    (a3),120(a0)
  417.         adda.w    d7,a3
  418.         move.b    (a3),160(a0)
  419.         adda.w    d7,a3
  420.         move.b    (a3),200(a0)
  421.         adda.w    d7,a3
  422.         move.b    (a3),240(a0)
  423.         adda.w    d7,a3
  424.         move.b    (a3),280(a0)
  425.         addq.l    #1,a0
  426.         dbf    d1,charloop
  427.     ;****  Ja tΣhΣn loppuu....eik÷ ollutkin lyhyt!!! ****************
  428. expr:    movem.l    (sp)+,d2-d7/a2-a3
  429.     rts            ; huh huh !!!
  430. txtr2:        clr.w    d2    ;display highlighted
  431. charloop2:    move.b    (a2)+,d2
  432.         sub.b    d0,d2        ;tf_LoChar pois
  433.         movea.l    a1,a3
  434.         moveq.l    #7,d5
  435.         adda.w    d2,a3
  436.         move.b    (a3),d6
  437.         not.b    d6
  438.         move.b    d6,(a0)
  439.         adda.w    d7,a3        ;tf_Modulo lisΣtΣΣn
  440.         move.b    (a3),d6
  441.         not.b    d6
  442.         move.b    d6,40(a0)
  443.         adda.w    d7,a3
  444.         move.b    (a3),d6
  445.         not.b    d6
  446.         move.b    d6,80(a0)
  447.         adda.w    d7,a3
  448.         move.b    (a3),d6
  449.         not.b    d6
  450.         move.b    d6,120(a0)
  451.         adda.w    d7,a3
  452.         move.b    (a3),d6
  453.         not.b    d6
  454.         move.b    d6,160(a0)
  455.         adda.w    d7,a3
  456.         move.b    (a3),d6
  457.         not.b    d6
  458.         move.b    d6,200(a0)
  459.         adda.w    d7,a3
  460.         move.b    (a3),d6
  461.         not.b    d6
  462.         move.b    d6,240(a0)
  463.         adda.w    d7,a3
  464.         move.b    (a3),d6
  465.         not.b    d6
  466.         move.b    d6,280(a0)
  467.         addq.l    #1,a0
  468.         dbf    d1,charloop2
  469.         bra.s    expr
  470.  
  471. txt40:    dc.b    '                                        '
  472. spc40:    dc.b    '                                        '
  473. hexat:    dc.b    '0123456789ABCDEFGHIJKLMNOPQRSTUV'
  474. namet:
  475. @namet:    dc.b    'C-1 C#1 D-1 D#1 E-1 F-1 F#1 G-1 G#1 A-1 A#1 H-1 '
  476.     dc.b    'C-2 C#2 D-2 D#2 E-2 F-2 F#2 G-2 G#2 A-2 A#2 H-2 '
  477.     dc.b    'C-3 C#3 D-3 D#3 E-3 F-3 F#3 G-3 G#3 A-3 A#3 H-3 '
  478.     dc.b    'C-4 C#4 D-4 D#4 E-4 F-4 F#4 G-4 G#4 A-4 A#4 H-4 '
  479.     dc.b    'C-5 C#5 D-5 D#5 E-5 F-5 F#5 G-5 G#5 A-5 A#5 H-5 '
  480.     dc.b    'C-6 C#6 D-6 '
  481.     end
  482.