home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 15 / AACD15.ISO / AACD / Utilities / remember / RememberReader.s < prev    next >
Encoding:
Text File  |  1998-04-01  |  11.7 KB  |  574 lines

  1. ; Remember reader 1.0
  2. ; (c) 1998 Cyborg 
  3.  
  4.     IncDir     "Sys:Coder/"
  5.     Include     "Preass/Konstanten.inc"
  6.     Include     "Preass/ASL_lib.inc"
  7.     Include     "Preass/intuition.inc"
  8.     Include     "Include/Guienv.i"
  9.     Include     "Include/Libraries/gadtools.i"
  10.  
  11. Main:
  12.     Include "preass/Startup.i"
  13.     Jsr Openlibs
  14.     Tst.l D0
  15.     Beq Mainende
  16.     Jsr START
  17. Mainende:
  18.     jsr Closelibs
  19.     Move.l Error,d0
  20.     tst.l d0
  21.     beq .l1
  22.     jmp ErrorHandling
  23. .l1:    Rts
  24.  
  25.     Mode_NoCase= 100
  26.     Mode_Case=   0
  27.  
  28.  
  29. FileReq:
  30.      Move.l A0,LokalScreen
  31.      Move.l AslBase,a6
  32.      Move.l #ASL_FileRequest,d0
  33.      Move.l #0,a0
  34.      Jsr AllocAslRequest(a6)
  35.      Move.l D0,Requester
  36.      Tst.l Requester
  37.      Beq .Select2
  38.      move.l #ASLFR_Taglist,a0
  39.      move.l LokalScreen,4(a0)
  40.      Move.l Requester,a0
  41.      Move.l #ASLFR_Taglist,a1
  42.      Jsr ASLRequest(a6)
  43.      Move.l D0,Result
  44.         Tst.l Result
  45.         Beq .Select2
  46.         Clr.l D0
  47.         Move.l Requester,A0
  48.         Move.l 4(A0),D0
  49.         Move.l D0,Filename_Zeiger
  50.         Clr.l D0
  51.         Move.l Requester,A0
  52.         Move.l 8(A0),D0
  53.         Move.l D0,Dirname_zeiger
  54.         Move.l ExecBase,a6
  55.         Move.l Dirname_zeiger,a0
  56.         Move.l #Dirname,a1
  57.         Move.l #100,d0
  58.         Jsr Copymem(a6)
  59.         Move.l Filename_zeiger,a0
  60.         Move.l #Name,a1
  61.         Move.l #100,d0
  62.         Jsr Copymem(a6)
  63.         Lea Name_Bak,a0
  64.         move.l Dirname_zeiger,a1
  65. .Sel1:  move.b (a1)+,(a0)+
  66.         cmpi.b #0,(a1)
  67.         bne .sel1
  68.         cmpi.b #":",-1(a0)
  69.         beq .sel12
  70.         move.b #"/",(a0)+
  71. .sel12: move.l Filename_zeiger,a1
  72. .Sel2:  move.b (a1)+,(a0)+
  73.         cmpi.b #0,(a1)
  74.         bne .sel2
  75.         move.b #0,(a0)+
  76. .Select2:
  77.         Tst.l Requester
  78.         Beq .lab1
  79.         Move.l AslBase,a6
  80.         Move.l Requester,a0
  81.         Jsr FreeASLRequest(a6)
  82. .lab1:  RTS
  83.  
  84. FillBuffer:
  85.     subq.l #1,d1
  86. .l1:move.b d0,(a0)+
  87.     dbra  d1,.l1
  88.     RTS
  89.  
  90. ConvertZahl:
  91.     Move.l #"    ",Zusatz
  92.     Move.l #"   0",Zahl
  93. ConvertZahl1:
  94.     Movem.l a0-a5,-(sp)
  95.     Lea Zusatz,a0
  96.     Cmpi.l #0,d7
  97.     bpl .l0
  98.     Neg.l d7
  99.     move.b #"-",zahl
  100.     Cmpi.l #9999,d7
  101.     bgt .l0
  102.     move.b #"-",zusatz
  103. .l0:Move.l d7,d0
  104.     MoveQ.l #-1,d1
  105. .l1:AddQ.l #1,d1
  106.     Subi.l #10000000,d0
  107.     Bpl .l1
  108.     Addi.l #10000000,d0
  109.     addi.l #$30,d1
  110.     cmpi.b #"0",d1
  111.     Beq .l11
  112.     move.b d1,0(a0)
  113. .l11:MoveQ.l #-1,d1
  114. .l2:AddQ.l #1,d1
  115.     Subi.l #1000000,d0
  116.     Bpl .l2
  117.     Addi.l #1000000,d0
  118.     addi.l #$30,d1
  119.     cmpi.b #" ",0(a0)
  120.     bne .l22
  121.     cmpi.b #"0",d1
  122.     Beq .l21
  123. .l22:
  124.     move.b d1,1(a0)
  125. .l21:MoveQ.l #-1,d1
  126. .l3:AddQ.l #1,d1
  127.     Subi.l #100000,d0
  128.     Bpl .l3
  129.     Addi.l #100000,d0
  130.     addi.l #$30,d1
  131.     cmpi.b #" ",1(a0)
  132.     bne .l32
  133.     cmpi.b #"0",d1
  134.     Beq .l31
  135. .l32:
  136.     move.b d1,2(a0)
  137. .l31:MoveQ.l #-1,d1
  138. .l4:AddQ.l #1,d1
  139.     Subi.l #10000,d0
  140.     Bpl .l4
  141.     Addi.l #10000,d0
  142.     addi.l #$30,d1
  143.     cmpi.b #" ",2(a0)
  144.     bne .l42
  145.     cmpi.b #"0",d1
  146.     Beq .l41
  147. .l42:
  148.     move.b d1,3(a0)
  149. .l41:MoveQ.l #-1,d1
  150. .l5:AddQ.l #1,d1
  151.     Subi.l #1000,d0
  152.     Bpl .l5
  153.     Addi.l #1000,d0
  154.     addi.l #$30,d1
  155.     cmpi.b #" ",3(a0)
  156.     bne .l52
  157.     cmpi.b #"0",d1
  158.     Beq .l51
  159. .l52:
  160.     move.b d1,4(a0)
  161. .l51:MoveQ.l #-1,d1
  162. .l6:AddQ.l #1,d1
  163.     Subi.l #100,d0
  164.     Bpl .l6
  165.     Addi.l #100,d0
  166.     addi.l #$30,d1
  167.     cmpi.b #" ",4(a0)
  168.     bne .l62
  169.     cmpi.b #"0",d1
  170.     Beq .l61
  171. .l62:
  172.     move.b d1,5(a0)
  173. .l61:MoveQ.l #-1,d1
  174. .l7:AddQ.l #1,d1
  175.     Subi.l #10,d0
  176.     Bpl .l7
  177.     Addi.l #10,d0
  178.     addi.l #$30,d1
  179.     cmpi.b #" ",5(a0)
  180.     bne .l72
  181.     cmpi.b #"0",d1
  182.     Beq .l71
  183. .l72:
  184.     move.b d1,6(a0)
  185. .l71:
  186.     addi.l #$30,d0
  187.     move.b d0,7(a0)
  188.     Movem.l (sp)+,a0-a5
  189.     Tst.l D6
  190.     Beq .ende   
  191.     Move.l DOSBase,a6
  192.     Move.l D6,d1
  193.     Move.l #Zusatz,d2
  194.     Move.l #8,d3
  195.     Jsr Write(a6)
  196. .ende:RTS
  197.  
  198. CompareString:
  199.     movem.l d0-d7/a0-a6,-(sp)
  200.     movem.l d0-d1/a0-a1,-(sp)
  201.     Jsr CountString
  202.     Move.l D0,Stringlaenge
  203.     movem.l (sp)+,d0-d1/a0-a1
  204.     movem.l d0-d1/a0-a1,-(sp)
  205. Move.l a1,A0
  206. Jsr CountString
  207.     Cmp.l Stringlaenge,D0
  208.     Beq .l0
  209.     movem.l (sp)+,d0-d1/a0-a1
  210.     bra .fehler
  211. .l0:movem.l (sp)+,d0-d1/a0-a1
  212.     cmpi.l #Mode_Nocase,d1
  213.     beq .nocase
  214.     move.l Stringlaenge,d1
  215.     subq.l #1,d1
  216.     addi.l d0,a1
  217. .l1:move.b (a0)+,d0
  218.     cmp.b (a1)+,d0
  219.     bne .fehler
  220.     dbra d1,.l1
  221.     movem.l (a7)+,d0-d7/a0-a6
  222.     moveq.l #-1,d0
  223.     RTS
  224. .NoCase:
  225.     move.l Stringlaenge,d1
  226.     subq.l #1,d1
  227.     addi.l d0,a1
  228. .l2:move.b (a0)+,d0
  229.     move.b (a1)+,d2
  230.     bclr #5,d0
  231.     bclr #5,d2
  232.     cmp.b d2,d0
  233.     bne .fehler
  234.     dbra d1,.l2
  235.     movem.l (a7)+,d0-d7/a0-a6
  236.     moveq.l #-1,d0
  237.     RTS
  238. .Fehler:
  239.     movem.l (a7)+,d0-d7/a0-a6
  240.     moveq.l #0,d0
  241.     RTS
  242.  
  243. CountString:
  244.         move.l a1,-(Sp)
  245.         move.l a0,a1
  246. .l1:    cmpi.b #$00,(a1)+
  247.         bne .l1
  248.         lea -1(a1),a1
  249.         sub.l a0,a1
  250.         move.l a1,d0
  251.         move.l (sp)+,a1
  252.         RTS
  253.  
  254. CountEOL:
  255.         move.l a1,-(Sp)
  256.         move.l a0,a1
  257. .l1:    cmpi.b #$0a,(a1)
  258.         beq .l2
  259.         cmpi.b #$00,(a1)+
  260.         bne .l1
  261.         lea -1(a1),a1
  262. .l2:    sub.l a0,a1
  263.         move.l a1,d0
  264.         addq.l #1,d0
  265.         cmpi.b #$00,(a0)
  266.         beq .null
  267.         move.l (sp)+,a1
  268.         RTS
  269. .null:  clr.l d0
  270.         move.l (sp)+,a1
  271.         RTS
  272.  
  273. CD:
  274.         Move.l DOSBase,a6
  275.         Move.l a0,d1
  276.         Move.l #Access_read,d2
  277.         Jsr Lock(a6)
  278.         Tst.l d0
  279.         Beq .ende
  280.             Move.l d0,d1
  281.             Jsr Currentdir(a6)
  282.             Move.l d0,d1
  283.             Jsr Unlock(a6)
  284.             moveq.l #-1,d0
  285. .ende:  RTS
  286.  
  287. GetFilename:
  288.         cmpi.l #0,laenge
  289.         beq .l13
  290.         cmpi.l #1,laenge
  291.         beq .l13
  292.         Move.l Adresse,a0
  293. .l1:    cmpi.b #`"`,(a0)
  294.         beq .l10
  295.         cmpi.b #` `,(a0)+
  296.         beq .l1
  297.         lea -1(a0),a1
  298. .l2:    cmpi.b #`"`,(a0)
  299.         beq .l11
  300.         cmpi.b #$0a,(a0)
  301.         beq .l12
  302.         cmpi.b #$00,(a0)
  303.         beq .l12
  304.         cmpi.b #` `,(a0)+
  305.         bne .l2
  306.         Lea -1(a0),a2
  307. .l3:    suba.l a1,a2
  308.         Move.l ExecBase,a6
  309.         Move.l a1,a0
  310.         Move.l #Filename,a1
  311.         Move.l a2,d0
  312.         Jsr Copymem(a6)
  313.         Move.l a2,d0
  314.         rts
  315. .l10:   lea 1(a0),a1
  316.         bra .l2
  317. .l11:   lea 1(a0),a1
  318.         bra .l3
  319. .l12:   move.l a0,a2
  320.         bra .l3
  321. .l13:   moveq.l #0,d0
  322.         RTS
  323.  
  324.  
  325.  
  326. Start:
  327.     Move.l DOSBase,a6
  328.     Jsr Output(a6)
  329.     Move.l D0,OH
  330. Move.l #Envarc_Remembername000,d1
  331. Move.l #Mode_old,d2
  332. Jsr Open(a6)
  333. Move.l D0,TH
  334.     Cmp.l #0,D0
  335.     Beq .ende
  336. .l1:
  337.     Move.l TH,d1
  338.     Move.l #Buffer1,d2
  339.     Move.l #250,d3
  340.     Jsr Fgets(a6)
  341.     Move.l D0,Result
  342.     Move.l TH,d1
  343.     Move.l #Buffer3,d2
  344.     Move.l #250,d3
  345.     Jsr Fgets(a6)
  346.     Move.l D0,Result
  347.     Move.l Result,d0
  348.     Cmp.l #0,D0
  349.     Beq .close
  350. Move.l #Envarc_Remembername001,d1
  351. Move.l #Mode_old,d2
  352. Jsr Open(a6)
  353. Move.l D0,FH
  354.     Cmp.l #0,D0
  355.     Bne .pre0000
  356.     Bra .Pre0001
  357. .Pre0000:
  358.  
  359. .l3:
  360.                                         Move.l FH,d1
  361.                                         Move.l #Buffer2,d2
  362.                                         Move.l #250,d3
  363.                                         Jsr Fgets(a6)
  364.                                         Move.l D0,Result
  365.                                         Move.l Result,d0
  366.                                         Cmp.l #0,D0
  367.                                         Beq .l2
  368. Move.l #Buffer1,a0
  369. Move.l #Buffer2,a1
  370. Move.l #0,d0
  371. Move.l #MODE_nocase,d1
  372. Jsr Comparestring
  373.                                         Cmp.l #0,D0
  374.                                         Beq .l3
  375.                                         Move.l DOSBase,a6
  376.                                         Move.l #Buffer3,d1
  377.                                         Move.l #0,d2
  378.                                         Move.l #0,d3
  379.                                         Jsr Execute(a6)
  380. .l2:                                                     
  381.                                         Move.l FH,d1
  382.                                         Jsr Close(a6)
  383.                                                          bra .l1
  384.                                                        
  385. .Pre0001:
  386.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
  387. .close:
  388.     Move.l TH,d1
  389.     Jsr Close(a6)
  390. .ende:
  391.     RTS
  392. Errorhandling:
  393.     Move.l DOSBase,a6
  394.     Jsr output(a6)
  395.     Move.l D0,Ausgabe
  396.     Move.l Error,d0
  397.     Cmp.l #1,D0
  398.     Beq .Pre0000
  399.     Bra .Pre0001
  400. .Pre0000:
  401. Move.l DOSBase,a6
  402. Move.l Ausgabe,d1
  403. Move.l #Allgemeiner_Fehlerxnname000,d2
  404. Moveq.l #$13,d3
  405. Jsr Write(a6)
  406. .Pre0001:
  407.     Move.l Error,d0
  408.     Cmp.l #2,D0
  409.     Beq .Pre0002
  410.     Bra .Pre0003
  411. .Pre0002:
  412. Move.l DOSBase,a6
  413. Move.l Ausgabe,d1
  414. Move.l #Konnte_File_nicht_findenxnname001,d2
  415. Moveq.l #$19,d3
  416. Jsr Write(a6)
  417. .Pre0003:
  418.     Move.l Error,d0
  419.     Cmp.l #3,D0
  420.     Beq .Pre0004
  421.     Bra .Pre0005
  422. .Pre0004:
  423. Move.l DOSBase,a6
  424. Move.l Ausgabe,d1
  425. Move.l #Window_Screen_Fehlerxnname002,d2
  426. Moveq.l #$15,d3
  427. Jsr Write(a6)
  428. .Pre0005:
  429.     Move.l Error,d0
  430.     Cmp.l #4,D0
  431.     Beq .Pre0006
  432.     Bra .Pre0007
  433. .Pre0006:
  434. Move.l DOSBase,a6
  435. Move.l Ausgabe,d1
  436. Move.l #Library_nicht_gefundenxnname003,d2
  437. Moveq.l #$17,d3
  438. Jsr Write(a6)
  439. .Pre0007:
  440.     Move.l Error,d0
  441.     Cmp.l #5,D0
  442.     Beq .Pre0008
  443.     Bra .Pre0009
  444. .Pre0008:
  445. Move.l DOSBase,a6
  446. Move.l Ausgabe,d1
  447. Move.l #Fehlerhafte_Eingabexnname004,d2
  448. Moveq.l #$14,d3
  449. Jsr Write(a6)
  450. .Pre0009:
  451.     Move.l Error,d0
  452.     Cmp.l #6,D0
  453.     Beq .Pre0010
  454.     Bra .Pre0011
  455. .Pre0010:
  456. Move.l DOSBase,a6
  457. Move.l Ausgabe,d1
  458. Move.l #Speicherfehlerxnname005,d2
  459. Moveq.l #$0F,d3
  460. Jsr Write(a6)
  461. .Pre0011:
  462.     RTS
  463. even
  464. Ausgabe:        dc.l 0
  465. Allgemeiner_Fehlerxnname000:
  466.     dc.b `Allgemeiner Fehler`,$a,``,0
  467. even
  468. Konnte_File_nicht_findenxnname001:
  469.     dc.b `Konnte File nicht finden`,$a,``,0
  470. even
  471. Window_Screen_Fehlerxnname002:
  472.     dc.b `Window|Screen Fehler`,$a,``,0
  473. even
  474. Library_nicht_gefundenxnname003:
  475.     dc.b `Library nicht gefunden`,$a,``,0
  476. even
  477. Fehlerhafte_Eingabexnname004:
  478.     dc.b `Fehlerhafte Eingabe`,$a,``,0
  479. even
  480. Speicherfehlerxnname005:    dc.b `Speicherfehler`,$a,``,0
  481. even
  482.  
  483. Even
  484. Openlibs:
  485.     Move.l $4.w,a6
  486.     Move.l #Aslname,a1
  487.     Moveq.l #0,d0
  488.     Jsr Openlibrary(a6)
  489.     Move.l d0,Aslbase
  490.     Tst.l D0
  491.     Beq.w .ende
  492.     Move.l #DOSname,a1
  493.     Moveq.l #0,d0
  494.     Jsr Openlibrary(a6)
  495.     Move.l d0,DOSbase
  496.     Tst.l D0
  497.     Beq.w .ende
  498.     RTS
  499. .ende:    Move.l #4,Error
  500.     Rts
  501. Closelibs:
  502.     Move.l $4.w,a6
  503.     Tst.l Aslbase
  504.     Beq.w .ende00
  505.     Move.l Aslbase,a1
  506.     Jsr Closelibrary(a6)
  507. .ende00:Tst.l DOSbase
  508.     Beq.w .ende01
  509.     Move.l DOSbase,a1
  510.     Jsr Closelibrary(a6)
  511. .ende01:Rts
  512. even
  513. WBmessage:        dc.l 0
  514. Laenge:        dc.l 0
  515. Adresse:        dc.l 0
  516. Error:        dc.l 0
  517. LokalScreen:        dc.l 0
  518. Requester:        dc.l 0
  519. Result:        dc.l 0
  520. Filename_Zeiger:        dc.l 0
  521. Dirname_zeiger:        dc.l 0
  522. Zusatz:        dc.l 0
  523. Zahl:        dc.l 0
  524. Zahlyyy:        dc.l 0
  525. Stringlaenge:        dc.l 0
  526. OH:        dc.l 0
  527. TH:        dc.l 0
  528. FH:        dc.l 0
  529. AslBase:        dc.l 0
  530. DOSBase:        dc.l 0
  531. NONE:        dc.l 0
  532. even
  533. DirName:    blk.b 256,0
  534. even
  535. Name:    blk.b 256,0
  536. even
  537. Name_bak:    blk.b 256,0
  538. even
  539. ASLFR_Taglist:
  540.     dc.l ASLFR_screen,0
  541.     dc.l ASLFR_PrivateIDCMP,Dostrue
  542.     dc.l ASLFR_TextAttr,Dosfalse
  543.     dc.l ASLFR_InitialLeftEdge,20
  544.     dc.l ASLFR_InitialTopEdge,24
  545.     dc.l ASLFR_InitialWidth,300
  546.     dc.l ASLFR_Initialheight,210
  547.     dc.l ASLFR_InitialDrawer,Dirname
  548.     dc.l ASLFR_InitialFile,Name
  549.     dc.l Tag_end,0
  550. Filename:    blk.b 256,0
  551. even
  552. Version:    dc.b "$VER: Remember Reader 1.0 30.3.98 (C) CYBORG 98",0
  553. even
  554. Buffer1:    blk.b 250,0
  555. even
  556. Buffer3:    blk.b 250,0
  557. even
  558. Buffer2:    blk.b 250,0
  559. even
  560. Envarc_Remembername000:
  561.     dc.b `Envarc:Remember.tasks`,0
  562. even
  563. Envarc_Remembername001:
  564.     dc.b `Envarc:Remember.dump`,0
  565. even
  566. Aslname: dc.b "asl.library",0
  567. DOSname: dc.b "dos.library",0
  568. even
  569.     Include "Preass:LVO3.0/Exec_lib.i"
  570.     Include "Preass:LVO3.0/Asl_lib.i"
  571.     Include "Preass:LVO3.0/DOS_lib.i"
  572.  
  573.