home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Amiga Shareware Floppies / ma42.dms / ma42.adf / LabExt / LabExt.S < prev    next >
Encoding:
Text File  |  2002-10-23  |  16.7 KB  |  1,099 lines

  1. OBJECT    =    1
  2.  
  3.     section Amiga_Rulez,code
  4.  
  5.     move.l    sp,stack
  6.  
  7.     move.l    #dosname,a1
  8.     move.l    4,a6
  9.     jsr    -408(a6)
  10.     move.l    d0,dosbase
  11.  
  12.     move.l    #gfxname,a1
  13.     move.l    4,a6
  14.     jsr    -408(a6)
  15.     move.l    d0,gfxbase
  16.  
  17.     bsr.w    program
  18.  
  19.     bsr.w    openreq
  20.  
  21. main:
  22.     bsr.w    clearadrtab
  23.     move.l    #alloctable,alloctableadr
  24.     clr.w    labnum
  25.     clr.l    labsize
  26.     clr.l    ssek
  27.     clr.l    sek
  28.     clr.l    min
  29.  
  30.     lea    menu,a1
  31.     lea    menugads,a2
  32.     bsr.w    requester
  33.     tst.b    d0
  34.     beq.w    exit
  35.     cmp.b    #2,d0
  36.     beq.w    doc
  37.  
  38.     move.l    #ssource,tytul
  39.     bsr.w    request
  40.     move.l    a0,sors
  41.  
  42.     move.l    sors,a0
  43.     jsr    filesize
  44.     tst.l    d0
  45.     beq.W    error
  46.     add.l    #1,d0
  47.     move.l    d0,sorssize
  48.  
  49.     move.l    sorssize,d0
  50.     bsr.w    alloc
  51.     tst.l    d0
  52.     beq.W    dealloc
  53.     move.l    d0,sorsadres
  54.  
  55.     move.l    sorsadres,d0
  56.     move.l    sorssize,d1
  57.     move.l    sors,a0
  58.     jsr    read
  59.     tst.l    d0
  60.     bne.W    enddealloc
  61.  
  62.     move.l    sorsadres,a0
  63.     add.l    sorssize,a0
  64.     clr.b    -(a0)
  65.  
  66.     move.l    sorsadres,a0
  67.     cmp.l    #$f9faf9fa,(a0)
  68.     bne.s    nosavedmarks
  69.  
  70.     add.l    #40,sorsadres
  71.     sub.l    #40,sorssize
  72.  
  73. nosavedmarks:
  74.     move.l    sorssize,d0
  75.     move.l    d0,d1
  76.     asr.l    #1,d1
  77.     add.l    d1,d0
  78.     move.l    d0,long
  79.  
  80.     move.l    4,a6
  81.     move.l    #$20000,d1
  82.     jsr    -216(a6)
  83.     move.l    d0,availmem
  84.  
  85.     move.l    #ework,tytul
  86.     bsr.w    getlong
  87.     move.l    #estring,tytul
  88.     bsr.w    getstring
  89.     move.l    long,destsize
  90.  
  91.     move.l    destsize,d0
  92.     bsr.w    alloc
  93.     tst.l    d0
  94.     beq.w    enddealloc
  95.     move.l    d0,nowy
  96.  
  97.     bsr.w    sysoff
  98.  
  99.     bsr.w    liczetykiety
  100.     mulu    #6,d0
  101.     move.l    d0,adressize
  102.  
  103.     move.l    labsize,d0
  104.     bsr.w    alloc
  105.     tst.l    d0
  106.     beq.w    enddealloc
  107.     move.l    d0,etykiety
  108.  
  109.     move.l    adressize,d0
  110.     bsr.w    alloc
  111.     tst.l    d0
  112.     beq.w    enddealloc
  113.     move.l    d0,adresy
  114.  
  115.     move.l    nowy,endadr
  116.     move.l    destsize,d0
  117.     subq    #1,d0
  118.     add.l    d0,endadr
  119.     lea    adrtab,a3
  120.     move.l    adresy,a2
  121.     move.l    etykiety,a1
  122.     move.l    sorsadres,a0
  123.     lea    tabela,a5
  124.     clr.w    d0
  125.     clr.w    d2
  126.     bra.w    czyetykieta
  127. findloop:
  128.     move.b    (a0)+,d0
  129.     tst.b    d0
  130.     beq.s    findend
  131.     cmp.b    #10,d0
  132.     beq.w    czyetykieta
  133.     bra.s    findloop
  134. findend:
  135.     move.l    sorsadres,a0
  136.     lea    kawaleczek,a2
  137.     move.l    nowy,a3
  138.     lea    tabela,a6
  139.     lea    comptable,a7
  140.     clr.w    d0
  141.     clr.w    d1
  142.     clr.w    d3
  143. przeploop:
  144.     move.w    #$44f,$dff180
  145. przeploop2:
  146.     move.b    (a0)+,d0    ; a0 - sors
  147.     beq.w    amen
  148.     btst    #6,$bfe001
  149.     beq.w    edzio
  150.     tst.b    (a7,d0.w)    ; koniec slowa ?
  151.     bgt.s    konieck
  152.     bmi.b    special
  153.     move.b    (a6,d0.w),(a2)    ; litera -> kawaleczek
  154.     add.b    (a2)+,d3    ; d3 - suma kontrolna
  155.     add.w    d3,d3
  156.     move.b    d0,(a3)+    ; litera -> nowy
  157.     cmp.l    endadr,a3
  158.     beq.w    eowork
  159.     bra.s    przeploop2
  160. konieck:
  161.     cmpa.l    #kawaleczek,a2    ; koniec slowa
  162.     beq.b    dowidzenia
  163.     clr.b    (a2)
  164.     lea    adrtab,a2
  165.     tst.b    (a2,d3.w)
  166.     beq.s    dowidzenia
  167.     lea    kawaleczek,a2
  168.     move.l    adresy,a1
  169.     move.w    #$200,$dff180
  170. kloop:
  171.     move.l    (a1)+,a5    ; kolejny adres
  172.     cmpa.l    #0,a5
  173.     beq.s    dowidzenia
  174.     cmp.w    (a1)+,d3    ; chksum
  175.     bne.s    kloop        ; nie zgadza sie
  176.     move.l    a2,a4
  177. sprawdz:
  178.     move.b    (a5)+,d1
  179.     beq.s    hurra
  180.     cmp.b    (a4)+,d1    ; porownanie znakow
  181.     beq.s    sprawdz
  182.     bra.s    kloop
  183.  
  184. special:
  185.     cmp.b    #';',d0
  186.     beq.s    comment
  187. text:
  188.     move.b    d0,(a3)+
  189.     cmp.l    endadr,a3
  190.     beq.w    eowork
  191. textloop:
  192.     move.b    (a0)+,d1
  193.     beq.w    edzio
  194.     move.b    d1,(a3)+
  195.     cmp.l    endadr,a3
  196.     beq.w    eowork
  197.     cmp.b    d0,d1
  198.     bne.s    textloop
  199.     bra.w    przeploop
  200.  
  201. dowidzenia:
  202.     clr.w    d3
  203.     move.b    d0,(a3)+
  204.     cmp.l    endadr,a3
  205.     beq.w    eowork
  206.     lea    kawaleczek,a2
  207.      bra.w    przeploop
  208.  
  209. hurra:
  210.     tst.b    (a4)        
  211.     bne.s    kloop
  212.     move.w    #$fff,$dff180    ; rowne !
  213.     move.l    chars,a2    
  214.     add.l    #1,extnum
  215. addloop:
  216.     move.b    (a2)+,d2    ; dodaje koncowke
  217.     beq.s    dowidzenia
  218.     move.b    d2,(a3)+
  219.     cmp.l    endadr,a3
  220.     beq.w    eowork
  221.     bra.s    addloop
  222.  
  223. comment:
  224.     move.b    d0,(a3)+
  225.     cmp.l    endadr,a3
  226.     beq.w    eowork
  227. commentloop:
  228.     move.b    (a0)+,d0
  229.     beq.w    przeploop
  230.     move.b    d0,(a3)+
  231.     cmp.l    endadr,a3
  232.     beq.w    eowork
  233.     cmp.b    #10,d0
  234.     bne.s    commentloop
  235.     bra.w    przeploop
  236.  
  237. sysoff:
  238.     movem.l    d0/d1/a0/a1,-(sp)
  239.     move.l    gfxbase,a6
  240.     move.l    34(a6),view
  241.     suba.l    a1,a1
  242.     jsr    -222(a6)
  243.     bsr.w    addinterrupt
  244.     move.l    4.w,a6
  245.     jsr    -132(a6)
  246.     move.w    #%0000000110100000,$dff096
  247.     movem.l    (sp)+,d0/d1/a0/a1
  248.     rts
  249.  
  250. syson:
  251.     movem.l    d0/d1/a0/a1,-(sp)
  252.     move.l    gfxbase,a6
  253.     move.l    view,a1
  254.     jsr    -222(a6)
  255.     move.l    4.w,a6
  256.     jsr    -138(a6)
  257.     move.w    #%1000000110100000,$dff096
  258.     bsr.w    removeinterrupt
  259.     movem.l    (sp)+,d0/d1/a0/a1
  260.     rts
  261.  
  262. amen:
  263.     move.l    stack,sp
  264.     bsr.b    syson
  265.  
  266.     move.l    a3,nowyend
  267.  
  268.     sub.l    nowy,a3
  269.     move.l    a3,nowysize
  270.  
  271.     lea    infotext,a1
  272.     lea    supergad,a2
  273.     lea    sorssize,a4
  274.     bsr.w    requester
  275.  
  276.     move.l    #sdest,tytul
  277.     bsr.w    request
  278.     move.l    a0,dest
  279.  
  280.     move.l    dest,a0
  281.     move.l    nowy,d0
  282.     move.l    nowyend,d1
  283.     sub.l    nowy,d1
  284.     bsr.w    write
  285.  
  286.     jsr    dealloc
  287.  
  288.     bra.w    main
  289.  
  290. czyetykieta:
  291.     move.b    (a0),d0
  292.     cmp.b    #"    ",d0
  293.     beq.w    findloop
  294.     cmp.b    #0,d0
  295.     beq.w    findloop
  296.     cmp.b    #" ",d0
  297.     beq.w    findloop
  298.     cmp.b    #";",d0
  299.     beq.w    findloop
  300.     cmp.b    #10,d0
  301.     beq.w    findloop
  302.     move.l    a1,(a2)+
  303.     move.w    #0,$dff180
  304.     clr.w    d1
  305. cepetla:
  306.     move.b    (a0)+,d0
  307.     cmp.b    #":",d0
  308.     beq.s    zpowrotem
  309.     cmp.b    #"    ",d0
  310.     beq.s    zpowrotem
  311.     cmp.b    #0,d0
  312.     beq.s    zpowrotem
  313.     cmp.b    #10,d0
  314.     beq.s    zpowrotem
  315.     add.b    (a5,d0.w),d1
  316.     add.w    d1,d1
  317.     move.b    (a5,d0.w),(a1)+
  318.     bra.s    cepetla
  319. zpowrotem:
  320.     move.b    #'!',(a3,d1.w)
  321.     move.w    d1,(a2)+
  322.     move.b    #0,(a1)+
  323.     move.w    #$fff,$dff180
  324.     bra.w    findloop
  325.  
  326. alloc:
  327.     movem.l    d1-d7/a0-a6,-(sp)
  328.     addq.l    #3,d0
  329.     and.l    #$fffffffe,d0
  330.     move.l    d0,-(sp)
  331.     move.l    4,a6
  332.     move.l    #$10000,d1
  333.     jsr    -198(a6)
  334.     move.l    (sp)+,d1
  335.     move.l    alloctableadr,a0
  336.     move.l    d0,(a0)+
  337.     move.l    d1,(a0)+
  338.     move.l    a0,alloctableadr
  339.     movem.l    (sp)+,d1-d7/a0-a6
  340.     rts
  341.  
  342. dealloc:
  343.     lea    alloctable,a0
  344. deallloop:
  345.     move.l    (a0),a1
  346.     clr.l    (a0)+
  347.     cmp.l    #0,a1
  348.     beq.s    deend
  349.     move.l    (a0)+,d0
  350.     addq.l    #1,d0
  351.     and.l    #$fffffffe,d0
  352.     movem.l    d0-d7/a0-a6,-(sp)
  353.     move.l    4,a6
  354.     jsr    -210(a6)
  355.     movem.l    (sp)+,d0-d7/a0-a6
  356.     bra.s    deallloop
  357. deend:
  358.     moveq    #0,d0
  359.     rts
  360.  
  361. ; a0 - name
  362. ; d0 - adr
  363. ; d1 - len
  364.  
  365. ; d0 - 0:OK
  366. ; d0 - 1:ERROR
  367.  
  368. write:
  369.     movem.l    d0-d1,-(sp)
  370.     move.l    a0,d1
  371.     move.l    dosbase,a6
  372.     move.l    #1006,d2
  373.     jsr    -30(a6)
  374.  
  375.     tst.l    d0
  376.     beq.s    wrerr
  377.  
  378.     movem.l    (sp)+,d2-d3
  379.  
  380.     move.l    d0,file
  381.     move.l    d0,d1
  382.     move.l    dosbase,a6
  383.     jsr    -48(a6)
  384.  
  385.     move.l    file,d1
  386.     move.l    dosbase,a6
  387.     jsr    -36(a6)
  388.  
  389.     moveq    #0,d0
  390.     rts
  391. wrerr:
  392.     movem.l    (sp)+,d0-d1
  393.     move.l    stack,sp
  394.     bsr.w    dealloc
  395.     lea    werrtext,a1
  396.     lea    grrgad,a2
  397.     bsr.w    requester
  398.     bra.w    main
  399.  
  400. werrtext:
  401.     dc.b    'Write error !',0
  402.  
  403. alloctableadr:
  404.     dc.l    alloctable
  405.  
  406. ; a0 - name
  407. ; d0 - adr
  408. ; d1 - len
  409.  
  410. ; d0 - 0:OK
  411. ; d0 - 1:ERROR
  412.  
  413. read:
  414.     movem.l    d0-d1,-(sp)
  415.     move.l    a0,d1
  416.     move.l    dosbase,a6
  417.     move.l    #1005,d2
  418.     jsr    -30(a6)
  419.  
  420.     tst.l    d0
  421.     beq.s    rerr
  422.  
  423.     movem.l    (sp)+,d2-d3
  424.  
  425.     move.l    d0,file
  426.     move.l    d0,d1
  427.     move.l    dosbase,a6
  428.     jsr    -42(a6)
  429.  
  430.     move.l    dosbase,a6
  431.     jsr    -132(a6)
  432.     tst.l    d0
  433.     bne.s    rerr2
  434.  
  435.     move.l    file,d1
  436.     move.l    dosbase,a6
  437.     jsr    -36(a6)
  438.  
  439.     moveq    #0,d0
  440.     rts
  441.  
  442. rerr:
  443.     movem.l    (sp)+,d0-d1
  444. rerrhere:
  445.     move.l    stack,sp
  446.     bsr.w    dealloc
  447.     lea    rerrtext,a1
  448.     lea    grrgad,a2
  449.     bsr.w    requester
  450.     bra.w    main
  451. rerr2:
  452.     move.l    file,d1
  453.     move.l    dosbase,a6
  454.     jsr    -36(a6)
  455.     bra.s    rerrhere
  456.  
  457. rerrtext:
  458.     dc.b    'Read error !',0
  459.  
  460.     even
  461.  
  462. avail:    dc.b    'Available memory: %ld bytes',0
  463.  
  464.     even
  465.  
  466. edzio:
  467.     bsr.w    syson
  468.     bsr.w    dealloc
  469.     move.l    stack,sp
  470.     bra.s    error
  471.  
  472. eowork:
  473.     bsr.w    syson
  474.     bsr.w    dealloc
  475.     move.l    stack,sp
  476.     lea    eowtext,a1
  477.     lea    grrgad,a2
  478.     bsr.w    requester
  479.     bra.w    main
  480.  
  481. exit:    
  482.     move.l    stack,sp
  483.     bsr.w    dealloc
  484.     bsr.w    closereq
  485.     bra.w    quit
  486.  
  487. cancel:
  488.     move.l    stack,sp
  489.     bsr.w    dealloc
  490.     bra.w    main
  491.  
  492. enddealloc:
  493.     bsr.w    dealloc
  494. error:
  495.     lea    swrong,a1
  496.     lea    grrgad,a2
  497.     bsr.w    requester
  498.     bra.w    main
  499.  
  500. clearadrtab:
  501.     lea    adrtabstart,a0
  502.     move.w    #16383,d7
  503. clearloop:
  504.     clr.l    (a0)+
  505.     dbf    d7,clearloop
  506.     rts
  507.  
  508. doc:
  509.     lea    doctxt,a1
  510.     lea    docgads,a2
  511.     bsr.w    requester
  512.     beq.w    main
  513.  
  514.     lea    doctxt2,a1
  515.     lea    docgads2,a2
  516.     bsr.w    requester
  517.     bra.w    main
  518.  
  519. doctxt:
  520.     dc.b    'This program works like the "Ext. Labels" function',10
  521.     dc.b    "in Trash'm-One, but it's faster and more reliable.",10
  522.     dc.b    "Trash'm-One extends labels in 15 KB source in",10
  523.     dc.b    "two minutes (on A500), this program does this in 1 second.",10
  524.     dc.b    "Also, Trash'm-One sometimes changes the source like",10
  525.     dc.b    "this:     loop.main:  lea.main   table.main,a0.main",10
  526.     dc.b    "and so on...  If you wait 10 minutes, and get",10
  527.     dc.b    "something like this, you're very angry.",10,10
  528.     dc.b    "So, use this program and be happy !!!",0
  529. doctxt2:
  530.     dc.b    "If you want to contact me, write at:",10,10
  531.     dc.b    "Piotr Pawlow",10
  532.     dc.b    "ul. Lewartowskiego 12 m 46",10
  533.     dc.b    "00-185 Warszawa",10
  534.     dc.b    "Polska",10,10
  535.     dc.b    "WARNING: if you will try to use this program on a",10
  536.     dc.b    "file which is not a source, it may crash !",0
  537.  
  538. docgads:
  539.     dc.b    'More info|Shut up !',0
  540. docgads2:
  541.     dc.b    'Extra !',0
  542.  
  543. eowtext:
  544.     dc.b    'Workspace too small !',0
  545. swrong:
  546.     dc.b    'ERROR !',0
  547. grrgad:
  548.     dc.b    '!@#$%^&*',0
  549.  
  550. dosname:
  551.     dc.b    'dos.library',0
  552. gfxname:
  553.     dc.b    'graphics.library',0
  554.     even
  555.  
  556. tabela:
  557.     dc.b    000,001,002,003,004,005,006,007,008,009
  558.     dc.b    010,011,012,013,014,015,016,017,018,019
  559.     dc.b    020,021,022,023,024,025,026,027,028,029
  560.     dc.b    030,031,032,033,034,035,036,037,038,039
  561.     dc.b    040,041,042,043,044,045,046,047,048,049
  562.     dc.b    050,051,052,053,054,055,056,057,058,059
  563.     dc.b    060,061,062,063,064,'A','B','C','D','E'
  564.     dc.b    'F','G','H','I','J','K','L','M','N','O'
  565.     dc.b    'P','Q','R','S','T','U','V','W','X','Y'
  566.     dc.b    'Z',091,092,093,094,095,096,'A','B','C'
  567.     dc.b    'D','E','F','G','H','I','J','K','L','M'
  568.     dc.b    'N','O','P','Q','R','S','T','U','V','W'
  569.     dc.b    'X','Y','Z',123,124,125,126,127,128,129
  570.     dc.b    130,131,132,133,134,135,136,137,138,139
  571.     dc.b    140,141,142,143,144,145,146,147,148,149
  572.     dc.b    150,151,152,153,154,155,156,157,158,159
  573.     dc.b    160,161,162,163,164,165,166,167,168,169
  574.     dc.b    170,171,172,173,174,175,176,177,178,179
  575.     dc.b    180,181,182,183,184,185,186,187,188,189
  576.     dc.b    190,191,192,193,194,195,196,197,198,199
  577.     dc.b    200,201,202,203,204,205,206,207,208,209
  578.     dc.b    210,211,212,213,214,215,216,217,218,219
  579.     dc.b    220,221,222,223,224,225,226,227,228,229
  580.     dc.b    230,231,232,233,234,235,236,237,238,239
  581.     dc.b    240,241,242,243,244,245,246,247,248,249
  582.     dc.b    250,251,252,253,254,255
  583.  
  584. comptable:
  585.     dc.b    0,0,0,0,0,0,0,0,0,1    ;0
  586.     dc.b    1,0,0,0,0,0,0,0,0,0    ;10
  587.     dc.b    0,0,0,0,0,0,0,0,0,0    ;20
  588.     dc.b    0,0,1,1,-1,1,0,0,1,-1    ;30
  589.     dc.b    1,1,1,1,1,1,0,1,0,0    ;40
  590.     dc.b    0,0,0,0,0,0,0,0,1,-1    ;50
  591.     dc.b    0,1,0,0,1,0,0,0,0,0    ;60
  592.     dc.b    0,0,0,0,0,0,0,0,0,0    ;70
  593.     dc.b    0,0,0,0,0,0,0,0,0,0    ;80
  594.     dc.b    0,0,0,0,1,0,0,0,0,0    ;90
  595.     dc.b    0,0,0,0,0,0,0,0,0,0    ;100
  596.     dc.b    0,0,0,0,0,0,0,0,0,0    ;110
  597.     dc.b    0,0,0,0,0,0,0,0,0,0    ;120
  598.     dc.b    0,0,0,0,0,0,0,0,0,0    ;130
  599.     dc.b    0,0,0,0,0,0,0,0,0,0    ;140
  600.     dc.b    0,0,0,0,0,0,0,0,0,0    ;150
  601.     dc.b    0,0,0,0,0,0,0,0,0,0    ;160
  602.     dc.b    0,0,0,0,0,0,0,0,0,0    ;170
  603.     dc.b    0,0,0,0,0,0,0,0,0,0    ;180
  604.     dc.b    0,0,0,0,0,0,0,0,0,0    ;190
  605.     dc.b    0,0,0,0,0,0,0,0,0,0    ;200
  606.     dc.b    0,0,0,0,0,0,0,0,0,0    ;210
  607.     dc.b    0,0,0,0,0,0,0,0,0,0    ;220
  608.     dc.b    0,0,0,0,0,0,0,0,0,0    ;230
  609.     dc.b    0,0,0,0,0,0,0,0,0,0    ;240
  610.     dc.b    0,0,0,0,0,0        ;250
  611.  
  612. ; a0 - filename
  613.  
  614. ; d0 - size
  615.  
  616. filesize:
  617.     movem.l    d0-d7/a0-a6,-(sp)
  618.  
  619.     move.l    a0,d1
  620.     moveq    #-2,d2
  621.     move.l    dosbase,a6
  622.     jsr    -84(a6)
  623.     tst.l    d0
  624.     beq.s    lerr
  625.     move.l    d0,d1
  626.  
  627.     move.l    d1,-(sp)
  628.     move.l    #fileinfoblock,d2
  629.     addq.l    #3,d2
  630.     and.l    #$fffffffc,d2
  631.     move.l    d2,fileinfoadr
  632.     move.l    fileinfoadr,d2
  633.     move.l    dosbase,a6
  634.     jsr    -102(a6)
  635.     move.l    fileinfoadr,a0
  636.     move.l    124(a0),fsize
  637.     move.l    (sp)+,d1
  638.  
  639.     move.l    dosbase,a6
  640.     jsr    -90(a6)
  641.  
  642. loadend:
  643.     movem.l    (sp)+,d0-d7/a0-a6
  644.     move.l    fsize,d0
  645.     rts
  646.  
  647. lerr:
  648.     movem.l    (sp)+,d0-d7/a0-a6
  649.     bra.w    rerr2
  650.  
  651. ; d0 - ilosc etykiet
  652. ; d1 - ilosc pamieci na etykiety
  653.  
  654. liczetykiety:
  655.     move.l    sorsadres,a0
  656.     bra.s    liczczyetykieta
  657. liczloop:
  658.     move.b    (a0)+,d0
  659.     tst.b    d0
  660.     beq.s    liczend
  661.     cmp.b    #10,d0
  662.     beq.b    liczczyetykieta
  663.     bra.s    liczloop
  664. liczend:
  665.     clr.l    d0
  666.     move.w    labnum,d0
  667.     move.l    labsize,d1
  668.     rts
  669.  
  670. liczczyetykieta:
  671.     move.b    (a0),d0
  672.     cmp.b    #"    ",d0
  673.     beq.b    liczloop
  674.     cmp.b    #0,d0
  675.     beq.b    liczloop
  676.     cmp.b    #" ",d0
  677.     beq.b    liczloop
  678.     cmp.b    #";",d0
  679.     beq.b    liczloop
  680.     cmp.b    #10,d0
  681.     beq.b    liczloop
  682.     add.w    #1,labnum
  683.     move.w    #0,$dff180
  684. lipetla:
  685.     move.b    (a0)+,d0
  686.     add.l    #1,labsize
  687.     cmp.b    #":",d0
  688.     beq.s    powrot
  689.     cmp.b    #"    ",d0
  690.     beq.s    powrot
  691.     cmp.b    #0,d0
  692.     beq.s    powrot
  693.     cmp.b    #10,d0
  694.     beq.s    powrot
  695.     bra.s    lipetla
  696. powrot:
  697.     move.w    #$fff,$dff180
  698.     bra.w    liczloop
  699.  
  700. ;    PROBY Z ReqTools.library    !DARK! of Illusion
  701. ;
  702. ;Na dysku strtowym w katalogu LIBS: powinny znajdowac sie:ReqTools.library
  703. ; i DyskFont.library (dla OS2.0> nie musi, bo jest w ROM'ie)
  704.  
  705.     INCLUDE    "REQTOOLS"
  706.  
  707. exec    =    4
  708. oldoplib        =-408
  709. closelib        =-414
  710.  
  711. OPENREQ
  712.     MOVE.L    EXEC,A6
  713.     LEA    REQNAME,A1
  714.     JSR    OLDOPLIB(A6)
  715.     MOVE.L    D0,REQBASE
  716.     TST.L    D0
  717.     BEQ.W    exit
  718.     RTS
  719. CLOSEREQ:
  720.     MOVE.L    EXEC,A6
  721.     MOVE.L    REQBASE,A1
  722.     JSR    CLOSELIB(A6)
  723.  
  724. closedos:
  725.     move.l    4,a6
  726.     move.l    dosbase,a1
  727.     jsr    -414(a6)
  728.  
  729.     move.l    4,a6
  730.     move.l    gfxbase,a1
  731.     jsr    -414(a6)
  732.  
  733.     RTS
  734.  
  735. ; *** Wyswietlenie requestera ***
  736. ; a1 - Tekst w requesterze
  737. ; a2 - gadzety
  738.  
  739. ; d0 - numer wcisnietego gadzetu
  740.  
  741. requester:
  742.     move.l    a1,-(sp)
  743.     move.l    reqbase,a6
  744.     moveq.l    #0,d0
  745.     lea    zero,a0
  746.     jsr    -30(a6)
  747.     move.l    d0,reqfile
  748.     move.l    (sp)+,a1
  749.  
  750.     move.l    reqbase,a6
  751.     move.l    reqfile,a3
  752.     lea    taglist(pc),a0
  753.     jsr    -66(a6)
  754.     
  755.     move.l    d0,-(sp)
  756.     bsr.w    freereq
  757.     move.l    (sp)+,d0
  758.  
  759.     rts    
  760.  
  761.  
  762. ;==========================================================================;
  763. getstring:
  764.     MOVE.L    REQBASE,A6    ;!!! A6 !!! NIE UZYWAC
  765.     move.l    #250,d0
  766.     move.l    chars,a1
  767.     MOVE.L    tytul,A2
  768.     move.l    #0,a3
  769.     MOVE.L    #TAGLIST,A0
  770.     JSR    rtGetStringA(A6)
  771.     tst.l    d0
  772.     beq.w    cancel
  773.     rts
  774.  
  775. getlong:
  776.     MOVE.L    REQBASE,A6    ;!!! A6 !!! NIE UZYWAC
  777.     lea    long,a1
  778.     MOVE.L    tytul,A2
  779.     move.l    #0,a3
  780.     MOVE.L    #longTAGLIST,A0
  781.     JSR    rtGetLongA(A6)
  782.     tst.l    d0
  783.     beq.w    cancel
  784.     rts
  785.  
  786. REQUEST:
  787.     MOVE.L    REQBASE,A6    ;!!! A6 !!! NIE UZYWAC
  788.                     ;przydzielenie structury
  789.     MOVE.L    #rt_filereq,D0
  790.     MOVE.L    #ZERO,A0
  791.     JSR    rtAllocRequestA(A6)
  792.     TST.L    D0
  793.     BNE.B    r.nerr
  794.     JSR    ERROR
  795.     BRA.W    rtend
  796. r.nerr    MOVE.L    D0,REQfile
  797.     
  798. ;--------------------------------------------------------------;
  799.                     ;wywo£anie requestera
  800.     move.l    reqfile,A1
  801.     lea    addtag,a0
  802.     move.l    reqbase,a6
  803.     jsr    rtchangereqattra(a6)
  804.     move.l    reqfile,A1
  805.     MOVE.L    #Nazwa,A2
  806.     MOVE.L    Tytul,A3
  807.     MOVE.L    #TAGLIST,A0
  808.     JSR    rtFileRequestA(A6)
  809.         ;TUTAJ POWINNA ZNAJDOWAC SIE NASZA PROCEDURA KTORA
  810.         ;OPERUJE NA WYBRANYM ZBIORZE
  811.     tst.l    d0
  812.     beq.w    cancel
  813. ;--------------------------------------------------------------;
  814.     move.l    ReqFile,a0
  815.     move.l    rtfis_Dir(a0),a0    ;TERAZ W A0 ZNAJDUJE SIE ADRES
  816.                     ;NAZWY KATALOGU...
  817.     lea    string,a1
  818.     lea    directory,a3
  819.     move.b    (a0)+,d0
  820.     move.b    d0,(a3)+
  821.     tst.b    d0
  822.     beq.s    req_nx
  823.     move.b    d0,(a1)+
  824. req_lop:
  825.     move.b    (a0)+,d0
  826.     move.b    d0,(a1)+
  827.     move.b    d0,(a3)+
  828.     tst.b    d0
  829.     bne.s    req_lop
  830.     subq    #1,a1
  831.     cmp.b    #':',-1(a1)
  832.     beq.s    req_nx
  833.     move.b    #'/',(a1)+
  834. req_nx:    move.b    (a2)+,d0
  835.     move.b    d0,(a1)+
  836.     tst.b    d0
  837.     bne.s    req_nx
  838.     bsr.b    freereq
  839.     lea    string,a0
  840.     rts
  841.  
  842. freereq:
  843.     MOVE.L    REQfile,A1
  844.     move.l    reqbase,a6
  845.     JSR    rtFreeRequest(A6)
  846. rtend    RTS
  847. ;==========================================================================;
  848.  
  849. REQname    dc.b    'reqtools.library',0
  850.     even
  851.  
  852.         ;-----dla FILE REQUESTER-------;
  853. TagList    DC.L    RT_ReqPos,REQPOS_centerscr
  854.     DC.L    RTFI_Flags,FREQF_PATGAD
  855.     DC.L    RTFI_Height,1000
  856.     dc.l    rtgl_width,320
  857.     dc.l    RTgs_Width,320
  858.     DC.L    RTFI_Dir,4
  859.     dc.l    $80000000+100
  860.     dc.l    0,0
  861. longTagList
  862.     DC.L    RT_ReqPos,REQPOS_centerscr
  863.     dc.l    RTgs_Width,320
  864.     dc.l    $80000000+38,avail
  865.     dc.l    $80000000+39,availmem
  866.     dc.l    $80000000+100
  867.     dc.l    0,0
  868. addtag:
  869.     dc.l    rtfi_matchpat,pattern
  870.     dc.l    rtfi_dir,directory
  871.     dc.l    0,0
  872.  
  873. tytul:    dc.l    reqname
  874.  
  875. pattern:
  876.     dc.b    '#?.S',0
  877.  
  878. ssource:
  879.     dc.b    'Select source file',0
  880. sdest:
  881.     dc.b    'Save program as...',0
  882. estring:
  883.     dc.b    'Enter extension',0
  884. ework:
  885.     dc.b    'Enter workspace (in bytes)',0
  886.  
  887.     even
  888.  
  889. chars:
  890.     dc.l    extension
  891.  
  892. sorssize:
  893.     dc.l    0
  894. nowysize:
  895.     dc.l    0
  896.     dc.w    0
  897. labnum:
  898.     dc.w    0
  899. min:    dc.l    0
  900. sek:    dc.l    0
  901. ssek:    dc.l    0
  902. extnum:
  903.     dc.l    0
  904.     dc.l    extension
  905.  
  906. menu:
  907.     dc.b    'Labels Extender v.1.0',10,10
  908.     dc.b    'Original code by Shocker/Termos',10
  909.     dc.b    'Improved and speeded up by PP/Termos',0
  910. menugads:
  911.     dc.b    'START|Info|Quit',0
  912.  
  913. supergad:
  914.     dc.b    'Super !',0
  915.  
  916. infotext:
  917.     dc.b    'All done !',10,10
  918.     dc.b    'Source size: %ld',10
  919.     dc.b    'Destination size: %ld',10
  920.     dc.b    'Number of labels: %ld',10,10
  921.     dc.b    'Time: %ldm %ld.%lds',10
  922.     dc.b    '%ld words extended with %s'
  923.  
  924.     even
  925.  
  926. filename:
  927.     dc.l    0
  928.  
  929. Program:
  930.     move.l    4,a6
  931.     move.l    276(a6),a3
  932.     tst.l    172(a3)
  933.     bne.w    fromCLI
  934.     if object=1
  935. fromWB
  936.     lea    92(a3),a0        ; get wb msg
  937.     move.l    4.w,a6
  938.     jsr    -384(a6)
  939.     move.l    4.w,a6
  940.     lea    92(a3),a0
  941.     jsr    -372(a6)
  942.     move.l    d0,wbmsg
  943.  
  944.     move.l    wbmsg,a0
  945.     move.l    $24(a0),a0
  946.     beq.b    fromcli
  947.  
  948.     move.l    (a0),d1
  949.     move.l    dosbase,a6
  950.     jsr    -126(a6)
  951.     endif
  952. fromcli:
  953.     rts
  954.  
  955. quit:    move.l    wbmsg,d2
  956.     beq.s    nowb
  957.     move.l    4.w,a6
  958.     jsr    -132(a6)
  959.     move.l    d2,a1
  960.     move.l    4.w,a6
  961.     jsr    -378(a6)
  962. nowb:
  963.     clr.l    d0
  964.     rts
  965.  
  966. wbmsg:    dc.l    0
  967.  
  968. addinterrupt:
  969.     move.l    4,a6
  970.     moveq    #5,d0            ; add vertical blank interrupt
  971.     lea    myinterrupt,a1
  972.     jsr    -168(a6)
  973.     rts
  974.  
  975. removeinterrupt:
  976.     move.l    4,a6
  977.     moveq    #5,d0
  978.     lea    myinterrupt,a1
  979.     jsr    -174(a6)
  980.     rts
  981.  
  982. IntProg:
  983.     add.l    #2,ssek
  984.     cmp.l    #100,ssek
  985.     bne.s    out
  986.     clr.l    ssek
  987.     add.l    #1,sek
  988.     cmp.l    #60,sek
  989.     bne.s    out
  990.     clr.l    sek
  991.     add.l    #1,min
  992. out:    lea    $dff000,a6
  993.     clr.l    d0
  994.     rts
  995.  
  996.     rts
  997.  
  998. myinterrupt:
  999. ; * Node
  1000.  
  1001.     dc.l    0    ; Succ
  1002.     dc.l    0    ; Prev
  1003.     dc.b    5    ; Type
  1004.     dc.b    0    ; Pri
  1005.     dc.l    IName    ; Name
  1006.  
  1007.     dc.l    0    ; is_Data
  1008.     dc.l    IntProg    ; is_Code
  1009.  
  1010. IName:
  1011.     dc.b    '* very stupid interrupt *',0
  1012.  
  1013.     dc.b    '$VER: LabExt 1.0 (10.04.95)',0
  1014.  
  1015.     section free,bss
  1016.  
  1017. alloctable:
  1018.     ds.l    10
  1019.  
  1020. extension:
  1021.     ds.b    1024
  1022. long:    ds.b    1024
  1023.  
  1024. string:
  1025.     ds.b    250
  1026.  
  1027. kawaleczek:
  1028.     ds.b    1024
  1029.  
  1030. fileinfoblock:
  1031.     ds.b    262
  1032.  
  1033. directory:
  1034.     ds.b    250
  1035.  
  1036. Nazwa:        ;bufor na nazwe zbiory
  1037.     ds.b    256
  1038.  
  1039.     even
  1040.  
  1041. adrtabstart:
  1042.     ds.b    32768
  1043. adrtab:
  1044.     ds.b    32768
  1045.  
  1046. availmem:
  1047.     ds.l    1
  1048.  
  1049. stack:
  1050.     ds.l    1
  1051. adressize:
  1052.     ds.l    1
  1053.  
  1054. file:
  1055.     ds.l    1
  1056.  
  1057. dosbase:
  1058.     ds.l    1
  1059. gfxbase:
  1060.     ds.l    1
  1061.  
  1062. nowyend:
  1063.     ds.l    1
  1064. temporary:
  1065.     ds.w    1
  1066. destsize:
  1067.     ds.l    1
  1068.  
  1069. endadr:    ds.l    1
  1070.  
  1071. EROR    ds.l    1    
  1072. ZERO    ds.l    1
  1073.  
  1074. REQbase    ds.l    1
  1075. REQ    ds.l    1
  1076. REQfile    ds.l    1
  1077. REQfont    ds.l    1
  1078. labsize:
  1079.     ds.l    1
  1080. fsize:
  1081.     ds.l    1
  1082. fileinfoadr:
  1083.     ds.l    1
  1084. sorsadres:
  1085.     ds.l    1
  1086.  
  1087. nowy:
  1088.     ds.l    1
  1089. etykiety:
  1090.     ds.l    1
  1091. adresy:
  1092.     ds.l    1
  1093.  
  1094. sors:    ds.l    1
  1095. dest:
  1096.     ds.l    1
  1097. view:
  1098.     ds.l    1
  1099.